《CSS 世界》讀書筆記

《CSS 世界》 PDF版 鏈接 , 使用紙質(zhì)書效果更好


第4章 深入理解 content

4.1 content - 替換元素

  1. 替換元素是指內(nèi)容可以被替換银觅。如:<img>,<object>,<video>,<iframe>,表單元素界斜。所有替換元素都是內(nèi)聯(lián)水平元素涯雅。
  2. 替換元素特點
  • 外觀不受css控制包吝,如無法改變單選復(fù)選的樣式
  • 有默認(rèn)的尺寸,大多為300px*150px刁品,img為0傀蚌,表單元素根據(jù)瀏覽器本身
  • css屬性有自身的一套規(guī)則,替換元素的基線為元素下邊緣脱衙,非替換元素是字符x的下邊緣
  • 沒有::after和::before
  1. <input type="button"><button>區(qū)別在于前者的white-spacepre后者是normal侥猬,內(nèi)容足夠多時<button>自動換行例驹。
  2. 無法改變替換元素內(nèi)容的固有尺寸。
<div class="div"></div> 
<!--這個 div 的圖片大小不會變-->
<style>
div:before {    
  content: url(1.jpg);    
  display: block;    
  width: 200px; 
  height: 200px;}
</style>
  1. 替換元素img沒有src時退唠,火狐瀏覽器下就是一個內(nèi)聯(lián)標(biāo)簽鹃锈,而谷歌瀏覽器要有一個不為空的alt值,IE則有一個默認(rèn)的占位符瞧预。
  2. 谷歌瀏覽器下所有元素都支持content屎债,但其他瀏覽器只有::after和::before支持。
  3. content屬性生成的對象叫匿名替換元素垢油,有如下特點
  • content生成的文本不能復(fù)制和選中
  • 能左右:empty元素盆驹,即使用content生成了文字,但依然當(dāng)做空
  • content動態(tài)生成值無法獲取
  1. css counter
  • counter-reset
  • counter-increment
  • counter()/counters()
<style>
.reset { padding-left: 20px; counter-reset: wangxiaoer; line-height: 1.6; color: #666; }
.counter:before { 
    content: counters(wangxiaoer, '-') '. '; 
    counter-increment: wangxiaoer; 
 }
</style>
<div class="reset">
    <div class="counter">我是王小二
        <div class="reset">
            <div class="counter">我是王小二的大兒子</div>
            <div class="counter">我是王小二的二兒子
                <div class="reset">
                    <div class="counter">我是王小二的二兒子的大孫子</div>
                    <div class="counter">我是王小二的二兒子的二孫子</div>
                    <div class="counter">我是王小二的二兒子的小孫子</div>
                </div>
            </div>
            <div class="counter">我是王小二的三兒子</div>
        </div>
    </div>
    <div class="counter">我是王小三</div>
    <div class="counter">我是王小四
        <div class="reset">
            <div class="counter">我是王小四的大兒子</div>
        </div>
    </div>
</div>

4.2 溫和的 padding

內(nèi)聯(lián)元素的 clientHeightclientWidth永遠(yuǎn)是0,垂直方向的行為表現(xiàn)完全受line-heightvertical-align的影響, 而設(shè)置 padding可以對background 產(chǎn)生影響
技巧:

  1. 增加鏈接或按鈕的可點擊大小同時不影響當(dāng)前的內(nèi)容布局
    artical a { paddingL .25em 0;}

2.登錄 | 注冊垂直分格符號 在這里 css 模擬出的管道符號的vertical-align是從 baseline 起步的,然后向下走1px,向上走10px

a + a:before {
  content: "";
  font-size: 0;
  padding: 10px 3px 1px;
  margin-left: 6px;
  border-left: 1px solid gray;
}

自身變化卻不影響周圍元素定位的方法有relative box-shadow outline inline 元素的 padding,其中inline 元素的 padding會影響外部尺寸(增加可點擊面積), 而box-shadowoutline不會

4.2.2 padding的百分比值

  • padding 的百分比值是相對于父元素寬度計算的
  • 內(nèi)聯(lián)元素的 padding 會斷行 , 參見 P78
  • padding:50%沒顯示為正方形的原因是內(nèi)聯(lián)元素的垂直 padding會讓幽靈空白節(jié)點顯現(xiàn), 那么設(shè)置font-size:0即可顯示為正方形

4.2.3 標(biāo)簽元素內(nèi)置的 padding

  1. ol/ul列表內(nèi)置padding-left且單位是px, Chrome 下是40px
  2. 很多表單元素內(nèi)置padding:
    • 所有瀏覽器<input> <textarea> <button>內(nèi)置padding
    • 部分瀏覽器<select>內(nèi)置padding
    • 所有瀏覽器<radio> <checkbox>無內(nèi)置padding
    • <button>按鈕的padding最難控制! 表現(xiàn)為 Firefox 設(shè)置 padding 為0但左右仍然有;IE7下button 里文字變多時左右 padding 逐漸增大(可通過設(shè)置overflow:visible消除).
    • 可使用<label>來解決上述<button> padding兼容性問題, 參見P80

4.2.4 padding 與圖形繪制

帶動畫的三道杠:

原書中使用padding繪制的確可行,不過要追求動畫的話還是選擇創(chuàng)建三個標(biāo)簽比較好

    .line{
      width: 150px;
      height: 3px;
      background-color: #00CCFF;
      position: absolute;
      top:50%;
      left:50%;
      margin-left: -75px;
      transition : all 0.3s ease-in-out;
     }
    .line-middle{ margin-top: 0px;}
    .line-top{ margin-top:-40px; }
    .line-bottom{ margin-top:40px; }
    .wrap:hover .line-top{transform: translateX(0) translateY(40px) rotate(-45deg);}
    .wrap:hover .line-bottom{transform: translateX(0) translateY(-40px) rotate(45deg);}
    .wrap:hover .line-middle{opacity:0}

雙層圓點效果 比較簡單所以不貼代碼了,只是說可以用 padding 實現(xiàn)

4.3 激進(jìn)的 margin

  • 可以用margin-left:auto來替代float:left實現(xiàn)右對齊效果
  • 塊級元素垂直居中的一種方法
.father{width:300px;height:150px;position:relative;}
.son{
  position:absolute:
  top:0;right:0;left:0;bottom:0;
  width:200px;height:100px;
  margin:auto;
}

此時 .son自動填充父級元素可用尺寸為300x150,但是它寬高被限制, 那么多余的空間就是margin:auto計算的空間, 也就是說,
為什么原始情況下margin: auto 0不會讓元素垂直居中?
答: 因為widthheight的對應(yīng)方向填充特性不同, width:auto會填充至100%,但height:auto會使得元素高度變?yōu)?. 而margin:auto的計算規(guī)則是對應(yīng)方向可用填充空間-元素實際大小,剩余部分進(jìn)行 auto劃分

4.3.5 margin 無效情形

詳細(xì)情況建議看書

  1. inline的非替換元素(例如span)的垂直margin無效, 但inline 替換元素(如img)的垂直 margin 有效,而且沒有margin 合并問題
  2. display: table-cell | table-rowmarigin 無效
  3. margin 合并的時候, 若父元素設(shè)置margin-top:50px則子元素嘗試設(shè)置的margin-top:30px無效
  4. 絕對定位元素非定位方位的margin 無效. 例如img{ top:10%; left:30%},此時rightbottom處于auto狀態(tài),也就是右側(cè)和底部沒有定位, 此時在這兩個方位上設(shè)置margin就看不到定位變化.可以結(jié)合前面的top:0 ; bottom:0; left:0; right:0margin計算規(guī)則來理解
  5. 定高容器的子元素的margin-bottom無效 , 定寬容器的子元素的margin-right無效
  6. 書中6.4節(jié)和5.3節(jié)(圖片的位置被vertical-align:baseline限制死了導(dǎo)致margin-top不起作用)相關(guān)的內(nèi)容

4.4 功勛卓越的 border

  • 實現(xiàn)一個沒有下邊框的邊框效果時, 結(jié)合設(shè)置寬度為0style 為 none會使得渲染性能最高div{border:1px solid; border-bottom:0 none;}
  • border-color的默認(rèn)值會使用當(dāng)前元素的color值, 據(jù)此可以簡化hover時的 css 代碼
  • 可以用border繪制梯形和三角形

第5章 內(nèi)聯(lián)元素與流

5.2 內(nèi)聯(lián)元素的基石 line-height

  • 行距 = line-height - font-size
  • 半行距 = (line-height - font-size) / 2

例如設(shè)計師標(biāo)注了文字字形上邊緣到圖片下邊緣間距20px, 同時font-size: 14px; line-height:1.5 , 那么文字的實際margin-top值應(yīng)該是17px, 因為(14*1.5 - 14)/2再向下取整是3px. 一般文字上間距向下取整, 文字下邊距向上取整

  • line-height可以影響替換元素(如圖片高度)嗎? 答案是 不可以. 圖文混排時line-height只能決定最小高度, 剩下的替換元素帶來的高度增加還會受到vertical-align的影響
  • 對于塊級元素line-height對其本身是沒有任何作用的, 如果改變line-height的時候塊級元素的高度跟著變化 , 實際上是通過改變塊級元素里面的內(nèi)聯(lián)元素占據(jù)的高度實現(xiàn)的
  • 設(shè)置display:inline-block的時候會重置從父元素繼承來的line-height, 同時該'行框盒子'會附帶一個幽靈空白節(jié)點來使父元素的line-height生效, 該效果在實現(xiàn)多行文本居中的時候有體現(xiàn)
  • line-height的值為150% | 1.5em | 18px時先在父元素計算后再繼承 , 為1.5時先繼承再在子元素里計算
  • CSS 中計算行高的時候, 行高值不要向下舍入,而要向上舍入,例如下面的代碼,在 Chrome 中1.42857*14px就會以19px 呈現(xiàn), Firefox 是20px 倒沒錯, 為了讓Chrome它們都呈現(xiàn)20px設(shè)置1.42858更好一點
body{
  line-height:1.42858;   /* 20px/14px ~ 1.4285714 */
  font-size: 14px;
}
  • 幾個靠在一起的inline元素會共同組成一個"行框盒子",該行框盒子表現(xiàn)出來的line-height會取它們(包括幽靈空白節(jié)點)的最大值

5.3 line-height 的好朋友 vertical-align

  • vertical-align:baseline相當(dāng)于vertical-align:0
  • vertical-align只能對內(nèi)聯(lián)元素以及table-cell元素起作用. 有些屬性會在背后默默改變display的計算值從而導(dǎo)致vertical-align不起作用(例如浮動絕對定位會讓元素塊狀化)
  • 一個 inline-block 元素滩愁,如果里面沒有內(nèi)聯(lián)元素躯喇,或者 overflow 不是 visible, 則該元素的基線就是其 margin 底邊緣;否則其基線就是元素里面最后一行內(nèi)聯(lián)元素的基線硝枉。
  • 掘金

為什么 span{ font-size:20px ; line-height:20px}auto計算的高度是28px或其它不等于20的數(shù)值?

  • 測試發(fā)現(xiàn), PingFang SC 的文字形成的content-area的高度大小 = font-size*1.4例如50px 對應(yīng)70px , 而 Arial 就是font-size:100px對應(yīng)113px , 另外 Firefox 瀏覽器可能會比 Chrome多1px
  • W3C 說 行內(nèi)盒內(nèi)容區(qū)域高度在規(guī)范里面沒有定義廉丽,瀏覽器可以自己折騰
  • 結(jié)論是: 行內(nèi)盒的內(nèi)容區(qū)域高度計算沒有統(tǒng)一的標(biāo)準(zhǔn),不同的字體或者不同的瀏覽器都可能導(dǎo)致不同的結(jié)果妻味,且其高度與 line-height 無關(guān)正压。由此我們無法確切地獲得一個跨瀏覽器的行內(nèi)盒的內(nèi)容區(qū)域高度。同樣我們也無法確切獲得一個跨瀏覽器的行內(nèi)盒高度(因為其計算式里面就包括了不定變量內(nèi)容區(qū)域高度)
  • 但是, 我們應(yīng)該準(zhǔn)確計算行盒高度(最好把幽靈空白節(jié)點設(shè)為line-height:0)

為什么 span 的父元素高度受到父元素的 font-size 和自身的 font-size 影響?

答:因為對字符而言, font-size越大字符的基線位置就越往下, 因為文字默認(rèn)全部都是基線對齊, 所以當(dāng)字號大小不一樣的兩個文字在一起的時候, 彼此就會發(fā)生上下位移

不同字號文字高度超出行高示意圖

清除幽靈空白節(jié)點給圖片帶來的圖片間隙方法 間隙示意

  1. 圖片塊狀化
  2. 設(shè)置line-height:0或者通過font-size:0; line-height:默認(rèn)浮點數(shù)的途徑來間接得到line-height:0
  3. 圖片設(shè)置其它vertical-align屬性, 例如top | middle | bottom

不定長定寬彈框 垂直居中

.container{
  position:fixed;
  top:0;left:0;right:0;bottom:0;
  overflow:auto;
}
/* inline-block配合偽類的解決方案*/
.container{
  font-size: 0;
  text-align:center;
}
.container:before{
  content:'';
  display:inline-block;
  width: 0;
  height:100%;
  vertical-align:middle;
}
.dialog{
  display:inline-block;
  vertical-align:middle;
  font-size: 14px;
}
/* flex 的解決方法 如果有2個 dialog,他們會先左右平分空間,再居中顯示*/
.container{
  display:flex;
}
.dialog{
  margin : auto;
}
/* flex 還能這樣寫  如果有兩塊 dialog,它們會按照 flex 的指定對齊方式兩個人一起顯示在中間*/
.container{
  display:flex; justify-content:center; align-items:center;
}
.dialog{}
/* 父元素設(shè)置 table-cell 子元素設(shè)置 inlne-block 也可以, 但是這樣父元素就不兼容 fixed 全屏顯示了, 定寬高的話倒是還不錯*/

第6章 流的破壞與保護

6.1 魔鬼 float

  • float會讓幾乎所有元素的display變成block(除了inline-table會變成table以外) , 因此如果再多寫一句display:block就浪費空間了.
  • float的本意是構(gòu)建"文字環(huán)繞效果" , 不推薦依賴它來布局, 但是有必要了解它來解釋一些樣式 bug
  • "文字環(huán)繞效果"是"父級高度塌陷"和"行框盒子區(qū)域限制"共同作用的結(jié)果
  • 如果行框盒子和浮動元素的垂直高度有重疊, 則行框盒子在正常定位狀態(tài)下只會跟隨浮動元素, 而不會發(fā)生重疊 . 例如文字會自動避開左側(cè)的float:left的圖片,此時無論給文字的行框盒子設(shè)置margin-left為負(fù)多少甚至是負(fù)無窮也不會生效(但是設(shè)置大于圖片寬度的正值是有效的).
  • 在 CSS 世界中, float 元素的"浮動參考"是"行框盒子" , 具體表現(xiàn)為: 三行文字的右側(cè)有個float:right的元素的話, 它會緊跟在第3行的行框盒子右側(cè). 若float 元素周圍都是塊級元素, 那么可視為它正在依賴一個叫做浮動錨點(float anchor)的點,這個點就表現(xiàn)而言像一個沒有 magin border padding 的空內(nèi)聯(lián)元素

6.2 float 的天然克星 clear

  • 官方文檔定義: "clear 元素的邊不和前面的浮動元素相鄰"

經(jīng)典例子: 10個設(shè)置了float:leftli, 再設(shè)置li:nth-of-type(3){ clear:both}, 結(jié)果表現(xiàn)為2行:
■ ■
■ ■ ■ ■ ■ ■ ■ ■
clear 屬性讓自身不和前面的浮動元素相鄰, 但對后面的浮動元素不聞不問

  • clear屬性只對塊級元素有效

6.3 BFC

  • 實用設(shè)置方法:
    • overflow:auto/hidden
    • display:inline-block for IE6/IE7
    • display:table-cell
  • 能發(fā)揮作用的場景:
    • 消除父子元素margin 合并 : 在父元素上設(shè)置 BFC
    • 消除兄弟元素margin 合并 在其中一個節(jié)點外包裹一層 BFC
    • 清除浮動

6.4 overflow

  • overflow-xoverflow-yvisible值和其他值不共存
  • 雖然文字打點的效果核心是text-overflow:ellipsis但是該表現(xiàn)依賴于overflow:hidden; white-space : nowrap;
  • tabindex值相同時, 越靠前越在外的元素越先被訪問 , tabindex="-1"的元素不會被tab 到 詳解

6.5 position:absolute

  • absolutefloat一樣具有包裹性
    • 讓寬度表現(xiàn)從"包裹性"切換為"最大可用寬度"
      正常情況下责球,文檔流中的文字內(nèi)容不可超過包含塊焦履,元素的大小也不可超過包含塊。但存在一種特殊情況棕诵,即是連續(xù)的英文字符和數(shù)字是可以突破這個限制的。除此之外我們也可以手動設(shè)置white-space:nowrap讓寬度表現(xiàn)從包裹性變成最大可用寬度 可以參考 P182 關(guān)于包含塊的部分
  • absolute也有"塊狀化"特性, 所以經(jīng)常一起出現(xiàn)的一句display:block可以說是多余的
  • 提問:absolute 和 relative 相對的是 content-box / padding-box / border-box / margin-box?
    答: 被定位元素拿自己的margin-box去撞參考元素的padding-box . 參考 P183 & demo
  • "無依賴絕對定位" : 即absolute的元素未設(shè)置top/left/right/bottom時所處的狀態(tài), 也不需要設(shè)置position:relative的父元素, 特別適合用來加New Hot 圖標(biāo)等腳標(biāo),無依賴絕對定位元素會自動跟在文字的前面或后面,再用 margin-topmargin-left 微調(diào)位置即可. 腳標(biāo) demo 下拉列表 demo

6.6 absolute 的流體特性

  • position:absolute;top:0;right:0;bottom:0;left:0相比position:absolute;top:0;left:0;width:100%;height:100%的區(qū)別在于前者保留了流體特性, 換句話說前者充滿了可用空間的是虛擬的margin-box, 而后者是content-box,即使強制設(shè)置box-sizing:border-box也還是和 margin-box差了一點.

6.9 大哥position:relative

  • relative設(shè)置固定px單位的偏移時是相對自身, 而百分比值是相對于包含塊
  • topbottom這兩個垂直方向的百分比值是相對高度計算的
  • 與絕對定位的拉伸表現(xiàn)不同, relativetop/bottomleft/right同時設(shè)置時, 要整個你死我活,只有一個能生效(與文檔流順序有關(guān)) . 默認(rèn)的文檔流是自上而下\從左往右, 因此top/bottom同時使用只有top生效, 同理left
  • relative 最小化影響原則:
    • (1) 盡量不使用 relative , 定位元素時優(yōu)先使用"無依賴的絕對定位"
    • (2) 如果場景受限一定要用relative, 則務(wù)必relative 最小化
 <div class="box2" style ="position:relative">
    <img src="https://eleme.setsuna.wang/touma2.jpg" alt="" style="position:absolute;right:0;top:0">
    <p>some thing</p>
    <p>some thing</p>
    <p>some thing</p>
    <p>some thing</p>
  </div>
<!--  relative最小化原則, 把上面的代碼按照下面的方式來定位 img, 能保持更好的 index 層級 -->
<div class="box1">
    <div style ="position:relative">
      <img src="https://eleme.setsuna.wang/touma2.jpg" alt="" style="position:absolute;right:0;top:0">
    </div>
    <div class="box1">sth</div>
    <div class="box1">sth</div>
    <div class="box1">sth</div>
    <div class="box1">sth</div>
  </div>

6.10.3 fixed 背景鎖定

具體參考書中 P209 , 思路是 移動端@touchmove.preventPC 端根元素 overflow:hidden, 同時在 window 系統(tǒng)中要注意解決滾動條消失帶來的寬度變化以及頁面晃動問題, 可使用透明的 border-right 來填充windows 滾動條的原位置

第7章 CSS 世界的層疊規(guī)則

對于relative / absolute元素, 當(dāng)其index不為auto的時候 , 就會創(chuàng)建一個層疊上下文, 如下面的例子,后者判斷層級時優(yōu)先比較了所在的層疊上下文

<div style="position:relative; z-index:auto;">
    <!-- 美女 -->
    <img src="1.jpg" style="position:absolute; z-index:2;">  
</div>
<div style="position:relative; z-index:auto;">
    <!-- 美景 -->
    <img src="2.jpg" style="position:relative; z-index:1;">  
</div>

<div style="position:relative; z-index:0;">
    <!-- 美女 -->
    <img src="1.jpg" style="position:absolute; z-index:2;">  
</div>
<div style="position:relative; z-index:0;">
    <!-- 美景 -->
    <img src="2.jpg" style="position:relative; z-index:1;">  
</div>

CSS3會創(chuàng)建層疊上下文的屬性

  • z-index值不為auto的flex項(父元素display:flex|inline-flex).
  • 元素的opacity值不是1.
  • 元素的transform值不是none.
  • 元素mix-blend-mode值不是normal.
  • 元素的filter值不是none.
    -元素的isolation值是isolate.
  • will-change指定的屬性值為上面任意一個凿将。
  • 元素的-webkit-overflow-scrolling設(shè)為touch.

再看一個例子:

<style>
  .container{
    background: white;
    box-shadow: 0 0 5px rgba(0,0,0,0.3);
    width:400px;
    height: 150px;
    position:relative;
    z-index:-1;
  }
  .container:before,.container:after{
    content:'';
    position: absolute;
    width: 90%;
    height: 20%;
    background-color: antiquewhite;
    bottom:0;
  }
  .container:before{
    transform: skewX(12deg) rotate(4deg);
    box-shadow: 0 0 20px rgba(0,0,0,0.7);
    z-index:-1;
    transform-origin: bottom right;
    right:0;
    bottom:0;
  }
  .container:after{
    transform: skewX(-12deg) rotate(-4deg);
    box-shadow: 0 0 20px rgba(0,0,0,0.7);
    z-index:-1;
    transform-origin: bottom left;
    left:0;
    bottom:0;
  }
  .box{
    width: 300px;
    height: 200px;
  }
  .fixed{
    z-index:-50;
    margin-top:-70px;
    background: red;
    width: 400px;
    height: 400px;
  }
</style>
<body>
  <div class="container">
    ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl ashgelkasdzghgkjhdsxfhl 
  </div>
</body>

表現(xiàn)為:

container成為了層級上下文,所以排序為層級上下文的文字內(nèi)容> z-index 為負(fù)值的兩個框框 > 層級上下文的背景,對應(yīng)頂圖中2 > 6 > 7 的排序

這里其實.containerz-index:-1設(shè)為多少都是一樣的效果, 但是如果把.containerz-index:-1去掉, .container就 不再是層級上下文了, 表現(xiàn)為:
對應(yīng)頂圖中 5 > 6的排序

7.7 z-index "不犯二" 準(zhǔn)則

"不犯二準(zhǔn)則" :
"對于非浮層元素,避免設(shè)置z-index值,z-index沒有任何理由超過2

換句話說, 對于頁面上的主體元素遵循 z-index不犯二 準(zhǔn)則 , 而對于浮層元素(小圖標(biāo)定位->彈框組件層->彈框中的出錯提示效果 層級越來越高)使用層級計數(shù)器來遞增, 也不要太大, 9就差不多了

第8章 強大的文本處理能力

使用和系統(tǒng)相同的字體:

html { font:menu;  }
body { font-size: 16px; }

個人喜歡:

body { font-family: "Helvetica","Microsoft Yahei",sans-serif; }

8.5 @font-face

@font-face {
  font-family: 'sell-icon';
  src:  url('fonts/sell-icon.eot?s6c1hl');
  src:  url('fonts/sell-icon.eot?s6c1hl#iefix') format('embedded-opentype'),
    url('fonts/sell-icon.ttf?s6c1hl') format('truetype'),
    url('fonts/sell-icon.woff?s6c1hl') format('woff'),
    url('fonts/sell-icon.svg?s6c1hl#sell-icon') format('svg');
  font-weight: normal;
  font-style: normal;
}
[class^="icon-"], [class*=" icon-"] {
  /* use !important to prevent issues with browser extensions that change fonts */
  font-family: 'sell-icon' !important;
  font-style: normal;
  font-weight: normal;
  font-variant: normal;
  text-transform: none;
  line-height: 1;

  /* Better Font Rendering =========== */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
.icon-arrow_lift:before {
  content: "\e900";
}
  1. eot 是 IE 私有的,IE6~8僅支持這一種字體格式, 如果無需兼容 IE8可以果斷舍棄 eot
  2. ? : IE9之前的版本會把?之后的內(nèi)容當(dāng)做 url 的參數(shù), #iefix可以讓請求地址短一些,因為請求地址是不包含錨點標(biāo)志#及其后面的內(nèi)容的
  3. 寫兩個 src: 測試工程師測試低版本的 IE 瀏覽器喜歡使用兼容模式, 而兼容模式的 IE7和 IE8不認(rèn)識問號解決方案,導(dǎo)致第二個 src 無法識別, 因此多了第一行
  4. svg為了支持iOS 4.1及其之前版本, 現(xiàn)在可以果斷舍棄
  5. ttf作為系統(tǒng)安裝字體比較多, Web 開發(fā)也能用 , 尺寸略大, 不需兼容安卓4.3之前版本的話可以舍棄
  6. woffwoff2web open font format的縮寫, 加載速度快, Web 開發(fā)首選字體
  7. format讓瀏覽器提前知道字體的格式, 以決定是否加載這個字體,而不是加載完了再判斷.
  8. font-familyfont-style在擁有同字體名的多字體設(shè)置時才有用,例如響應(yīng)式圖標(biāo)字體效果 參見 P252
    響應(yīng)式圖標(biāo)字體效果
  9. unicode-range 可以針對指定字符使用其它字體替換, 例如替換中文引號

8.6 文本控制

  • letter-spacing控制字符間距, 可以用來制作字符飛入效果
  • word-spacing原意是控制單詞之間距離, 但實際上只控制了空格的寬度
  • word-break:break-all所有都換行 , word-wrap:break-word如果有"空格 CJK 字符"之類的換行點存在就不打英文的主意了
  • 一本萬利text-transform: uppercase , 適用于身份證輸入x 的時候自動轉(zhuǎn)換為大寫 X / 驗證碼輸入時轉(zhuǎn)換大寫 demo

雖然顯示為大寫了但是 value 值還是小寫, 所以傳后臺時要轉(zhuǎn)換一下

  • :first-letter的顏色權(quán)重總是多了一層 P277
    • :first-letter可以用來單獨調(diào)整這類控制價格的字符的樣式 , 而不必額外創(chuàng)造一個 dom 結(jié)構(gòu)了
  • white-space不同取值意義
屬性 換行 空格和制表符 文本環(huán)繞
normal 合并 合并 環(huán)繞
nowrap 合并 合并 不環(huán)繞
pre 保留 保留 不環(huán)繞
pre-wrap (可用來顯示代碼片段) 保留 保留 環(huán)繞
pre-line 保留 合并 環(huán)繞

9 元素的裝飾和美化

9.2.2 與眾不同的background-position百分比計算方式

  • positionX = ( 容器的高度 - 圖片的高度) * percentX
  • positionY = ( 容器的寬度 - 圖片的寬度) * percentY

11 cursor

  • 可以使用各種各樣的 cursor 來提高用戶體驗,例如zoom-in zoom-out default none help text move nwse-resize等等
  • direction可以改變元素左右排序
  • writing-mode:vertical-rl古詩豎版樣式

  • 改變元素的收縮性可通過object-fit(替換元素)
    width:-webkit-fit-content | fill-available | min-content來操作,具體內(nèi)容去翻鑫空間
寬度類型 對應(yīng)屬性 css3 width:
充分利用可用空間 <div> <p> fit-available
包裹性(收縮到合適) float absolute inline-block table fit-content
收縮到最小 table-cell \
超出容器限制 white-space:nowrap取消環(huán)繞 \
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市牧抵,隨后出現(xiàn)的幾起案子笛匙,更是在濱河造成了極大的恐慌,老刑警劉巖犀变,帶你破解...
    沈念sama閱讀 218,204評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妹孙,死亡現(xiàn)場離奇詭異,居然都是意外死亡获枝,警方通過查閱死者的電腦和手機蠢正,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來省店,“玉大人嚣崭,你說我怎么就攤上這事笨触。” “怎么了雹舀?”我有些...
    開封第一講書人閱讀 164,548評論 0 354
  • 文/不壞的土叔 我叫張陵芦劣,是天一觀的道長。 經(jīng)常有香客問我说榆,道長虚吟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,657評論 1 293
  • 正文 為了忘掉前任签财,我火速辦了婚禮串慰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘荠卷。我一直安慰自己模庐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,689評論 6 392
  • 文/花漫 我一把揭開白布油宜。 她就那樣靜靜地躺著掂碱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪慎冤。 梳的紋絲不亂的頭發(fā)上疼燥,一...
    開封第一講書人閱讀 51,554評論 1 305
  • 那天,我揣著相機與錄音蚁堤,去河邊找鬼醉者。 笑死,一個胖子當(dāng)著我的面吹牛披诗,可吹牛的內(nèi)容都是我干的撬即。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼呈队,長吁一口氣:“原來是場噩夢啊……” “哼剥槐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起宪摧,我...
    開封第一講書人閱讀 39,216評論 0 276
  • 序言:老撾萬榮一對情侶失蹤粒竖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后几于,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蕊苗,經(jīng)...
    沈念sama閱讀 45,661評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,851評論 3 336
  • 正文 我和宋清朗相戀三年沿彭,在試婚紗的時候發(fā)現(xiàn)自己被綠了蛾找。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钢拧。...
    茶點故事閱讀 39,977評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拍皮,死狀恐怖瓢湃,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站置逻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏备绽。R本人自食惡果不足惜券坞,卻給世界環(huán)境...
    茶點故事閱讀 41,306評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肺素。 院中可真熱鬧恨锚,春花似錦、人聲如沸倍靡。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塌西。三九已至他挎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間捡需,已是汗流浹背办桨。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留站辉,地道東北人呢撞。 一個月前我還...
    沈念sama閱讀 48,138評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像饰剥,于是被迫代替她去往敵國和親殊霞。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,927評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5汰蓉? 答:HTML5是最新的HTML標(biāo)準(zhǔn)绷蹲。 注意:講述HT...
    kismetajun閱讀 27,486評論 1 45
  • 學(xué)會使用CSS選擇器熟記CSS樣式和外觀屬性熟練掌握CSS各種選擇器熟練掌握CSS各種選擇器熟練掌握CSS三種顯示...
    七彩小鹿閱讀 6,314評論 2 66
  • HTML 5 HTML5概述 因特網(wǎng)上的信息是以網(wǎng)頁的形式展示給用戶的,因此網(wǎng)頁是網(wǎng)絡(luò)信息傳遞的載體古沥。網(wǎng)頁文件是用...
    阿啊阿吖丁閱讀 3,890評論 0 0
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案瘸右? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,753評論 1 92
  • @高原 秋之八送美詩行娇跟, 地面空中奏樂章岩齿。 風(fēng)雨菊禾糧果雁, 福甜爽艷暖心房苞俘。 《秋》 秋風(fēng)送爽使天涼盹沈, 秋云送雨...
    小車16閱讀 190評論 0 0