开发者社区> 问答> 正文

CSS问题:请问如何做到CSS样式能够尽量的重用?

在下前端初学者,最近再模仿一些简单的页面。我发现页面中很多部分的HTML结构、CSS样式都有重复的地方,可以写出1条来,以便复制重用。

问题是,如何在class命名和写CSS样式的时候,能够做到尽量的重用呢?

我想到的一个方法,有点啰嗦,就是把各个CSS样式分开来写。这样以后如果遇到CSS样式相同的,就可直接用了。

比如,一个页面布局用的div,宽1000px,高300px,有一个下边框,相对定位。

HTML部分:

<div class="wrap-1000x300 positionR borderB"></div>

CSS部分:

.wrap-1000x300{
    width:1000px;height:300px;
}
.positionR{
    position:relative;left:0;top:0;    
}
.borderB{
    border-bottom:1px solid #ccc;
}

但是我感觉我这个方法有些太过于繁琐了,而且一个HTML元素加好几个class,请问各位朋友有什么好样式写法吗?谢谢!

展开
收起
杨冬芳 2016-06-03 15:52:43 2329 0
1 条回答
写回答
取消 提交回答
  • IT从业

    保证复用一直是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;}

    /--如果是小型页面或者日常自己编写练手的复用--/
    根据具体页面情况判定,原则是固有属性复用,灵活属性抽出,在加多个class与尽量复用之间找个平衡

    2019-07-17 19:26:45
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
零基础CSS入门教程 立即下载
JS 语言在引擎级别的执行过程 立即下载
低代码开发师(初级)实战教程 立即下载