摘要:概述在世界這本書中有一些黑魔法給列舉出來,在結(jié)合自己的理解。篇幅有點(diǎn)長(zhǎng),希望大家能夠堅(jiān)持看完,一定會(huì)有收獲以下是摘自每章內(nèi)一些重要的概念與技巧。
概述
在《css世界》這本書中有一些“黑魔法”給列舉出來,在結(jié)合自己的理解。篇幅有點(diǎn)長(zhǎng),希望大家能夠堅(jiān)持看完,一定會(huì)有收獲?。?!
以下是摘自每章內(nèi)一些重要的概念與技巧。其中有解決圖片間隙的問題、小圖標(biāo)與文字居中問題等;
ps: 特別是 “l(fā)ine-height、vertical-align”內(nèi)容需要反復(fù)仔細(xì)研究閱讀
何為“流”成為文檔流,將窗體自上而下分成一行一行,并在每行中按從左至右依次排放元素 (引導(dǎo)元素排列和定位)什么是流體布局
利用元素“流”的特性實(shí)現(xiàn)的各類布局效果。因?yàn)椤傲鳌北旧砭哂凶赃m應(yīng)特性,所以“流體布局”往往都是具有自適應(yīng)性。“未定義行為”
元素寬度按照分辨率寬度進(jìn)行長(zhǎng)度、寬度的調(diào)整,但布局不變。
當(dāng)某個(gè)瀏覽器中出現(xiàn)與其他瀏覽器不一樣的行為或樣式表現(xiàn);currentColor 變量
Web應(yīng)用場(chǎng)景千變?nèi)f化,Web標(biāo)準(zhǔn)也是不可能面面俱到的,也會(huì)存在規(guī)范描述以外的場(chǎng)景,此時(shí),各大瀏覽器廠家只能根據(jù)自己的理解與喜好去實(shí)現(xiàn),一旦個(gè)性化就會(huì)出現(xiàn)差異
當(dāng)前的文字顏色;凡事需要使用顏色值的地方,都可以使用currentColor替換,比方說背景色 – background-color, 漸變色 – gradient, 盒陰影 – box-shadow, SVG的填充色 – fill等等
div { color:#3c3c3c; border: 1em solid currentColor; }
currentColor-CSS3超高校級(jí)好用CSS變量
塊級(jí)元素默認(rèn)情況下,塊級(jí)元素會(huì)新起一行;占據(jù)其父元素(容器)的整個(gè)空間
塊級(jí)盒子負(fù)責(zé)結(jié)構(gòu)
內(nèi)聯(lián)盒子負(fù)責(zé)內(nèi)容
應(yīng)用正是由于“塊級(jí)元素”具有換行特性,因此理論上它都可以配合clear屬性來清除浮動(dòng)帶來的影響
.clear:after { content: ""; display: table; // 也可以是block,或者是list-item clear: both; }為什么 list-item 元素會(huì)出現(xiàn)項(xiàng)目符號(hào)
list-item(“附加盒子”)名“標(biāo)記盒子”;因?yàn)樯闪艘粋€(gè)附加的盒子,學(xué)名“標(biāo)記盒子”(marker box),專門用來放圓點(diǎn)、數(shù)字這些項(xiàng)目符號(hào);display:inline-block 或者 display:xx-xx 理解(容器盒子)
元素都兩個(gè)盒子,外在盒子和內(nèi)在盒子;深藏不露的 width:auto 充分利用可用空間
外在盒子:外在的“內(nèi)聯(lián)盒子”(inline)
內(nèi)在盒子:內(nèi)在的“塊級(jí)容器盒子”(block)
、這些元素的寬度默認(rèn)是100%于父級(jí)容器的 收縮與包裹
浮動(dòng)、絕對(duì)定位、inline-block元素或table元素收縮到最小出現(xiàn)在table-layout為auto的表格中;當(dāng)每一列空間都不夠的時(shí)候,文字能斷就斷,但中文是隨便斷的,英文單詞不能斷超出容器限制內(nèi)容很長(zhǎng)的連續(xù)的英文和數(shù)字,或者內(nèi)聯(lián)元素被設(shè)置了white-space:nowrap“內(nèi)部尺寸”和“外部尺寸”“內(nèi)部尺寸”:尺寸由內(nèi)部元素決定外部尺寸與流體特性 正常流寬度
“外部尺寸”:寬度由外部元素決定、這些元素的寬度默認(rèn)是100%于父級(jí)容器;display:block; 流動(dòng)性
寬度100%顯示,格式化寬度margin/border/padding和content內(nèi)容區(qū)域自動(dòng)分配水平空間
觸發(fā)條件
“絕對(duì)定位?!保?strong>position屬性值為absolute或fixed的元素中)
表現(xiàn)
絕對(duì)定位元素的寬度表現(xiàn)是“包裹性”,寬度由內(nèi)部尺寸決定特殊
當(dāng)left/top或top/bottom對(duì)立方位的屬性值同時(shí)存在,元素的寬度表現(xiàn)為“格式化寬度”,
其寬度大小相對(duì)于最近的具有定位特性(position屬性值不是static)的祖先元素計(jì)算
div { position: absolute; left: 20px; right: 20px; } div { position: absolute; top: 20px; bottom: 20px; } // 但不知道為什么不行內(nèi)部尺寸與流體特性 包裹性除了“包裹”(max-width:100%),還有“自適應(yīng)性(元素尺寸由內(nèi)部元素決定,但永遠(yuǎn)小于“包含塊”容器的尺寸)”著名的“按鈕”元素:極具代表性的inline-block元素
按鈕上的文字個(gè)數(shù)比較有限,沒機(jī)會(huì)換行
應(yīng)用文字少的時(shí)候居中顯示,文字超過一行的時(shí)候居左顯示
.box { padding: 10px; background-color: #cd0000; text-align: center; } .content { display: inline-block; text-align: left; }首選最小寬度文字內(nèi)容
元素最適合的最小寬度東亞文字(如中文)最小寬度為每個(gè)漢字的寬度:font-size:14px;
西方文字最小寬度由特定的連續(xù)的英文字符單元決定(一般會(huì)終止于空格(普通空格)、短橫線、問號(hào)以及其他非英文字符等)
最大寬度是元素可以有的最大寬度(如果內(nèi)部沒有塊級(jí)元素或者塊級(jí)元素沒有設(shè)定寬度值,實(shí)際上是最大的連續(xù)內(nèi)聯(lián)盒子的寬度)如何評(píng)價(jià)*{box-sizing:border-box} box-sizing 發(fā)明的初衷解決替換元素寬度自適應(yīng)問題易產(chǎn)生沒必要的消耗通內(nèi)聯(lián)元素(非圖片等替換元素),box-sizing無論是什么值,對(duì)其渲染表現(xiàn)都沒有影響
search類型的搜索框,其默認(rèn)的box-sizing就是border-box(如果瀏覽器支持),因此,*對(duì)search類型的而言也是沒有必要的消耗
關(guān)于 height:100%父元素height為auto,只要子元素在文檔流中,其百分比值完全就被忽略了;百分比高度值要想起作用,其父級(jí)必須有一個(gè)可以生效的高度值;為何height:100%無效包含塊的高度沒有顯式指定(即高度由內(nèi)容決定),并且該元素不是絕對(duì)定位,則計(jì)算值為auto"auto" * 100/100 = NaN如何讓元素支持height:100%效果設(shè)定顯式的高度值
使用絕對(duì)定位
width:100%效width:100%有效包含塊的寬度取決于該元素的寬度,那么產(chǎn)生的布局在CSS 2.1中是未定義的CSS min-width/max-width 和 min-height/max-height max-* 初始值是none假如說max-width初始值是auto,我們的width永遠(yuǎn)不能設(shè)置為比auto計(jì)算值更大的寬度值min-* 初始值 0(實(shí)踐為auto)min-wdith/height值為auto合法
數(shù)值變化無動(dòng)畫
max-width 超越!important,超越最大max-width會(huì)覆蓋width,不是普通的覆蓋,是超級(jí)覆蓋;比直接在元素的style屬性中設(shè)置CSS聲明還要高min-width超越最大min-width和max-width沖突;遵循“超越最大”規(guī)則(注意不是“后來居上”規(guī)則),min-width覆蓋任意高度元素的展開收起動(dòng)畫技術(shù)我們展開的元素內(nèi)容是動(dòng)態(tài)的,換句話說高度是不固定的.element { max-height: 0; overflow: hidden; transition: max-height .25s; } .element.active { max-height: 666px; /* 一個(gè)足夠大的最大高度值 */ }max-height值比height計(jì)算值大的時(shí)候,元素的高度就是height屬性的計(jì)算高度
注意max-height不能設(shè)置很大,如果延遲時(shí)間長(zhǎng),會(huì)有延遲的感覺。
內(nèi)聯(lián)元素 內(nèi)聯(lián)世界深入的基礎(chǔ)—內(nèi)聯(lián)盒模型 內(nèi)容區(qū)域(content area)圍繞文字看不見的盒子,其大小僅受字符本身特性控制,本質(zhì)上是一個(gè)字符盒子(character box);內(nèi)聯(lián)盒子但是有些元素,如圖片這樣的替換元素,其內(nèi)容顯然不是文字,不存在字符盒子之類的,因此,對(duì)于這些元素,內(nèi)容區(qū)域可以看成元素自身
元素的“外在盒子”,用來決定元素是內(nèi)聯(lián)還是塊級(jí)、和等
行框盒子由一個(gè)一個(gè)“內(nèi)聯(lián)盒子”組成的包含盒子(“包含塊”)由一行一行的“行框盒子”組成(CSS規(guī)范中,并沒有“包含盒子”的說法,更準(zhǔn)確的稱呼應(yīng)該是“包含塊”)幽靈空白節(jié)點(diǎn)內(nèi)聯(lián)元素的所有解析和渲染會(huì)有前面有一個(gè)“空白節(jié)點(diǎn)”;不占據(jù)任何寬度,看不見也無法通過腳本獲?。?strong>文檔聲明必須是HTML5文檔聲明(HTML代碼如下))div { background-color: #cd0000; } span { display: inline-block; }深入理解 content 替換元素過修改某個(gè)屬性值呈現(xiàn)的內(nèi)容就可以被替換的元素; 如“img”特性 內(nèi)容的外觀不受頁(yè)面上的CSS的影響需要類似appearance屬性,或者瀏覽器自身暴露的一些樣式接口,例如::-ms-check{}有自己的尺寸其默認(rèn)的尺寸(不包括邊框)是300像素×150像素,如在很多CSS屬性上有自己的一套表現(xiàn)規(guī)則vertical-align屬性,對(duì)于替換元素和非替換元素,vertical-align屬性值的解釋是不一樣替換元素的尺寸計(jì)算規(guī)則 固有尺寸替換內(nèi)容原本的尺寸有著自己的寬度和高度HTML尺寸HTML原生屬性width和height屬性、的size屬性、CSS尺寸通過CSS的width和height或者max-width/min-width和max-height/min-height設(shè)置的尺寸為何圖片以及其他表單類替換元素設(shè)置display:block寬度卻沒有100%容器CSS尺寸 > HTML尺寸 > 固有尺寸如果沒有CSS尺寸和HTML尺寸,則使用固有尺寸作為最終的寬高
如果沒有CSS尺寸,則使用HTML尺寸作為最終的寬高
如果有CSS尺寸,則最終尺寸由CSS屬性決定
內(nèi)聯(lián)替換元素和塊級(jí)替換元素使用上面同一套尺寸計(jì)算規(guī)則
列外在沒有src屬性下,各個(gè)瀏覽器表現(xiàn)的各不相同;src缺省的不是替換元素,而是一個(gè)普通的內(nèi)聯(lián)元素
IE瀏覽器下是28×30
Chrome瀏覽器下是0×0
Firefox瀏覽器下顯示的是0×22
應(yīng)用異步加載的圖片;使用一張透明的圖片占位
圖片資源的固有尺寸是無法改變直接沒有src屬性;當(dāng)圖片的src屬性缺省的時(shí)候,圖片不會(huì)有任何請(qǐng)求,是最高效的實(shí)現(xiàn)方式
設(shè)置圖片個(gè)尺寸不是直接設(shè)置圖片的固有尺寸,圖片的固有尺寸是無法設(shè)置;但是設(shè)定width和height會(huì)影響圖片的尺寸查看示例
原因
圖片中的content替換內(nèi)容默認(rèn)的適配方式是填充(fill)
替換元素和非替換元素的距離有多遠(yuǎn) 替換元素和非替換元素之間只隔了一個(gè)src屬性
和其他一些替換元素的替換內(nèi)容的適配方式可以通過object-fit屬性修改了;(類似于background-size原理)
特點(diǎn)
Firefox瀏覽器下,最終的寬度是100%自適應(yīng)父容器的可用寬度的。其表現(xiàn)和普通的類似,已經(jīng)完全不是替換元素了
Chrome瀏覽器其實(shí)也有類似的表現(xiàn),只是需要特定的條件觸發(fā)而已,不為空的alt屬性值
應(yīng)用
基于偽元素的圖片內(nèi)容生成技術(shù)查看示例
不能有src屬性
不能使用content屬性生成圖片
需要有alt屬性并有值
Firefox下::before偽元素的content值會(huì)被無視,::after無此問題
替換元素和非替換元素之間只隔了一個(gè)CSS content屬性在Chrome瀏覽器下,所有的元素都支持content屬性,而其他瀏覽器僅在::before/::after偽元素中才有支持查看示例
注意
content屬性改變的僅僅是視覺呈現(xiàn),當(dāng)我們以右鍵或其他形式保存這張圖片的時(shí)候,所保存的還是原來src對(duì)應(yīng)的圖片
content與替換元素關(guān)系剖析content屬性生成的內(nèi)容都是替換元素content生成的文本是無法選中、無法復(fù)制;無法被屏幕閱讀設(shè)備讀取,也無法被搜索引擎抓取;替換的僅僅是視覺層
content動(dòng)態(tài)生成值無法獲取
content 內(nèi)容生成技術(shù) 清除浮動(dòng) content字符內(nèi)容生成 content圖片生成div:before { content: url(1.jpg); }content attr屬性值內(nèi)容生成(比較常用)img::after { /* 生成alt信息 */ content: attr(alt); /* 其他CSS略 */ }字體圖標(biāo) 理解content計(jì)數(shù)器
padding 屬性 padding 與元素的尺寸 內(nèi)聯(lián)元素的padding在垂直方向同樣會(huì)影響布局,但僅僅是視覺表現(xiàn)內(nèi)聯(lián)元素沒有可視寬度和可視高度的說法(clientHeight和clientWidth永遠(yuǎn)是0),垂直方向的行為表現(xiàn)完全受line-height和vertical-align的影響;視覺上并沒有改變和上一行下一行內(nèi)容的間距應(yīng)用 增加鏈接或按鈕的點(diǎn)擊區(qū)域大小 利用內(nèi)聯(lián)元素的padding實(shí)現(xiàn)高度可控的分隔線 元素發(fā)生錨點(diǎn)定位;標(biāo)題距離頁(yè)面的頂部有一段距離
padding 的百分比值 塊狀特性的元素padding百分比值無論是水平方向還是垂直方向均是相對(duì)于寬度計(jì)算內(nèi)聯(lián)元素同樣相對(duì)于寬度計(jì)算
默認(rèn)的高度和寬度細(xì)節(jié)有差異
padding會(huì)斷行
padding 與圖形繪制 移動(dòng)端菜單“三道杠” 雙層圓點(diǎn)圖形效果 margin 屬性 margin 與元素尺寸以及相關(guān)布局 元素尺寸的相關(guān)概念 元素內(nèi)部尺寸$().innerWidth()和$().innerHeight();
content + padding;
DOM API clientWidth clientHeight
元素尺寸$().width()和$().height();
content + padding + border;
DOM API offsetWidth offsetHeight
元素外部尺寸$().outerWidth(true) $().outerHeight(true)
content + padding + border + margin
margin與元素的內(nèi)部尺寸(針對(duì)具有塊狀特性的元素) 只有元素是“充分利用可用空間”(寬度自動(dòng)100%)margin才可以改變?cè)氐目梢暢叽?/strong>應(yīng)用列表塊兩端對(duì)齊,一行顯示3個(gè),中間有2個(gè)20像素的間隙ul { margin-right: -20px; } ul > li { float: left; width: 100px; margin-right: 20px; }正確看待 CSS 世界里的 margin 合并 什么是margin合并塊級(jí)元素的上外邊距(margin-top)與下外邊距(margin-bottom)有時(shí)會(huì)合并為單個(gè)外邊距注意塊級(jí)元素,但不包括浮動(dòng)和絕對(duì)定位元素,盡管浮動(dòng)和絕對(duì)定位可以讓元素塊狀化
只發(fā)生在垂直方向,需要注意的是,這種說法在不考慮writing-mode的情況
margin合并的多種場(chǎng)景 相鄰兄弟元素margin合并p { margin: 1em 0; }父級(jí)和第一個(gè)/最后一個(gè)子元素 解決margin合并 margin-top合并第一行
第二行
父元素設(shè)置為塊狀格式化上下文元素(overflow:hidden)
父元素設(shè)置border-top值
父元素設(shè)置padding-top值
父元素和第一個(gè)子元素之間添加內(nèi)聯(lián)元素進(jìn)行分隔
margin-bottom合并父元素設(shè)置為塊狀格式化上下文元素(overflow:hidden)
父元素設(shè)置border-bottom值
父元素設(shè)置padding-bottom值
父元素和第一個(gè)子元素之間添加內(nèi)聯(lián)元素進(jìn)行分隔
父元素設(shè)置height、min-height或max-height
margin合并的計(jì)算規(guī)則 正正取大值 正負(fù)值相加 負(fù)負(fù)最負(fù)值 margin 合并的意義 兄弟元素的margin 合并讓圖文信息的排版更加舒服自然兄弟元素的margin 合并在頁(yè)面中任何地方嵌套或直接放入任何裸"""",都不會(huì)影響原來的塊狀布局。 深入理解 CSS 中的 margin:auto 觸發(fā)條件width或height為auto時(shí);元素是具有對(duì)應(yīng)方向的自動(dòng)填充特性填充規(guī)則填充閑置尺寸如果一側(cè)定值,一側(cè)auto,則auto為剩余空間大小
如果兩側(cè)均是auto,則平分剩余空間
應(yīng)用左右對(duì)齊
查看示例
margin 無效情形解析display 計(jì)算值inline的內(nèi)聯(lián)元素
表格中的
和 元素或者設(shè)置display 計(jì)算值是table-cell 或table-row margin 合并的時(shí)候,更改margin 值
功勛卓越的 border 屬性 了解各種 border-style 類型 應(yīng)用三道杠
.icon-menu { width: 120px; height: 20px; border-top: 60px double; border-bottom: 20px solid; }border-color 和 colorborder-color默認(rèn)顏色就是color色值;沒有指定border-color顏色值的時(shí)候,會(huì)使用當(dāng)前元素的color計(jì)算值作為邊框色border 與透明邊框技巧 增加點(diǎn)擊區(qū)域大小.icon-clear { width: 16px; height: 16px; border: 11px solid transparent; }字母 x—CSS 世界中隱匿的舉足輕重的角色 字母x與CSS中的x-heightascender height: 上下線高度
cap height: 大寫字母高度
median: 中線
descender height: 下行線高度
字母x與CSS中的exex是CSS中的一個(gè)相對(duì)單位;小寫字母x的x-height(不受字體和字號(hào)影響的內(nèi)聯(lián)元素的垂直居中對(duì)齊效果);內(nèi)聯(lián)元素默認(rèn)是基線對(duì)齊的,而基線就是x的底部,而1ex就是一個(gè)x的高度;查看示例
注意
vertical-align:middle
指的是基線往上1/2 x-height高度;內(nèi)聯(lián)元素垂直居中是對(duì)文字
內(nèi)聯(lián)元素的基石 line-height 內(nèi)聯(lián)元素的高度之本——line-height非替換元素的純內(nèi)聯(lián)元素,其可視高度完全由line-height決定
定了用來計(jì)算行框盒子高度的基礎(chǔ)高度;通過改變“行距”來實(shí)現(xiàn)查看示例
“行距”行距 = line-height - font-size作用可以瞬間明確我們的閱讀方向,讓我們閱讀文字更輕松"半行距"當(dāng)前文字的上方和下方;這個(gè)“行距”的高度僅僅是完整“行距”高度的一半計(jì)算公式半行距 = (line-height - font-size )/2;替換元素的高度與line-height的關(guān)系line-height不可以影響替換元素;但是在視覺上是受到line-height影響了,那是因?yàn)榘选坝撵`空白節(jié)點(diǎn)”的高度變高了;圖片為內(nèi)聯(lián)元素,會(huì)構(gòu)成一個(gè)“行框盒子”,而在HTML5文檔模式下,每一個(gè)“行框盒子”的前面都有一個(gè)寬度為0的“幽靈空白節(jié)點(diǎn)”特性表現(xiàn)和普通字符一模一樣;塊級(jí)元素的高度與line-height的關(guān)系通過改變塊級(jí)元素里面內(nèi)聯(lián)級(jí)別元素占據(jù)的高度實(shí)現(xiàn)為什么 line-height 可以讓內(nèi)聯(lián)元素“垂直居中”CSS中“行距的上下等分機(jī)制”單行文字垂直居中只需要line-height這一個(gè)屬性就可以近似垂直居中文字字形的垂直中線位置普遍要比真正的“行框盒子”的垂直中線位置低多行文本垂直居中需要line-height屬性的好朋友vertical-align屬性幫助查看示例
深入 line-height 的各類屬性值 line-height:normal不同系統(tǒng)不同瀏覽器的默認(rèn)line-height都是有差異line-height應(yīng)該重置為多大的值,是使用數(shù)值、百分比值還是長(zhǎng)度值 數(shù)值如line-height:1.5,其最終的計(jì)算值是和當(dāng)前font-size相乘后的值百分比值如line-height:150%,其最終的計(jì)算值是和當(dāng)前font-size相乘后的值長(zhǎng)度值也就是帶單位的值,如line-height:21px或者line-height:1.5em;最終的計(jì)算值是和當(dāng)前font-size相乘后的值區(qū)別使用數(shù)值;所有的子元素繼承的都是這個(gè)值
使用百分比值或者長(zhǎng)度值;所有的子元素繼承的是最終的計(jì)算值
應(yīng)用重圖文內(nèi)容展示的網(wǎng)頁(yè)或者網(wǎng)站
考慮到文章閱讀的舒適度,line-height值可以設(shè)置在1.6~1.8偏重布局結(jié)構(gòu)精致的網(wǎng)站
長(zhǎng)度值或者數(shù)值內(nèi)聯(lián)元素 line-height 的“大值特性”終父級(jí)元素的高度都是由數(shù)值大的那個(gè)line-height決定line-height 的好朋友 vertical-align vertical-align 家族基本認(rèn)識(shí) 線類如baseline(默認(rèn)值)、top、middle、bottom文本類如text-top、text-bottom;上標(biāo)下標(biāo)類如sub、super數(shù)值百分比類如20px、2em、20%等 百分比是相對(duì)于line-height的計(jì)算值計(jì)算vertical-align 作用的前提只能作用在display計(jì)算值為inline、inline- block,inline-table或table-cell的元素上vertical-align 和 line-height 之間的關(guān)系對(duì)字符而言,font-size越大字符的基線位置越往下,因?yàn)槲淖帜J(rèn)全部都是基線對(duì)齊,所以當(dāng)字號(hào)大小不一樣的兩個(gè)文字在一起的時(shí)候,彼此就會(huì)發(fā)生上下位移,如果位移距離足夠大,就會(huì)超過行高的限制,而導(dǎo)致出現(xiàn)意料之外的高度應(yīng)用圖片之間間隙問題
默認(rèn)和基線(也就是這里字母x的下邊緣)對(duì)齊,字母x往下的行高產(chǎn)生的多余的間隙就嫁禍到圖片下面,讓人以為是圖片產(chǎn)生的間隙,實(shí)際上,是“幽靈空白節(jié)點(diǎn)”、line-height和vertical-align屬性共同作用的結(jié)果深入理解 vertical-align 線性類屬性值 inline-block與baseline一個(gè)inline-block元素,如果里面沒有內(nèi)聯(lián)元素,或者overflow不是visible,則該元素的基線就是margin底邊緣;應(yīng)用
否則其基線就是元素里面最后一行內(nèi)聯(lián)元素的基線圖標(biāo)與文字居中圖標(biāo)高度和當(dāng)前行高都是20px
圖標(biāo)標(biāo)簽里面永遠(yuǎn)有字符
圖標(biāo)CSS不使用overflow:hidden保證基線為里面字符的基線,但是要讓里面潛在的字符不可見
查看示例
vertial-align:top/bottom內(nèi)聯(lián)元素:元素底部和當(dāng)前行框盒子的頂部對(duì)齊
table-cell元素:元素底padding邊緣和表格行的頂部對(duì)齊
vertial-align:middle內(nèi)聯(lián)元素:元素的垂直中心點(diǎn)和行框盒子基線往上1/2 x-height處對(duì)齊
table-cell元素:?jiǎn)卧裉畛浜凶酉鄬?duì)于外面的表格行居中對(duì)齊
查看示例
深入理解 vertical-align 文本類屬性值 vertical-align:text-top盒子的頂部和父級(jí)內(nèi)容區(qū)域的頂部對(duì)齊vertical-align:text-bottom盒子的底部和父級(jí)內(nèi)容區(qū)域的底部對(duì)齊vertical-align 上標(biāo)下標(biāo)類屬性值 vertical-align:super提高盒子的基線到父級(jí)合適的上標(biāo)基線位置vertical-align:sub降低盒子的基線到父級(jí)合適的下標(biāo)基線位置。基于 vertical-align 屬性的水平垂直居中彈框查看示例
魔鬼屬性 float float 的本質(zhì)與特性浮動(dòng)的本質(zhì)就是為了實(shí)現(xiàn)文字環(huán)繞效果。而這種文字環(huán)繞,主要指的就是文字環(huán)繞圖片顯示的效果特性 包裹性
包裹
假設(shè)浮動(dòng)元素父元素寬度200px,浮動(dòng)元素子元素是一個(gè)128px寬度的圖片,則此時(shí)浮動(dòng)元素寬度表現(xiàn)為“包裹”,就是里面圖片的寬度128px;
自適應(yīng)性
如果浮動(dòng)元素的子元素不只是一張128px寬度的圖片,還有一大波普通的文字,浮動(dòng)元素寬度就自適應(yīng)父元素的200px寬度,最終的寬度表現(xiàn)也是200px
塊狀化并格式化上下文元素一旦float的屬性值不為none,則其display計(jì)算值就是block或者table破壞文檔流 沒有任何margin合并 float 的作用機(jī)制行框盒子如果和浮動(dòng)元素的垂直高度有重疊,則行框盒子在正常定位狀態(tài)下只會(huì)跟隨浮動(dòng)元素
塊狀盒子中的“行框盒子”被浮動(dòng)元素限制,沒有任何的重疊
float 更深入的作用機(jī)制 浮動(dòng)錨點(diǎn)是float元素所在的“流”中的一個(gè)點(diǎn),這個(gè)點(diǎn)本身并不浮動(dòng),就表現(xiàn)而言如同一個(gè)空的內(nèi)聯(lián)元素,有內(nèi)聯(lián)元素自然就有“行框盒子”浮動(dòng)參考是浮動(dòng)元素對(duì)齊參考的實(shí)體:float元素的“浮動(dòng)參考”是“行框盒子”,也就是float元素在當(dāng)前“行框盒子”內(nèi)定位float 與流體布局查看示例
.animal元素沒有浮動(dòng),也沒有設(shè)置寬度,因此,流動(dòng)性保持得很好,設(shè)置margin-left、border-left或者padding-left都可以自動(dòng)改變content box的尺寸,繼而實(shí)現(xiàn)了寬度自適應(yīng)布局效果float 的天然克星 clear 什么是 clear 屬性clear屬性是讓自身不能和前面的浮動(dòng)元素相鄰,注意這里“前面的”3個(gè)字,也就是clear屬性對(duì)“后面的”浮動(dòng)元素是不聞不問的成事不足敗事有余的 clear查看示例
clear屬性只有塊級(jí)元素才有效;
由于clear:both的作用本質(zhì)是讓自己不和float元素在一行顯示,并不是真正意義上的清除浮動(dòng)
CSS 世界的結(jié)界—BFC BFC 的定義“CSS世界的結(jié)界”;通過一些特定的手段形成的封閉空間,里面的人出不去,外面的人進(jìn)不來,具有極強(qiáng)的防御力表現(xiàn)原則BFC元素是不可能發(fā)生margin重疊
BFC元素清除浮動(dòng)
觸發(fā)BFC條件根元素
float的值不為none
overflow的值為auto、scroll或hidden
display的值為table-cell、table-caption和inline-block中的任何一個(gè)
position的值absolute
只要元素符合上面任意一個(gè)條件,就無須使用clear:both屬性去清除浮動(dòng)BFC 與流體布局img { float: left; } .animal { overflow: hidden; }![]()
小貓1,小貓2,...
通流體元素在設(shè)置了overflow:hidden后,會(huì)自動(dòng)填滿容器中除了浮動(dòng)元素以外的剩余空間,形成自適應(yīng)布局效果,而且這種自適應(yīng)布局要比純流體自適應(yīng)更加智能最佳結(jié)界 overflow要想徹底清除浮動(dòng)的影響,最適合的屬性不是clear而是overflow。一般使用overflow:hidden,利用BFC的“結(jié)界”特性徹底解決浮動(dòng)對(duì)外部或兄弟元素的影響overflow 剪裁界線 border box當(dāng)子元素內(nèi)容超出容器寬度高度限制的時(shí)候,剪裁的邊界是border box的內(nèi)邊緣注意要盡量避免滾動(dòng)容器設(shè)置padding-bottom值,除了樣式表現(xiàn)不一致外,還會(huì)導(dǎo)致scrollHeight值不一樣Chrome:如果容器可滾動(dòng)(假設(shè)是垂直滾動(dòng)),則padding-bottom也算在滾動(dòng)尺寸之內(nèi)
IE和Firefox瀏覽器忽略padding-bottom
overflow 與錨點(diǎn)定位 觸發(fā)條件
URL地址中的錨鏈與錨點(diǎn)元素對(duì)應(yīng)并有交互行為
由”內(nèi)而外”的錨點(diǎn)定位會(huì)觸發(fā)窗體的重定位,也就是說,如果頁(yè)面也是可以滾動(dòng)的,則點(diǎn)擊選項(xiàng)卡按鈕后頁(yè)面會(huì)發(fā)生跳動(dòng)
可focus的錨點(diǎn)元素處于focus狀態(tài)
類似鏈接或者按鈕、輸入框等可以被focus的元素在被focus時(shí)發(fā)生的頁(yè)面重定位現(xiàn)
頁(yè)面窗體就有滾動(dòng)條,絕大多數(shù)情況下,也都不會(huì)發(fā)生跳動(dòng)現(xiàn)象
錨點(diǎn)定位作用的本質(zhì)通過改變?nèi)萜鳚L動(dòng)高度或者寬度來實(shí)現(xiàn);容器的滾動(dòng)高度,而不是瀏覽器的滾動(dòng)高度;而且定位行為的發(fā)生是由內(nèi)而外定位行為的發(fā)生是由內(nèi)而外普通元素和窗體同時(shí)可滾動(dòng)的時(shí)候,會(huì)由內(nèi)而外觸發(fā)所有可滾動(dòng)窗體的錨點(diǎn)定位行為overflow:hidden跟overflow:auto和overflow:scroll別就在于有沒有那個(gè)滾動(dòng)條。元素設(shè)置了overflow:hidden聲明,里面內(nèi)容高度溢出的時(shí)候,滾動(dòng)依然存在,僅僅滾動(dòng)條不存在float 的兄弟 position:absolute當(dāng)absolute和float同時(shí)存在的時(shí)候,float屬性是無任何效果的absolute 的包含塊元素用來計(jì)算和定位的一個(gè)框計(jì)算規(guī)則根元素(很多場(chǎng)景下可以看成是)被稱為“初始包含塊”,其尺寸等同于瀏覽器可視窗口的大小
position是relative或者static,則“包含塊”由其最近的塊容器祖先盒的content box邊界形成
position:fixed,是“初始包含塊”
position:absolute,則“包含塊”由最近的position不為static的祖先元素建立
內(nèi)聯(lián)元素也可以作為“包含塊”所在的元素
內(nèi)聯(lián)元素的“包含塊”是由“生成的”前后內(nèi)聯(lián)盒子決定的,與里面的內(nèi)聯(lián)盒子細(xì)節(jié)沒有任何關(guān)系
包含塊”所在的元素不是父塊級(jí)元素,而是最近的position不為static的祖先元素或根元素
絕對(duì)定位元素默認(rèn)的最大寬度就是“包含塊”的寬度
邊界是padding box而不是content box
因?yàn)榻^對(duì)定位元素的定位值和列表容器的padding值耦合在一起了:我們對(duì)padding間距進(jìn)行調(diào)整的時(shí)候,絕對(duì)定位元素的right、top值也一定要跟著一起調(diào)整,否則就會(huì)出現(xiàn)樣式問題具有相對(duì)特性的無依賴 absolute 絕對(duì)定位一個(gè)絕對(duì)定位元素,沒有任何left/top/right/bottom屬性設(shè)置,并且其祖先元素全部都是非定位元素:當(dāng)前位置特性代碼更簡(jiǎn)潔
相對(duì)定位特性:僅僅是不占據(jù)CSS流的尺寸空間而已
absolute 與 overflow如果overflow不是定位元素,同時(shí)絕對(duì)定位元素和overflow容器之間沒有定位元素,則overflow無法對(duì)absolute元素進(jìn)行剪裁應(yīng)用如果overflow的屬性值不是hidden而是auto或者scroll,即使絕對(duì)定位元素高寬比overflow元素高寬還要大,也都不會(huì)出現(xiàn)滾動(dòng)條
局部滾動(dòng)的容器中模擬近似position:fixed的效果
查看示例
absolute 與 clipclip屬性要想起作用,元素必須是絕對(duì)定位或者固定定位重新認(rèn)識(shí)的 clip 屬性 fixed固定定位的剪裁overflow屬性往往就力不能及了,因?yàn)閒ixed固定定位元素的包含塊是根元素,除非是根元素滾動(dòng)條,普通元素的overflow是根本無法對(duì)其進(jìn)行剪裁的;但是clip可以最佳可訪問性隱藏它具有更強(qiáng)的普遍適應(yīng)性,任何元素、任何場(chǎng)景都可以無障礙使用深入了解 clip 的渲染clip隱藏僅僅是決定了哪部分是可見的,非可見部分無法響應(yīng)點(diǎn)擊事件等
視覺上隱藏,但是元素的尺寸依然是原本的尺寸,在IE瀏覽器和Firefox瀏覽器下抹掉了不可見區(qū)域尺寸對(duì)布局的影響,Chrome瀏覽器卻保留了
absolute 的流體特性 當(dāng) absolute 遇到 left/top/right/bottom 屬性absolute元素才真正變成絕對(duì)定位元素absolute 的流體特性如果我們僅設(shè)置了一個(gè)方向的絕對(duì)定位,沒有設(shè)置方向依然保持了相對(duì)特性
流體特性:對(duì)立方向同時(shí)發(fā)生定位的時(shí)候設(shè)置了對(duì)立定位屬性的絕對(duì)定位元素的表現(xiàn)神似普通的
元素,無論設(shè)置padding還是margin,其占據(jù)的空間一直不變,變化的就是content box的尺寸 absolute 的 margin:auto 居中.element { width: 300px; height: 200px; position: absolute; left: 0; right: 0; top: 0; bottom: 0; margin: auto; }position:relative 才是大哥 relative 與定位 相對(duì)自身相對(duì)于自身進(jìn)行偏移定位查看示例
當(dāng)相對(duì)定位元素同時(shí)應(yīng)用對(duì)立方向定位值的時(shí)候;只有一個(gè)方向的定位屬性會(huì)起作用;孰強(qiáng)孰弱則是與文檔流的順序有關(guān)的,默認(rèn)的文檔流是自上而下、從左往右
無侵入即使自己移動(dòng),也會(huì)在原來的位置留下空間relative 的最小化影響原則當(dāng)relative進(jìn)行定位偏移的時(shí)候,一般情況下不會(huì)影響周圍元素的布局
盡量不使用relative,如果想定位某些元素,看看能否使用“無依賴的絕對(duì)定位”
如果場(chǎng)景受限,一定要使用relative,則該relative務(wù)必最小化(再增加div嵌套,且沒有定位)
強(qiáng)悍的 position:fixed 固定定位 position:fixed 不一樣的“包含塊”position:fixed固定定位元素的“包含塊”是根元素;理解 CSS 世界的層疊上下文和層疊水平當(dāng)內(nèi)容發(fā)生層疊的時(shí)候,一定會(huì)有一個(gè)前后的層疊順序產(chǎn)生什么是層疊上下文自成一個(gè)小世界。這個(gè)小世界中可能有其他的“層疊結(jié)界”,而自身也可能處于其他“層疊結(jié)界”中什么是層疊水平同一個(gè)層疊上下文中元素在z軸上的顯示順序理解元素的層疊順序元素發(fā)生層疊時(shí)有著特定的垂直顯示順序務(wù)必牢記的層疊準(zhǔn)則 誰大誰上當(dāng)具有明顯的層疊水平標(biāo)識(shí)的時(shí)候,如生效的z-index屬性值,在同一個(gè)層疊上下文領(lǐng)域,層疊水平值大的那一個(gè)覆蓋小的那一個(gè)后來居上當(dāng)元素的層疊水平一致、層疊順序相同的時(shí)候,在DOM流中處于后面的元素會(huì)覆蓋前面的元素深入了解層疊上下文 層疊上下文的特性層疊上下文的層疊水平要比普通元素高
層疊上下文可以阻斷元素的混合模式
層疊上下文可以嵌套,內(nèi)部層疊上下文及其所有子元素均受制于外部的“層疊上下文”
每個(gè)層疊上下文和兄弟元素獨(dú)立,也就是說,當(dāng)進(jìn)行層疊變化或渲染的時(shí)候,只需要考慮后代元素
每個(gè)層疊上下文是自成體系的,當(dāng)元素發(fā)生層疊的時(shí)候,整個(gè)元素被認(rèn)為是在父層疊上下文的層疊順序中
層疊上下文的創(chuàng)建 天生派頁(yè)面根元素天生具有層疊上下文,稱為根層疊上下文。正統(tǒng)派z-index值為數(shù)值的定位元素的傳統(tǒng)“層疊上下文”。擴(kuò)招派position值為relative/absolute以及Firefox/IE瀏覽器(不包括Chrome瀏覽器)下含有position:fixed聲明的定位元素,當(dāng)其z-index值不是auto的時(shí)候,會(huì)創(chuàng)建層疊上下文
其他CSS3屬性元素為flex布局元素(父元素display:flex|inline-flex),同時(shí)z-index值不是auto
元素的opacity值不是1
元素的transform值不是none
元素mix-blend-mode值不是norma
元素的filter值不是none
元素的isolation值是isolate
元素的will-change屬性值為上面2~6的任意一個(gè)(如will-change:opacity、will-chang:transform等)
元素的-webkit-overflow-scrolling設(shè)為touch
層疊上下文與層疊順序如果層疊上下文元素不依賴z-index數(shù)值,則其層疊順序是z-index:auto,可看成z:index:0級(jí)別
如果層疊上下文元素依賴z-index數(shù)值,則其層疊順序由z-index值決定
z-index 負(fù)值深入理解z-index負(fù)值渲染的過程就是一個(gè)尋找第一個(gè)層疊上下文元素的過程,然后層疊順序止步于這個(gè)層疊上下文元素z-index“不犯二”準(zhǔn)則 定位元素一旦設(shè)置了z-index值從普通定位元素變成了層疊上下文元素,相互間的層疊順序就發(fā)生了根本的變化,很容易出現(xiàn)設(shè)置了巨大的z-index值也無法覆蓋其他元素的問題避免z-index“一山比一山高”的樣式混亂問題 line-height 的另外一個(gè)朋友 font-size font-size 和 vertical-align 的隱秘故事line-height的部分類別屬性值是相對(duì)于font-size計(jì)算的,vertical-align百分比值屬性值又是相對(duì)于line-height計(jì)算的理解 font-size 與 ex、 em 和 rem 的關(guān)系font-size值越大,自然ex對(duì)應(yīng)的大小也就大理解 font-size 的關(guān)鍵字屬性值em相對(duì)于當(dāng)前元素,
rem相對(duì)于根元素,本質(zhì)差別在于當(dāng)前元素是多變的,根元素是固定的,也就是說,如果使用rem,我們的計(jì)算值不會(huì)受當(dāng)前元素font-size大小的影響
font-size默認(rèn)值是medium,而medium計(jì)算值僅與瀏覽器設(shè)置有關(guān)font-size:0 與文本的隱藏并不是所有小于12px的font-size都會(huì)被當(dāng)作12px處理,有一個(gè)值例外,那就是0,也就是說,如果font-size:0的字號(hào)表現(xiàn)就是0,那么文字會(huì)直接被隱藏掉,并且只能是font-size:0,哪怕設(shè)置成font-size:0.0000001px,都還是會(huì)被當(dāng)作12px處理的字體屬性家族的大家長(zhǎng) font-family 了解襯線字體和無襯線字體 襯線字體筆畫開始、結(jié)束的地方有額外裝飾而且筆畫的粗細(xì)會(huì)有所不同的字體無襯線字體沒有這些額外的裝飾,而且筆畫的粗細(xì)差不多等寬字體的實(shí)踐價(jià)值font-family:?Consolas, Monaco, monospace;等寬字體與代碼呈現(xiàn)利于代碼呈現(xiàn)ch單位與等寬字體布局ch相關(guān)的字符是0,就是阿拉伯?dāng)?shù)字0;1ch表示一個(gè)0字符的寬度,所以6個(gè)0所占據(jù)的寬度就是6ch字體家族其他成員 貌似粗獷、實(shí)則精細(xì)無比的 font-weight用數(shù)值作為font-weight屬性值,必須是100~900的整百數(shù)font-weight無論是設(shè)置300、400、500還是600,文字的粗細(xì)都沒有任何變化,只有到700的時(shí)候才會(huì)加粗一下因?yàn)槲覀兊南到y(tǒng)里面缺乏對(duì)應(yīng)粗細(xì)的字體具有近似姐妹花屬性值的 font-style italic用當(dāng)前字體的斜體字體oblique單純地讓文字傾斜font 屬性 作為縮寫的 font 屬性font-size和font-family是必需的使用關(guān)鍵字值的 font 屬性使用關(guān)鍵字作為屬性值的時(shí)候必須是獨(dú)立的,不能添加font-family或者font-size之類font 關(guān)鍵字屬性值的應(yīng)用價(jià)值希望非Windows系統(tǒng)下不要使用“微軟雅黑”字體,而是使用其系統(tǒng)字體html { font: menu; } body { font-size: 16px; } html { font: small-caption; } body { font-size: 16px; } html { font: status-bar; } body { font-size: 16px; }讓網(wǎng)頁(yè)的字體跟系統(tǒng)走
真正了解@font face 規(guī)則 @font face 的本質(zhì)是變量@font-face { font-family: "example"; src: url(example.ttf); font-style: normal; font-weight: normal; unicode-range: U+0025-00FF; }font-familyfont-family可以看成是一個(gè)字體變量;src原本系統(tǒng)就有的字體名稱,不能隨便設(shè)置
引入的字體資源可以是系統(tǒng)字體,也可以是外鏈字體
使用系統(tǒng)安裝字體
local()
使用外鏈字體
url()
font-style重置對(duì)應(yīng)字體樣式或字重下該使用什么字體font-weight它定義了不同字重、使用不同字體unicode-range讓特定的字符或者特定范圍的字符使用指定的字體文本的控制 text-indent 與內(nèi)聯(lián)元素縮進(jìn)對(duì)文本進(jìn)行縮進(jìn)控制text-indent的百分比值是相對(duì)于當(dāng)前元素的“包含塊”計(jì)算的,而不是當(dāng)前元素
僅對(duì)第一行內(nèi)聯(lián)盒子內(nèi)容有效
非替換元素以外的display計(jì)算值為inline的內(nèi)聯(lián)元素設(shè)置text-indent值無效,如果計(jì)算值是inline-block/inline-table則會(huì)生
標(biāo)簽按鈕text-indent值無效
和
letter-spacing 與字符間距控制字符之間的間距,這里說的“字符”包括英文字母、漢字以及空格等特性繼承性
默認(rèn)值是normal而不是0
支持負(fù)值,且值足夠大的時(shí)候,會(huì)讓字符形成重疊,甚至反向排列(非IE瀏覽器)
和text-indent屬性一樣,無論值多大或多小,第一行一定會(huì)保留至少一個(gè)字符
支持小數(shù)值,即使0.1px也是支持的,但并不總能看到效果,這與屏幕的密度有關(guān)
暫不支持百分比值
word-spacing 與單詞間距增加空格的間隙寬度;是作用在“空格”上了解 word-break 和 word-wrap 的區(qū)別 word-break是所有的都換行,毫不留情,一點(diǎn)兒空隙都不放過word-wrap如果這一行文字有可以換行的點(diǎn),如空格或CJK(中文/日文/韓文)之類的,就不打英文單詞或字符的主意了,在這些換行點(diǎn)換行,至于對(duì)不對(duì)齊、好不好看則不關(guān)心white-space 與換行和空格的控制 white-space的處理模型如何處理元素內(nèi)的空白字符white-space與最大可用寬度當(dāng)white-space設(shè)置為nowrap的時(shí)候,元素的寬度此時(shí)表現(xiàn)為“最大可用寬度”,換行符和一些空格全部合并,文本一行顯示如何解決 text-decoration 下劃線和文本重疊的問題bordera { text-decoration: none; border-bottom: 1px solid; }了解:first-letter/:first-line偽元素 深入:first-letter偽元素及其實(shí)例 ::first-letter偽元素生效的前提元素的display計(jì)算值必須是 block、inline-block、list-item、display:table和display:flex、table- cell或者table-caption,其他所有display計(jì)算值都沒有用
常見的標(biāo)點(diǎn)符號(hào)、各類括號(hào)和引號(hào)在::first-letter偽元素眼中全部都是“輔助類”字符
·@#%&()()[]【】{}::"“”;;"‘’》《,,.。??!!…、/
查看示例
::first-letter偽元素可以生效的CSS屬性所有字體相關(guān)屬性:font、font-style、font-variant、font-weight、font-size、line-height和font-family
所有背景相關(guān)屬性:background-color、background-image、background- position、background-repeat、background-size和 background-attachment
所有margin相關(guān)屬性:margin、margin-top、margin-right、margin-bottom和margin-left
所有padding相關(guān)屬性:padding、padding-top、padding-right、padding- bottom和padding-left
所有border相關(guān)屬性:縮寫的border、border-style、border-color、border-width和普通書寫的屬性
color屬性
text-decoration、text-transform、letter-spacing、word-spacing(合適情境下)、line-height、float和vertical-align(只有當(dāng)float為none的時(shí)候)等屬性
應(yīng)用電商價(jià)格 符號(hào)添加字體大小
電商產(chǎn)品經(jīng)常會(huì)有價(jià)格,價(jià)格前面一般都有一個(gè)¥符號(hào),這個(gè)符號(hào)字體往往會(huì)比較特殊,字號(hào)也比較大,同時(shí)和文字的數(shù)值有幾像素的距離注意偽元素會(huì)受到影響
p:before { content: "新聞:"; } p:first-letter { color: silver; }故事相對(duì)較少的:first-line偽元素這是新聞的標(biāo)題……
向文本的首行添加特殊樣式生效前提與可以生效的CSS屬性同上 CSS 世界的 background 很單調(diào) 隱藏元素的 background-image 到底加不加載 一個(gè)元素如果display計(jì)算值為none在IE瀏覽器下(IE8~I(xiàn)E11,更高版本不確定)依然會(huì)發(fā)送圖片請(qǐng)求
Firefox瀏覽器不會(huì)
至于Chrome和Safari瀏覽器則似乎更加智能一點(diǎn)
如果隱藏元素同時(shí)又設(shè)置了background-image,則圖片依然會(huì)去加載
如果父元素的display計(jì)算值為none,則背景圖不會(huì)請(qǐng)求,此時(shí)瀏覽器或許放心地認(rèn)為這個(gè)背景圖暫時(shí)是不會(huì)使用的
元素的顯示與隱藏 隱藏實(shí)踐 元素不可見,同時(shí)不占據(jù)空間;輔助設(shè)備無法訪問,同時(shí)不渲染 元素不可見,同時(shí)不占據(jù)空間;輔助設(shè)備無法訪問,但資源有加載,DOM可訪問.dn { display: none; }元素不可見,同時(shí)不占據(jù)空間;輔助設(shè)備無法訪問,但顯隱的時(shí)候可以有transition淡入淡出效果.hidden { position: absolute; visibility: hidden; }元素不可見,不能點(diǎn)擊,輔助設(shè)備無法訪問,但占據(jù)空間保留.vh { visibility: hidden; }元素不可見,不能點(diǎn)擊,不占據(jù)空間,但鍵盤可訪問.clip { position: absolute; clip: rect(0 0 0 0); } .out { position: relative; left: -999em; }元素不可見,不能點(diǎn)擊,但占據(jù)空間,且鍵盤可訪問.lower { position: relative; z-index: -1; }元素不可見,但可以點(diǎn)擊,而且不占據(jù)空間.opacity { position: absolute; opacity: 0; filter: Alpha(opacity=0); }元素看不見,但位置保留,依然可以點(diǎn)可以選.opacity { opacity: 0; filter: Alpha(opacity=0); }display 與元素的顯隱 display:none元素的background-image圖片不加載Firefox瀏覽器下不加載;包括父元素display:none也是如此
Chrome和Safari瀏覽器
父元素display:none,圖片不加載
本身背景圖所在元素隱藏,則圖片依舊會(huì)去加載
對(duì)IE瀏覽器而言,無論怎樣都會(huì)請(qǐng)求圖片資源
display:none元素的image圖片所有瀏覽器下依舊都會(huì)請(qǐng)求圖片資源 一些屬性也是天然display:none hidden類型的輸入框 動(dòng)畫實(shí)現(xiàn)display:none顯隱控制并不會(huì)影響CSS3 animation
會(huì)影響CSS3 transition過渡效果執(zhí)行(transition往往和visibility屬性走得比較近)
visibility 與元素的顯隱 不僅僅是保留空間這么簡(jiǎn)單 visibility的繼承性父元素設(shè)置visibility:hidden,子元素也會(huì)看不見visibility與CSS計(jì)數(shù)器visibility:hidden不會(huì)影響計(jì)數(shù)器的計(jì)數(shù)visibility與transitionCSS3 transition支持的CSS屬性中有visibility,但是并沒有display和 border 形似的 outline 屬性語(yǔ)法和border屬性非常類似,分寬度、類型和顏色,支持的關(guān)鍵字和屬性值與border屬性一模一樣萬萬不可在全局設(shè)置 outline:0 none在默認(rèn)狀態(tài)下,對(duì)處于focus狀態(tài)的元素,瀏覽器會(huì)通過虛框或者外發(fā)光的形式進(jìn)行區(qū)分和提示;
這種虛框或者外發(fā)光效果是非常有必要的,否則用戶根本就不知道自己當(dāng)前聚焦在哪個(gè)元素上,甚至因此而迷失
真正的不占據(jù)空間的 outline 及其應(yīng)用outline屬性確實(shí)不占據(jù)任何空間,輪廓寬度設(shè)置得再寬廣,也不會(huì)影響任何元素的任何布局,并且outline輪廓是可穿透的改變水平流向的 direction direction 簡(jiǎn)介.direction { direction: ltr; // 默認(rèn)值 direction: rtl; }ltr是初始值,表示left-to-right,就是從左往右的意思。目前東亞以及歐美文字書寫就是從左往右的;
rtl表示right-to-left,就是從右往左的意思。阿拉伯語(yǔ)(Arabic)、希伯來語(yǔ)(Hebrew)等的書寫就是從右往左的
應(yīng)用 如何處理這種不同設(shè)備、不同按鈕順序的問題@media screen and (max-width: 480px) { .dialog-footer { direction: rtl; } }改變 CSS 世界縱橫規(guī)則的 writing-mode writing-mode 原本的作用用來實(shí)現(xiàn)文字豎向呈現(xiàn).writing-mode { writing-mode: lr-tb | tb-rl | tb-lr (IE8+); writing-mode: horizontal-tb | vertical-rl | vertical-lr; }writing-mode 不經(jīng)意改變了哪些規(guī)則基于原本水平方向才適用的規(guī)則全部都可以在垂直方向適用普通塊元素可以使用margin:auto實(shí)現(xiàn)垂直居中圖片元素 http://demo.cssworld.cn/12/2-...
普通塊狀元素
水平方向也能margin合并 使用text-align:center實(shí)現(xiàn)圖片垂直居中 使用text-indent實(shí)現(xiàn)文字下沉效果.btn:active { text-indent: 2px; } .verticle-mode { writing-mode: tb-rl; writing-mode: vertical-rl; }查看示例
實(shí)現(xiàn)全兼容的icon fonts圖標(biāo)的旋轉(zhuǎn)效果查看示例
利用高度的高度自適應(yīng)布局當(dāng)文檔變成垂直流的時(shí)候,height高度天然自適應(yīng)writing-mode 和 direction 的關(guān)系 writing-mode改變文檔流為垂直方向direction改變的是垂直方向的內(nèi)聯(lián)元素的文本方向ps:有什么不清楚、錯(cuò)誤,歡迎提出。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/53298.html
相關(guān)文章
《css世界》- 詳細(xì)重點(diǎn)筆記與技巧
摘要:概述在世界這本書中有一些黑魔法給列舉出來,在結(jié)合自己的理解。篇幅有點(diǎn)長(zhǎng),希望大家能夠堅(jiān)持看完,一定會(huì)有收獲以下是摘自每章內(nèi)一些重要的概念與技巧。 概述 在《css世界》這本書中有一些黑魔法給列舉出來,在結(jié)合自己的理解。篇幅有點(diǎn)長(zhǎng),希望大家能夠堅(jiān)持看完,一定會(huì)有收獲!??!以下是摘自每章內(nèi)一些重要的概念與技巧。其中有解決圖片間隙的問題、小圖標(biāo)與文字居中問題等; ps: 特別是 line-h...
JS筆記
摘要:從最開始的到封裝后的都在試圖解決異步編程過程中的問題。為了讓編程更美好,我們就需要引入來降低異步編程的復(fù)雜性。異步編程入門的全稱是前端經(jīng)典面試題從輸入到頁(yè)面加載發(fā)生了什么這是一篇開發(fā)的科普類文章,涉及到優(yōu)化等多個(gè)方面。 TypeScript 入門教程 從 JavaScript 程序員的角度總結(jié)思考,循序漸進(jìn)的理解 TypeScript。 網(wǎng)絡(luò)基礎(chǔ)知識(shí)之 HTTP 協(xié)議 詳細(xì)介紹 HTT...
《CSS世界》筆記四:流的保護(hù)與破壞
摘要:和可以看作是同父異母的兄弟關(guān)系。例子如下結(jié)果如下而父元素設(shè)置屬性的方式則是利用了的特性下面將會(huì)詳細(xì)講解結(jié)界全稱為,中文為塊級(jí)格式化上下文。 上一篇:《CSS世界》筆記三:內(nèi)聯(lián)元素與對(duì)齊下一篇:《CSS世界》筆記五:CSS層疊規(guī)則及元素隱藏 寫在前面 原本博客名為浮動(dòng)與定位,但是《CSS世界》第六章節(jié)的內(nèi)容不僅有浮動(dòng)定位,很大一部分篇幅都在講BFC和overflow。更吸引人的是,作者將...
有價(jià)值的前端技術(shù)點(diǎn)
摘要:借著產(chǎn)品層面的功能和視覺升級(jí),我們用對(duì)它進(jìn)行了一次技術(shù)重構(gòu)。前端優(yōu)化是一個(gè)讓人技術(shù)提升的,希望你也能從這里學(xué)到一些東西。年最流行的前端鏈接我們每周會(huì)給多名前端開發(fā)者發(fā)送新聞郵件。 面試 -- 網(wǎng)絡(luò) HTTP 現(xiàn)在面試門檻越來越高,很多開發(fā)者對(duì)于網(wǎng)絡(luò)知識(shí)這塊了解的不是很多,遇到這些面試題會(huì)手足無措。本篇文章知識(shí)主要集中在 HTTP 這塊。文中知識(shí)來自 《圖解 HTTP》與維基百科,若有錯(cuò)...
發(fā)表評(píng)論
0條評(píng)論
![]()
MasonEast
男|高級(jí)講師
TA的文章
閱讀更多
#雙11#TMWHOST,澳門VPS,66折優(yōu)惠,限量款低至$11.11/季,此外充值最多返20%
閱讀 2099·2021-11-08 13:22
??思維導(dǎo)圖整理大廠面試高頻數(shù)組9: 刪除重復(fù)元素的通解問題, 力扣26/80??
閱讀 2572·2021-09-04 16:40
使用回調(diào)函數(shù)通過冒泡排序模擬實(shí)現(xiàn)qsort函數(shù)
閱讀 1213·2021-09-03 10:29
css3 偽類選擇器快速?gòu)?fù)習(xí)
閱讀 1768·2019-08-30 15:44
個(gè)人公眾號(hào)已開通!
閱讀 2168·2019-08-30 11:13
初識(shí)貝塞爾曲線
閱讀 2856·2019-08-29 17:07
Vue學(xué)習(xí)日記(一)——Vue介紹
閱讀 2027·2019-08-29 14:22
函數(shù)的防抖和節(jié)流
閱讀 1307·2019-08-26 14:00
<閱讀需要支付1元查看