《響應式Web設計:HTML5和CSS3實戰(第2版)》05章 - 學習筆記

響應式Web設計:HTML5和CSS3實戰(第2版)

第五章 CSS3 新特性

5.1 CSS能實現什么要心里有數

5.2 CSS 規則

5.3 CSS 技巧

  • CSS 響應式多列布局
    • 例子:column-width: 12em;
    • 固定列數,可變寬度:
    .main{
        column-count: 3;
    }
 + 添加列間距和分隔線
    .mian{
      column-gap: 2em;
      column-rule: thin dotted #999;
      column-width: 12em;
    }
  • 如果每一列的文字長度太長,可能影響用戶體驗

5.4 斷字

  • 如果要將一行很長的文字放入一個比較窄的容器內
    • 在容器上加一個word-wrap: break-word;
    • 此時文字會在需要的地方拆開一個獨立的單詞,完成換行
  • 截短文本
  .main{
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
  }
  • 創建水平滾動面板
    • white-space: nowrap
      • 意思是在有空白的時候不折行
    • display: inline-block / inline-flex / inline-table
      • 將所有元素保持在一行
    • :after 和 :before
      • 為了能保證其能顯示,必須包含一個content,就算為' '空白也行
  • 隱藏滾動條
  .scroll-wrapper {
    width: 100%;
    white-space: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    // 在webkit設備上出現
    -webkit-overflow-scrolling: touch; 
    // 在支持的IE中刪除滾動條
    -ms-overflow-style: none;
  }

  // 防止webkit瀏覽器出現滾動條
  .scroll-wrapper::-webkit-scrollbar{
    display: none;
  }
  • 此時空間有限時,就會出現水平滾動面板,否則會自適應

5.5 在CSS中創建分支

  1. 完全基于CSS
  2. 借助js庫,獲得廣泛兼容性
5.5.1 特性查詢
  • 涵蓋不支持@support的設備,需要先寫好默認的聲明
  .item{
    display: inline-block;
  }
  @supports (display: flex;) {
    .item{
      display: inline-flex;
    }
  }
5.5.2 組合條件
  • and 關鍵字 && or 關鍵字
  @supports ((display: flex;) and (pointer: coarse)) or (transform: translate3d(0, 0, 0)) {
    .item{
      display: inline-flex;
    }
  }
5.5.3 Modernizr
  • 實現分支的最可靠方式
    • 在head中引入Modernizr.js
    • 檢測特性后,會在html上加一些類

5.6 新CSS3選擇符

5.6.1 屬性選擇符
  • CSS2不支持
  /*選擇包含alt屬性的img元素*/
  img[alt]{
    // ...
  }

  /*選擇包含‘data-sausage’的任何元素*/
  [data-sausage]{
    // ...
  }

  /*具體值屬性*/
  img[alt="sausage"]{
    // ...
  }
5.6.2 CSS3子字符串匹配屬性選擇符
  • 以。。。開頭
    • ^=
    • <img alt="film-china" src="...">
    • img[alt^="film"]{}
  • 包含。。。
    • *=
    • <p data-xxx="aa bb cc">...</p>
    • p[data-xxx*="bb"]{}
  • 以。。。結尾
    • $=
    • <p data-xxx="aa bb cc">...</p>
    • p[data-xxx$="cc"]{}
5.6.3 屬性選擇符發注意事項
  • 對屬性選擇符來說,屬性是一個字符串
  • 某兩個子字符串存在為依據選擇元素
      [data-xxx*="aa"][data-xx*="bb"]{
        ...
      } 
5.6.4 屬性選擇符選擇以數值為開頭的ID & class
  • H5之前,以數字開頭的ID & class是無效的
  • H5之后允許了,但是ID中不能有空格
  • 但css不允許使用以數值開頭的選擇符
  • 用屬性選擇符可以繞開限制
    • [id="10"]{}

5.7 CSS3 結構化偽類

5.7.1 last-child
  • CSS2.1中有匹配第一子項的偽類:div:first-child {}
  • CSS3新添了匹配最后一個子項的偽類:div:last-child {}
  • 還有專門針對只有一項的選擇符 :only-child
    • p:only-child{...}
    • 將樣式應用于只有一個p元素的父元素
    • Internet Explorer 不支持
5.7.2 nth-child
  • 選擇奇數個
    • :nth-child(odd) {}
  • 選擇偶數個
    • :nth-child(even) {}
5.7.3 理解nth
  • CSS3 提供了一下幾個基于nth的規則:
    • nth-child(n)
    • nth-last-child(n)
    • nth-of-type(n)
    • nth-last-of-type(n)
  • 以上n有兩種形式
    • 傳入整數
      • nth-child(2) 會選擇第二項
    • 傳入表達式
      • nth-child(2n+3) 會從第3項開始,然后每2個選1個
      • nth-child(3n-2) 會從倒數第2項開始,然后每3個選1個
      • nth-child(-2n-3) 先找到第三個的位置,向反方向每2個選1個
  • n默認是1
  • 區分標記類型的選擇符
    • nth-of-type(n)
    • nth-last-of-type(n)
  • .nav:nth-of-type(-2n+3) {...}
    • 先找到類名為nav的元素集合的第三個位置,看tag為哪種,然后選擇目標就都是這種tag,反方向每2個選1個
  • CSS中的索引不是從0開始,而是從1開始
5.7.4 nth與響應式開發的關聯
  • 基于nth的偽類選擇符可以鏈式使用
    • .nav:nth-child(4n+1):nth-last-child(-n+4) {} 每4個選1個, 但僅限于最后4項
5.7.5 :not
  • :not 為取反的選擇符,即“非。。。”
    • div:not(.list) {} 給所有不是list類的div添加樣式
5.7.6 :empty
  • 如果有一個元素只添加了內邊距,但會在將來某個時刻動態插入或隱藏
  • 可以用:empty來控制這個元素如果內容為空時,改變一些樣式
    • div .thing:empty { display: none;}
  • 注意事項
    • 空格不算空
    • 注釋會算空
5.7.8 :first-line
  • 這個偽類選擇的第一行內容會根據視口大小不同而不同
    • p::first-line{color: red;}

5.8 CSS自定義屬性和變量

  • :root偽類可以把自定義的屬性保存在文檔根元素上,調用的時候用var
    • 首先:
      • :root{ --FontSize: 16px; }
    • 然后調用
      • .main{ font-size: var(FontSize);}

5.9 計算屬性 calc

  • .thing{ width: calc(50% - 10px); }
  • 加減乘除都沒問題
  • 除了安卓4.3及以下版本中的chrome,其他瀏覽器都支持

5.10 Web 排版

5.10.1 @font-face
  • 一種字體為了兼容多個瀏覽器,會有多個格式的版本
  • @font-face是為了應用在線字體顯示文本
5.10.2 運用
  • 瀏覽器依次嘗試屬性列表中的樣式,忽略不能識別的內容
    • 屬性值越靠下,優先級越高
5.10.3 缺點
  • 使用@font-face后 ,文件大小是個問題
  • 字體大小會影響網站性能

5.12 CSS3 中的透明度新特性 (略)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375

推薦閱讀更多精彩內容