怎麼提高CSS的複用性
在做專案時,能把自己寫的東西帶走,隨時隨地可用在另一個專案中,是做專案最大的收穫。所以提高CSS的複用性非常重要,我們可以自己寫框架。
如果是大型網站,那就需要一個比較好的組織結構,比如這種base.css+common.css+page.css組織方式:
1.base提供最底層的、功能和粒度最小的的通用類樣式,可以被所有頁面引用,力求精簡和通用;
2.common則是樓上提到的模組化元件,即將功能相對獨立的劃分為模組,重複次數多的模組劃分為元件,提取到common層,這一層需要儘可能實現封裝,對可能經常變化的部分提供靈活的介面;
3.page是頁面級別的樣式表,提供各頁面獨有的樣式,可以再根據需求細分如page-index.css,page-connect.css
這樣做的好處是
1.比較利於維護
2.元件複用率高,修改起來比較輕鬆
3.程式碼精簡,減少冗餘。
以下是一段base.css示例。
/*css reset*/
body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin: 0;padding: 0;}
table{border-collapse:collapse;border-spacing:0;}
fieldset,img{border:0;}
address,caption ,cite,code,dfn,em,strong,th,var{font-style: normal;font-weight: normal;}
ol,ul{list-style: none;}
caption,th{text-align:left;}
h1,h2,h3,h4,h5,h6{font-size: 100%;font-weight: normal;}
q:before,q:after{content:'';}
abbr,acronym{ border:0;}
/*文字排版*/
.f12{font-size: 12px;}
.f13{font-size: 13px;}
.f14{font-size : 14px;}
.f16{font-size: 16px;}
.fb{font-weight: bold;}
.fn{font-weight: normal;}
.t2{text-indent: 2em;}
.lh150{line-height:150%;}
.lh180{line-height:180%;}
.lh200{line-height:200%;}
.unl{text-decoration: underline;}
.no_unl{text-decoration: none;}
/*定位*/
.tl{text-align: left;}
.tc{text-align: center;}
.tr{text-align: right;}
.bc{margin-left: auto;margin-right: auto;}
.fl{float: left;display:inline;}
.fr{float: right;display:inline;}
.cb{clear:both;}
.cl{clear: left;}
.cr{clear: right;}
.clearfix:after{content: '.';display:block;height: 0;clear: both;visibility: hidden;}
.clearfix{display:inline-block}*html
.clearfix{height: 1%}.Clearfix{display: block;}
.vm{vertical-align: middle;}
.pr{position: relative;}
.pa{position: absolute;}
abs-right{position: absolute;right: 0;}
.zoom{zoom:1;}
.hidden{visibility: hidden;}
.none{display: none}
/*長度高度*/
.w10{width: 10px;}
.w20{width: 20px;}
.w30{width: 30px;}
.w40{width: 40px;}
.w50{width: 50px;}
.w70{width: 70px;}
.w90{width: 90px;}
.w100{width: 100px;}
.w300{width: 300px;}
.w500{width: 500px;}
.w600{width: 600px;}
.w700{width: 700px;}
.w800{width: 800px;}
.w{width: 100%;}
.h50{height: 50px;}
.h100{height: 100px;}
.h200{height: 200px;}
.h{height: 100%;}
/*編劇*/
.m10{margin:10px;}
.m15{margin:15px;}
.m30{margin:30px;}
.mt5{margin-top:5px;}
.mt10{margin-top:10px;}
.mt15{margin-top:15px;}
.mt20{margin-top:20px;}
.mt30{margin-top:30px;}
.mt50{margin-top:50px;}
.mt100{margin-top:100px;}
.mb5{margin-bottom: 5px;}
.mb10{margin-bottom: 10px;}
.mb15{margin-bottom: 15px;}
.mb20{margin-bottom: 20px;}
.mb30{margin-bottom: 30px;}
.mb50{margin-bottom: 50px;}
.mb100{margin-bottom: 100px;}
.ml5{margin-left: 5px;}
.ml10{margin-left: 10px;}
.ml15{margin-left: 15px;}
.ml20{margin-left: 20px;}
.ml30{margin-left: 30px;}
.ml50{margin-left: 50px;}
.ml100{margin-left: 100px;}
.mr5{margin-right: 5px;}
.mr10{margin-right:10px;}
.mr15{margin-right: 15px;}
.mr20{margin-right: 20px;}
.mr30{margin-right: 30px;}
.mr50{margin-right: 50px;}
.mr100{margin-right: 100px;}
.p5{padding: 5px;}
.p10{padding:10px;}
.p15{padding: 15px;}
.p20{padding: 20px;}
.p30{padding: 30px;}
.p50{padding: 50px;}
.p100{padding: 100px;}
.pt5{padding-top: 5px;}
.pt10{padding-top:10px;}
.pt15{padding-top: 15px;}
.pt20{padding-top: 20px;}
.pt30{padding-top: 30px;}
.pt50{padding-top: 50px;}
.pt100{padding-top: 100px;}
.pb5{padding-bottom: 5px;}
.pb10{padding-bottom:10px;}
.pb15{padding-bottom: 15px;}
.pb20{padding-bottom: 20px;}
.pb30{padding-bottom: 30px;}
.pb50{padding-bottom: 50px;}
.pb100{padding-bottom: 100px;}
.pl5{padding-left: 5px;}
.pl10{padding-left:10px;}
.pl15{padding-left: 15px;}
.pl20{padding-left: 20px;}
.pl30{padding-left: 30px;}
.pl50{padding-left: 50px;}
.pl100{padding-left: 100px;}
.pr5{padding-right: 5px;}
.pr10{padding-right:10px;}
.pr15{padding-right: 15px;}
.pr20{padding-right: 20px;}
.pr30{padding-right: 30px;}
.pr50{padding-right: 50px;}
.pr100{padding-right: 100px;}
建議:
1.在做CSS專案規劃時,首先寫好css reset類程式碼,因為瀏覽器對於標籤是有預設樣式的。具體程式碼可參考上述程式碼。
2.劃分CSS原子類。一個大型的專案,會有一些常用的css規則,比如text-align,float,border,positon等有可能出現十幾次,幾十次。。加入我們已經在專案開始的時候就已經定義好了我們的css原子類,那麼在需要左浮動的元素上只需要引入.fl的class就可以了。但是,當一個元素引入的css原子類多起來的時候,那麼這個元素的class的值也會快速膨脹起來,class屬性值最好不要超過5個,當過多時,我們可以考慮css模組化。
3.把專案中可複用的元件模組化,比如button,input,單獨放在common元件檔案裡,既能保持網站風格的統一,又便於後期複用和維護。