《精通CSS:高級Web標准解決方案》學習筆記(上)


  鑒於國產CSS書籍基本都是辣雞的現狀,我在半年前動用某工作室的購書資金采購了一些技術書籍,這本廣受好評的《精通CSS》也在其中。但是在閱讀過后我深深的感覺到,如果說CSS本來已經是一種很瑣碎的布局知識集合的話,那這本書只能說是更加瑣碎了,因為這只是一本純純的經驗分享。而且隨着前端技術的快速發展,明顯能感覺到,這本書里的很多內容已經過時了。所以,雖然我寫了筆記,但是仍然強烈不推薦把這本書當作是CSS聖經,而應該作為一本床頭讀物(不過我相信你不會的,因為它太無聊了)。

  看完以后我最大的感慨是——果然還是MDN靠譜

 

  至於我為什么克服了拖延症來寫寫讀書筆記,因為我退出了工作室,要還書了【doge】

  此篇筆記根據《精通CSS:高級Web標准解決方案》1~3章內容整理。

——————————————————————————————————

 

1、命名id和class時,一定要名稱與表現方式無關。盡可能與功能或內容相關(語義化思想)

 

2、id和class名區分大小寫

 

3、div是有語義的,代表部分(division),所以並不需要任何結構都是用div,例如:

1 <div class="nav">
2     <ul>
3         <li><a href="/home">home</a></li>
4         <li><a href="/about">about</a></li>
5         <li><a href="/contact">contact</a></li>
6         <li></li>
7     </ul>
8 </div>

  完全可以寫成:

1     <ul class="nav">
2         <li><a href="/home">home</a></li>
3         <li><a href="/about">about</a></li>
4         <li><a href="/contact">contact</a></li>
5         <li></li>
6     </ul>

 

4、后代選擇器選擇一個元素所有后代,子選擇器(>)只選擇元素的直接后代

 

5、相鄰同胞選擇器(+)用於定位同一個父元素下某元素之后的元素

 

6、導入樣式表

@import url("/css/layout.css")

速度慢於鏈接樣式表

<link href="/css/layout.css" rel="stylesheet" type="text/css" />

 

7、瀏覽器同時只能從一個域下載有限數量的文件,老式瀏覽器2個,現代瀏覽器4-8個(所以這正是我們使用CDN的原因之一)。所以結構良好的單一CSS文件可以顯著提高下載速度。

 

8、改進型的注釋。

/* @group news styles
-------------------------------------------------------
*/

方便你找到它。

 

9、盒模型分為兩種。W3C標准盒模型和IE奇葩型。

兩者的主要區別在於,IE盒模型中的padding是在height和width所划定的區域內的,而W3C標准盒模型中padding是在height和width之外的。

另:background可以影響的部分包括height和width區域,也包括padding

 

10、盒模型外邊距疊加原則:

  ①外邊距高度為兩者中較大者

  ②元素的頂外邊距和其父元素頂外邊距也會疊加

  ③無內容的盒子,外邊距也會疊加,形成一個矩形

  ④外邊距疊加只發生在普通文檔流的塊級元素的垂直外邊距上,行內元素、浮動元素、絕對定位元素不存在外邊距疊加

 

11、塊級元素有p、h1、div、ul等,其余為行內元素

 

12、行內元素可以由水平padding、border、margin調整水平間距,然而垂直padding、border、margin不影響行內元素高度。行內元素高度總是足以容納它包含的所有行內元素。修改行內元素高度的唯一方法是修改行高(line-height)

另:單行文字時,可以使用line-height進行垂直居中

 

13、當display屬性為inline-block時,元素會像行內元素一樣水平依次排列,然而仍然使用塊級元素的盒模型

 

14、相對定位(元素仍位於普通文檔流)

1 #news{
2     position:relative;
3     left:20px;    //遠離左邊20px       
4     top:20px;     //遠離上方20px
5 }

元素仍會占據原來的空間,移動后可能會對其他元素產生覆蓋。相對移動的起始位置為原位置。

 

15、絕對定位(元素與普通文檔流無關)

1 #news{
2     position:absolute;
3     left:20px;
4     top:20px;
5     z-index:2;
6 }

因為絕對定位與普通文檔流無關,所以不占據空間。普通文檔流中的其他元素布局就像絕對定位元素不存在一樣。

絕對定位起始位置由距離它最近的已定位的父元素決定。

z-index值越大,元素在棧中位置越高

 

16、固定定位

position:fixed;

是絕對定位的一種,差異在於其參照物不是document,而是screen

 

17、浮動

浮動元素不在普通文檔流中,所以普通文檔流中的其他元素布局就像浮動元素不存在一樣。

普通文檔流中的文字內容會受浮動元素影響,產生文字圍繞浮動元素效果。

 

18、浮動元素的清理方法

  ①clear:left/right/both;

  ②浮動所有元素

  ③overflow:auto/hidden; 但是某些情況下會產生滾動條或截斷。

  ④使用:after偽類(p52)

1 .clear:after{
2     content:".";
3     height:0;
4     visibility:hidden;
5     display:block;
6     clear:both;
7 }

  將類名clear添加到要清楚的元素類名中去

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM