自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

CSS模塊化編碼 讓開發(fā)事半功倍

開發(fā) 前端
原生Js因jQuery的"write less,do more"變得極簡, Html因語義化編碼變得簡明, 那么, 有沒有一種方式讓Css也更加的高效精致呢? 當然有, 那便是模塊化編碼.

    原生Js因jQuery的"write less,do more"變得極簡, Html因語義化編碼變得簡明, 那么, 有沒有一種方式讓Css也更加的高效精致呢? 當然有, 那便是模塊化編碼.

    Css的模塊化,我們可以理解成(抑或本身就是)OOP思想, 重用性、靈活性、可擴展性便是它終極的目標, "類"便是它的核心, OOP的多用組合少用繼承一樣是它的基本原則. Css模塊化是一個新穎高效的Css編碼方式, 若有接觸過YUI Css的朋友肯定對這種方式有所了解.

     如何Css模塊化, 我想這才是大家真正關心的. 我所理解的Css模塊化, 應該從兩大塊去區(qū)分:

     第一大塊, 從整站全局模塊化. 這一點大家并不陌生, 時常用到的reset css便是模塊化的一部分, 全局通用的字體樣式, 鏈接樣式, 以及通用頭部底部及主體容器等等這些我們已經(jīng)熟知, 另外諸如定義文字排版(如.f12{font-size:12px})、定位(如.tl{text-align:left})、長度高度(如.w10{width:10px})、邊距(如.m10{margin:10px})等頁面中會常用到的樣式,這一類,我們稱之為Css通用原子類(哈,與類扯上關系了,那就權當成類吧).通用原子類有兩個特點: 通用性和原子性, 任何頁面都可以隨意使用它們, 且他們只表現(xiàn)最基礎的樣式, 一個通用原子類只設置一個樣式,不可再分. 關于整站全局模塊化不再詳述, 本文后面我會貼出阿當?shù)摹禬eb前端開發(fā)修煉之道》一書中常用通用原子類樣式.

    第二大塊, 是從視覺效果上模塊化, 在視覺上樣式和功能相對獨立穩(wěn)定的部分即可視為模塊. 拆分這些模塊, 應該盡量遵循一個原則: 模塊與模塊之間盡量不要包含相同的部分, 若有相同部分就再拆出來獨立成一個模塊. 下圖是我畫的一個簡易的頁面視覺圖:

模塊化編碼

  看到上圖, 菜鳥的Css編碼一般是為1~4定義四個類名,為他們寫各自的樣式; 明智一點的寫法是為1~4定義四個類名, 用.a .b .c .d{...}方式定義共同樣式, 然后再為各自定義不同部分的樣式; 但是, 還有一種完美的方式, 那便是模塊化. 下面我就以上圖為例做個簡單的模塊化分析. 第一步, 分析整個視覺共用部分. 可以看出,1~4中,標題背景,標題文字,內容文字這三個部分的樣式都是相同的, 所以, 我們可以為這個四個區(qū)塊定義一個類名, 將共同的樣式寫給這個類名:

  1. ...  
  2. <div class="box"> 
  3.     <h2>倒霉松鼠再出山h2> 
  4.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  5. div> 
  6. <div class="box"> 
  7.     <h2>倒霉松鼠再出山h2> 
  8.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  9. div> 
  10. <DIV class=box> 
  11.     <h2>倒霉松鼠再出山h2> 
  12.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  13. div> 
  14. <div class="box"> 
  15.     <h2>倒霉松鼠再出山h2> 
  16.     <p>20世紀福克斯將為賣座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  17. div> 
  18. ...  
  19. DIV> 

   第二步, 分析出不同部分, 并權衡高效使用. 可以看出, 不同部分, 主要是內容背景色和區(qū)塊寬度兩部分. 先說背景色, 背景色有三種, 淡黃(1個), 白色(2個), 灰色(1個), 遵從"模塊與模塊之間盡量不要包含相同的部分, 若有相同部分就再拆出來獨立成一個模塊"的原則, 我們要把2個白底的樣式提出來, 另兩個單獨定義, 而根據(jù)Css優(yōu)先原則, 我們可以把白底默認定義到第一步中的box樣式中, 另兩種背景色可做重定義處理. 再來看看寬度與定位, 2,4寬度等同且都右浮動, 所以, 我們可以把這部分提出來模塊化, 而浮動一般可以直接調用通用原子類, 所以, 我們僅僅需要定義一個寬度樣式中(若這個寬度在通用原子類中也有就更好了). 如此以來, Html可以這樣寫:

  1. ...  
  2. <div class="box bg_y"> 
  3.     <h2>倒霉松鼠再出山h2> 
  4.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  5. div> 
  6. <div class="box fr right_w"> 
  7.     <h2>倒霉松鼠再出山h2> 
  8.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  9. div> 
  10. <div class="box"> 
  11.     <h2>倒霉松鼠再出山h2> 
  12.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  13. div> 
  14. <div class="box fr right_w bg_g"> 
  15.     <h2>倒霉松鼠再出山h2> 
  16.     <p>20世紀??怂箤橘u座動畫片《冰河世紀》(Ice Age內地譯做《冰川時代》)再次開拍續(xù)集...p> 
  17. div> 
  18. ... 

   或許, 這樣的結構對Html頁面來說, 會顯的有些臃腫, 但Css文件因為重用性的提高而大大的減小了. Css模塊化是一個比較實用但也需要去領悟的思想, 實際使用中也需要全面的分析, 過多的模塊也會導致維護性的降低, 如同OOP編程一樣, 我們也要考慮"公有屬性"與"私有屬性". 本文通過一個簡單的例子解析了Css模塊化的基本思想, 更多關于Css模塊化的知識, 可以看YUI Css或者其他網(wǎng)絡上的資源. do write, less more...Css也可以做到. 附: 阿當《Web前端開發(fā)修煉之道》一書中分享的通用原子類:

  1. /*文字排版*/  
  2. .f12{font-size:12px}  
  3. .f13{font-size:13px}  
  4. .f14{font-size:14px}  
  5. .f16{font-size:16px}  
  6. .f20{font-size:20px}  
  7. .fb{font-weight:bold}  
  8. .fn{font-weight:normal}  
  9. .t2{text-indent:2em}  
  10. .lh150{line-height:150%}  
  11. .lh180{line-height:180%}  
  12. .lh200{line-height:200%}  
  13. .unl{text-decoration:underline;}  
  14. .no_unl{text-decoration:none;}  
  15. /*定位*/  
  16. .tl{text-align:left}  
  17. .tc{text-align:center}  
  18. .tr{text-align:right}  
  19. .bc{margin-left:auto;margin-right:auto;}  
  20. .fl{float:left;display:inline}  
  21. .fr{float:right;display:inline}  
  22. .cb{clear:both}  
  23. .cl{clear:left}  
  24. .cr{clear:right}  
  25. .clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}  
  26. .clearfix{display:inline-block}* html .clearfix{height:1%}.clearfix{display:block}  
  27. .vm{vertical-align:middle}  
  28. .pr{position:relative}  
  29. .pa{position:absolute}  
  30. .abs-right{position:absolute;right:0}  
  31. .zoom{zoom:1}  
  32. .hidden{visibility:hidden}  
  33. .none{display:none}  
  34. /*長度高度*/  
  35. .w10{width:10px}  
  36. .w20{width:20px}  
  37. .w30{width:30px}  
  38. .w40{width:40px}  
  39. .w50{width:50px}  
  40. .w60{width:60px}  
  41. .w70{width:70px}  
  42. .w80{width:80px}  
  43. .w90{width:90px}  
  44. .w100{width:100px}  
  45. .w200{width:200px}  
  46. .w250{width:250px}  
  47. .w300{width:300px}  
  48. .w400{width:400px}  
  49. .w500{width:500px}  
  50. .w600{width:600px}  
  51. .w700{width:700px}  
  52. .w800{width:800px}  
  53. .w{width:100%}  
  54. .h50{height:50px}  
  55. .h80{height:80px}  
  56. .h100{height:100px}  
  57. .h200{height:200px}  
  58. .h{height:100%}  
  59. /*邊距*/  
  60. .m10{margin:10px}  
  61. .m15{margin:15px}  
  62. .m30{margin:30px}  
  63. .mt5{margin-top:5px}  
  64. .mt10{margin-top:10px}  
  65. .mt15{margin-top:15px}  
  66. .mt20{margin-top:20px}  
  67. .mt30{margin-top:30px}  
  68. .mt50{margin-top:50px}  
  69. .mt100{margin-top:100px}  
  70. .mb10{margin-bottom:10px}  
  71. .mb15{margin-bottom:15px}  
  72. .mb20{margin-bottom:20px}  
  73. .mb30{margin-bottom:30px}  
  74. .mb50{margin-bottom:50px}  
  75. .mb100{margin-bottom:100px}  
  76. .ml5{margin-left:5px}  
  77. .ml10{margin-left:10px}  
  78. .ml15{margin-left:15px}  
  79. .ml20{margin-left:20px}  
  80. .ml30{margin-left:30px}  
  81. .ml50{margin-left:50px}  
  82. .ml100{margin-left:100px}  
  83. .mr5{margin-right:5px}  
  84. .mr10{margin-right:10px}  
  85. .mr15{margin-right:15px}  
  86. .mr20{margin-right:20px}  
  87. .mr30{margin-right:30px}  
  88. .mr50{margin-right:50px}  
  89. .mr100{margin-right:100px}  
  90. .p10{padding:10px;}  
  91. .p15{padding:15px;}  
  92. .p30{padding:30px;}  
  93. .pt5{padding-top:5px}  
  94. .pt10{padding-top:10px}  
  95. .pt15{padding-top:15px}  
  96. .pt20{padding-top:20px}  
  97. .pt30{padding-top:30px}  
  98. .pt50{padding-top:50px}  
  99. .pb5{padding-bottom:5px}  
  100. .pb10{padding-bottom:10px}  
  101. .pb15{padding-bottom:15px}  
  102. .pb20{padding-bottom:20px}  
  103. .pb30{padding-bottom:30px}  
  104. .pb50{padding-bottom:50px}  
  105. .pb100{padding-bottom:100px}  
  106. .pl5{padding-left:5px}  
  107. .pl10{padding-left:10px}  
  108. .pl15{padding-left:15px}  
  109. .pl20{padding-left:20px}  
  110. .pl30{padding-left:30px}  
  111. .pl50{padding-left:50px}  
  112. .pl100{padding-left:100px}  
  113. .pr5{padding-right:5px}  
  114. .pr10{padding-right:10px}  
  115. .pr15{padding-right:15px}  
  116. .pr20{padding-right:20px}  
  117. .pr30{padding-right:30px}  
  118. .pr50{padding-right:50px}  
  119. .pr100{padding-right:100px} 

 【編輯推薦】

  1. 使用CSS樣式化HTML 5
  2. 用CSS 3將你的設計水平帶入下個高度
  3. Javascript中CSS屬性float特殊寫法
責任編輯:陳貽新 來源: Mr.Think
相關推薦

2013-08-20 18:18:55

CSS模塊化Normalize.c

2024-01-25 09:00:00

DevOps人工智能

2022-09-02 08:00:00

CSS開發(fā)框架

2016-12-14 14:50:26

CSS預處理語言模塊化實踐

2019-08-28 16:18:39

JavaScriptJS前端

2010-08-02 09:10:36

Flex模塊化

2017-02-13 18:46:38

Android模塊化組件化

2024-11-21 16:37:30

客戶端業(yè)務解耦框架

2013-08-20 15:31:18

前端模塊化

2017-05-18 10:23:55

模塊化開發(fā)RequireJsJavascript

2020-09-17 10:30:21

前端模塊化組件

2017-07-11 11:02:03

APP模塊化架構

2015-10-10 11:29:45

Java模塊化系統(tǒng)初探

2020-09-18 09:02:32

前端模塊化

2022-03-11 13:01:27

前端模塊

2018-09-07 23:06:18

量子計算機架構開發(fā)

2018-03-21 21:31:28

Java9編程Java

2022-09-05 09:01:13

前端模塊化

2018-06-21 09:36:09

模塊化數(shù)據(jù)中心集中化

2019-09-02 10:51:59

Python腳本語言程序員
點贊
收藏

51CTO技術棧公眾號