《CSS世界》閱讀心得

《CSS世界》是由張鑫旭所寫的一本關于CSS合理使用和奇妙技巧的書,對于CSS的進階很有幫助耳贬。目前只讀了前4章肮疗,本文記錄一下讀書心得:
(1)盒模型和元素的分類
(2)深藏不落的width:auto
(3)外部尺寸與流體特性
(4)內部尺寸與流體特性
(5)為流體而生的min-width/max-height
(6)替換元素
(7)替換元素與非替換元素的距離

(1)盒模型和元素的分類


image.png

a. 塊級元素(block):1.獨占一行践险。 2.大多數具有流動性稀颁。 3.大多數可以手動設置width/height馏谨。
b. 內聯元素(inline):1.不獨占一行别渔。2.大多數具有內聚性。3.大多數不能手動設置width/height惧互。
c. 內聯塊級元素(inline-block): 不獨占一行哎媚,大多數內聚,大多數可手動設置width/height喊儡。

(2)深藏不落的width:auto
a.充分利用可用空間拨与。常見于塊級元素,<div> <p> 這些元素默認為充滿父元素艾猜。(尺寸由外部決定)
b.收縮與包裹买喧。浮動,絕對定位匆赃,inline-block元素或table元素淤毛。(尺寸由內部決定)
c.收縮到最小。
https://demo.cssworld.cn/3/2-1.php

(3)外部尺寸與流體特性
a.正常流寬度

image.png

流動性并非是寬度100%于父容器算柳,而是一種margin/border/padding和content自動分配水平空間的機制低淡。
http://demo.cssworld.cn/3/2-3.php

b.格式化寬度。
出現在絕對定位中埠居。默認情況下查牌,絕對定位的元素的寬度表現為“包裹性”事期,但有一種情況下寬度是由外部尺寸決定:
div { position: absolute; left: 20px; right: 20px; }
假如該元素的具有定位特性的祖先元素寬度是1000滥壕,則該元素寬度為960。格式化寬度也具有流體特性兽泣。

(4)內部尺寸與流體特性
a.元素尺寸由內部元素決定绎橘,但永遠小于“包含塊”容器的尺寸(除非容器尺寸小于元素的“首選最小寬度”)
http://demo.cssworld.cn/3/2-5.php

b. 改變width/height作用細節(jié)的box-sizing
width/height 默認是作用在content-box上


image.png

image.png

{ box-sizing: border - box }
對于普通內聯元素(非圖片等替換元素),box-sizing無論是什么值,對其渲染表現都沒有影響称鳞。
有些元素涮较,如search類型的搜索框,其默認的box-sizing就是border-box(如果瀏覽器支持)冈止。

box - sizing 發(fā)明的初衷
唯一離不開 box - sizing 就是原生普通文本框<input>和文本域 <textarea> 的 100%自適應父容器寬度
替換元素狂票,width:auto的情況下,尺寸由內部元素決定熙暴,無論其display的值是inline還是block闺属。
所以只能通過設置 width: 100%。
在瀏覽器還沒有支持 box - sizing 的年代周霉,是這樣寫的:
http://demo.cssworld.cn/3/2-9.php

上述寫法也有局限性掂器,比如無法使用:focus高亮父級的邊框
box - sizing 被發(fā)明出來最大的初衷應該是解決替換元素的寬度自適應問題,這樣寫也許更合理
input, textarea, img, video, object {
  box-sizing: border-box;
}

(5)為流體而生的min-width/max-width
.container {
  min-width: 1200px;
  max-width: 1400px;
}

img {
  max-width: 100%;
  height: auto!important;
}

超越 !important
<img src="1.jpg" style="width:480px!important;">
img { max-width: 256px; }
超越最大
.container {
  min-width: 1400px;
  max-width: 1200px;
  }

任意高度的展開收起動畫:
.element {
  height: 0;
  overflow: hidden;
  transition: height .25s;
}
.element.active {
  height: auto;  /* 沒有 transition 效果俱箱,只是生硬地展開 */
}

.element {
  max-height: 0;
  overflow: hidden;
  transition: max-height .25s;
}
.element.active {
  max-height: 666px;  /* 一個足夠大的最大高度值 */
}

(6)替換元素
替換元素可以說是CSS世界中的另外一個派系国瓮。
根據元素是否獨占一行把元素分為內聯元素和塊級元素。
更具元素是否具有可替換內容狞谱,可以 把元素分為替換元素和非替換元素乃摹。
<img src=“1.jpg”>
這種通過修改某個屬性值呈現的內容就可以被替換的元素就稱為“替換元素”。因此跟衅,<img>峡懈、<object>、<video>与斤、<iframe>或者表單元素<textarea>和<input>都是典型的替換元素肪康。

替換元素的尺寸計算規(guī)則:固有尺寸,HTML尺寸撩穿,CSS尺寸

固有尺寸就是替換內容原本的尺寸磷支。

HTML尺寸

<img width="300" height="100">
<input type="file" size="30">
<textarea cols="20" rows=“5></textarea>

image.png

img { width: 200px; }
  <img src="1.jpg">

三種尺寸都沒有的情況下,會有默認的固定尺寸食寡, 300 X 150雾狈。
這條規(guī)則<video>,<canvas>,<iframe>都符合,<img>卻例外抵皱。
并且各個瀏覽器給<img>的默認固定尺寸不同善榛。

image.png

image.png

image.png

CSS世界中的替換元素的固有尺寸有一個很重要的特性,那就是我們是無法改變這個替換元素內容的固有尺寸的呻畸。

div:before {

content: url(1.jpg);

display: block;

width: 200px; height: 200px;

}

http://demo.cssworld.cn/4/1-1.php

為什么圖片的固有尺寸不受CSS寬高控制移盆,那為何設定width/height還是會影響到圖片的尺寸?
object-fit: fill none contain cover

(7)替換元素與非替換元素的距離
a.觀點1:替換元素和非替換元素之間只隔一個src屬性
平時使用<img>總是會設置src屬性伤为,如果把src屬性去掉會如何咒循?
img {
  display: block;
  outline: 1px solid;
}
<img>
按照替換元素的尺寸規(guī)則,寬度應該是0,但實際上叙甸,在 Firefox 瀏覽器下颖医,最終的寬度是100%自適應父容器的可用寬度的。其表現和普通的<span>類似裆蒸,已經完全不是替換元素了熔萧。
Chrome 瀏覽器其實也有類似的表現,只是需要特定的條件觸發(fā)而已僚祷,這個觸發(fā)條件就是alt需要有不為空的屬性值哪痰。例如:
<img alt=“任意值">
IE瀏覽器下,<img>會給默認的圖片久妆,所以仍然表現為替換元素

b.觀點2:替換元素和非替換元素之間只隔了一個CSS content屬性
替換元素之所以為替換元素晌杰,就是因為其內容可替換,利用content屬性為元素設置內容(Chrome下筷弦,所有元素都支持conetnt屬性)
前面已經證明了肋演,沒有src屬性的<img>是非替換元素,但是烂琴,如果我們此時使用content屬性給它生成一張圖片呢?
http://demo.cssworld.cn/4/1-3.php

如果圖片原來是有src地址的爹殊,我們也是可以使用content屬性把圖片內容給置換掉的
http://demo.cssworld.cn/4/1-4.php
這種情況下,圖片無法右鍵保存

使用content屬性奸绷,也可以讓普通標簽元素變成替換元素梗夸。
官網標志
<h1>《CSS 世界》</h1>
h1 {

width: 180px;

height: 36px;

background: url(logo.png);

/* 隱藏文字 */

text-indent: -999px;

}

h1 {
   content: url(logo.png);
}

文字被替換,但搜索引擎能抓到
http://demo.cssworld.cn/4/1-5.php

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末号醉,一起剝皮案震驚了整個濱河市反症,隨后出現的幾起案子,更是在濱河造成了極大的恐慌畔派,老刑警劉巖铅碍,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異线椰,居然都是意外死亡胞谈,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門憨愉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來烦绳,“玉大人,你說我怎么就攤上這事配紫【睹埽” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵笨蚁,是天一觀的道長睹晒。 經常有香客問我趟庄,道長括细,這世上最難降的妖魔是什么伪很? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮奋单,結果婚禮上锉试,老公的妹妹穿的比我還像新娘。我一直安慰自己览濒,他們只是感情好呆盖,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贷笛,像睡著了一般应又。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乏苦,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天株扛,我揣著相機與錄音,去河邊找鬼汇荐。 笑死洞就,一個胖子當著我的面吹牛,可吹牛的內容都是我干的掀淘。 我是一名探鬼主播旬蟋,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼革娄!你這毒婦竟也來了倾贰?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拦惋,失蹤者是張志新(化名)和其女友劉穎躁染,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體架忌,經...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡吞彤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了叹放。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片饰恕。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖井仰,靈堂內的尸體忽然破棺而出埋嵌,到底是詐尸還是另有隱情,我是刑警寧澤俱恶,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布雹嗦,位于F島的核電站范舀,受9級特大地震影響,放射性物質發(fā)生泄漏了罪。R本人自食惡果不足惜锭环,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望泊藕。 院中可真熱鬧辅辩,春花似錦、人聲如沸娃圆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽讼呢。三九已至撩鹿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間悦屏,已是汗流浹背节沦。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窜管,地道東北人散劫。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像幕帆,于是被迫代替她去往敵國和親获搏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內容

  • 選擇qi:是表達式 標簽選擇器 類選擇器 屬性選擇器 繼承屬性: color失乾,font常熙,text-align,li...
    love2013閱讀 2,303評論 0 11
  • 本文介紹的是CSS世界中務必了解的專業(yè)術語,包括屬性纽竣、值墓贿、關鍵詞、變量蜓氨、長度單位聋袋、功能符、屬性值穴吹、生命幽勒、聲明塊、規(guī)...
    廣陵周驚蟄閱讀 217評論 0 0
  • 一锈颗、塊級元素 塊級元素是指一個水平留上只能單獨顯示一個元素,多個塊級元素則換行顯示咪惠。 1.1 塊級元素和displ...
    Honwiy閱讀 368評論 0 0
  • H5移動端知識點總結 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,395評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,453評論 0 6