zoukankan      html  css  js  c++  java
  • 模块化css技巧

    1.扩展

    通用模块是不需要写margin的。如果要做好几种格式的宽度,该怎么办?

    html:

    <div class="baseMod"></div>

    css:

    .baseMod{color:#333;line-height:1.5;padding:10px;background:#f00;}

    a.

    在需要的html结构中给body设置类型。假如有类型1,2,3,4...,设置type1,type2,type3,type4.

    则,<body class="type1"></body>...省略n字

    在css中要这么干:

    .type1 .baseMod{width:300px;}
    .type2 .baseMod{width:400px;}
    .type3 .baseMod{width:500px;}

    b.

    把宽度写在全局css中.

    .w300{width:300px;}
    .w400{width:400px;}
    .w500{width:500px;}

    然后在结构中这么干:

    <div class="baseMod w300"></div>
    <div class="baseMod w400"></div>
    <div class="baseMod w500"></div>

    c.

    定义局部样式,.type1,.type2,.type3{...}

    然后结构中这么干:

    <div class="baseMod type1"></div>
    <div class="baseMod type2"></div>
    <div class="baseMod type3"></div>

    可能有人会觉得b,c没有什么差别,基本是一个方法。没错,我也这么觉得。但是差异还是有的。一方面是css作用域的差异,另一方面是css面向对象(type1,type2,type3就属于具体的模块类型名,baseMod只是一个通用的基类)和面向属性(只是针对宽度的写法,w300,w400,w500,想给哪里用,就给哪里用,但是不一定能成功,你懂的)的差异。b,c方法的好坏,下一个问题将会阐述。

    2.重写和扩展

    css重写就是把继承或者已有的某个样式规则给干掉,重新换上另一种样式声明。比如,

    html:

    <div class="baseMod type1"></div>

    css:

    .type1{color:#666;}

    type1模块就把已有的样式color:#333;给干掉了,因为在css权重一致的情况下,.type1的声明在.baseMod声明之后。

    好第二个问题就是重写和扩展。我的意思是这样:

    a.

    .type1{color:#666;background:#fefefe;width:300px;}
    .type2{color:#777;background:#efefef;width:400px;}
    .type3{color:#888;background:#ccc;width:500px;}

    再这样:

    <div class="baseMod type1"></div>

    而不是这样:

    b.

    .color666{color:#666;}
    .w300{width:300px;}
    .bgfefefe{background:#fefefe;}

    ...其它省略

    然后再这样

    <div class="baseMod color666 w300 bgfefefe "></div>

    (太傻比了)

    所以,在这个问题下b做法(原子类css拼合)就容易使得结构臃肿了,而且修改起来十分麻烦,需要针对结构去动,还要改动css,而第二种方法修改的只是css,不需要动结构.

    因此,在这里,第一个扩展的问题,b,c哪两种方法好,就有答案了,结论如下:

    • 通用模块只存在扩展,并且扩展的可能性(比如以宽度规格来说,有10种)有n多种(n>=3),采用a做法,即面向对象的命名方式.
    • 通用模块存在扩展和重写,采用a做法,即面向对象的命名方式.
    • 通用模块只存在扩展,并且扩展的可能性(比如以宽度规格来说,有3种)有n多种(n<=3),采用a做法,即面向属性的命名方式

    结语:从语义化的角度来看,原子类的使用是不恰当的,请规避。

  • 相关阅读:
    python 汇总
    python 异常处理、文件常用操作
    python类中super()和__init__()的区别
    百度搜索结果爬虫
    BS4爬虫实例应用-CISP
    Java类WebServer及中间件拿webshell方法总结
    建模分析之机器学习算法(附python&R代码)
    [原创]代理转发工具汇总分析
    代码审计之文件操作
    PHP自带防SQL攻击函数区别
  • 原文地址:https://www.cnblogs.com/my_front_research/p/2283425.html
Copyright © 2011-2022 走看看