今天读到曹刘阳编写的《编写高质量代码-web前端开发修炼之道》,其中对与css的写法有一种特别好的写法。运用了mvc设计方式,将css代码分为三层,分别是
1.page
2.common
3.base
总共这三层
其中base是最底层,提供了css reset功能和粒度最小的通用类-原子类。base相对稳定,基本不需要维护。
这本书还附了base.css代码。我特地手敲下来供大家分享
/*css reset*/
body,div,dl,dt,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,
textarea,p,blockquote,th,td{margin:0;margin: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}
.f20{font-size: 20px}
.fn{font-weight: bold;}
.t2{text-indent: 2em}
.lh150{line-height: 150%}
.lh180{line-height: 180%}
.lh200{line-height: 200%}
.unl{text-decoration: underline;}
.no_url{text-decoration: none}
/*定位*/
.t1{text-align: left;}
.tc{text-align: center;}
.tr{text-align: right;}
.bc{margin-left: auto;margin-right: auto}
.f1{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}
.w60{width: 60px}
.w70{width: 70px}
.w80{width: 80px}
.w90{width: 90px}
.w100{width: 100px}
.w200{width: 200px}
.w250{width: 250px}
.w300{width: 300px}
.w400{width: 400px}
.w500{width: 500px}
.w600{width: 600px}
.w700{width: 700px}
.w800{width: 800px}
.w{width: 100%}
.h50{height: 50px}
.h80{height: 80px}
.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}
.p10{padding: 10px}
.p15{padding: 15px}
.p30{padding:30px;}
.pt5{padding-top: 5px}
.pt10{padding-top: 10px}
.pt15{padding-top: 15px}
.pt20{padding-top: 20px}
.pt30{padding-top: 30px}
.pt50{padding-top: 50px}
.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}
.pt
第二层的common层提供组件级的css类。使得css模块化,就是mvc中的m模型层,为了保证重用性和灵活性,m层需要尽可能的将内部封装,对可能会经常的变化的部分提供灵活的接口。common层就像门窗,不同的房子所需要的不一样。位置不同但样式相同。
page层是非高度重用的。放在page层。就想房间内的装饰画,不同房间装饰不一样。