成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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中,標題背景,標題文字,內(nèi)容文字這三個部分的樣式都是相同的, 所以, 我們可以為這個四個區(qū)塊定義一個類名, 將共同的樣式寫給這個類名:

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

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

  1. ...  
  2. <div class="box bg_y"> 
  3.     <h2>倒霉松鼠再出山h2> 
  4.     <p>20世紀福克斯將為賣座動畫片《冰河世紀》(Ice Age內(nèi)地譯做《冰川時代》)再次開拍續(xù)集...p> 
  5. div> 
  6. <div class="box fr right_w"> 
  7.     <h2>倒霉松鼠再出山h2> 
  8.     <p>20世紀福克斯將為賣座動畫片《冰河世紀》(Ice Age內(nèi)地譯做《冰川時代》)再次開拍續(xù)集...p> 
  9. div> 
  10. <div class="box"> 
  11.     <h2>倒霉松鼠再出山h2> 
  12.     <p>20世紀福克斯將為賣座動畫片《冰河世紀》(Ice Age內(nèi)地譯做《冰川時代》)再次開拍續(xù)集...p> 
  13. div> 
  14. <div class="box fr right_w bg_g"> 
  15.     <h2>倒霉松鼠再出山h2> 
  16.     <p>20世紀福克斯將為賣座動畫片《冰河世紀》(Ice Age內(nèi)地譯做《冰川時代》)再次開拍續(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è)務解耦框架

2020-09-17 10:30:21

前端模塊化組件

2013-08-20 15:31:18

前端模塊化

2017-05-18 10:23:55

模塊化開發(fā)RequireJsJavascript

2017-07-11 11:02:03

APP模塊化架構

2015-10-10 11:29:45

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

2022-03-11 13:01:27

前端模塊

2020-09-18 09:02:32

前端模塊化

2018-09-07 23:06:18

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

2018-03-21 21:31:28

Java9編程Java

2022-09-05 09:01:13

前端模塊化

2016-10-09 11:03:41

Javascript模塊化Web

2017-05-18 11:43:41

Android模塊化軟件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美一级电影免费 | av永久| 69热视频在线观看 | 国产精品久久免费观看 | 久久99精品久久久久久国产越南 | 精久久久| 欧美日韩在线成人 | 欧美成人一级视频 | 欧美久久一区二区 | 国产高清在线 | 久久这里只有 | 亚洲精品资源 | 欧美黄色大片在线观看 | 国产精品a久久久久 | 国产一区电影 | 伊人亚洲| 一区二区三区四区国产 | 久久久久久久综合 | 91精品亚洲| 美女天天干天天操 | 欧美日韩中文在线观看 | 久久精品91久久久久久再现 | 超碰在线播 | 欧洲精品视频一区 | 免费国产精品久久久久久 | 麻豆国产一区二区三区四区 | 一级电影免费看 | www国产亚洲精品 | 全免一级毛片 | 超碰电影 | 午夜电影合集 | 日韩久久久一区二区 | 黄网免费| 91最新入口 | 婷婷久久一区 | 日韩欧美在线播放 | 欧美三区| 日韩在线不卡 | 中文字幕亚洲欧美日韩在线不卡 | 成人欧美一区二区三区黑人孕妇 | 日韩在线免费观看视频 |