zoukankan      html  css  js  c++  java
  • CSS规范

    一、分类方法

    CSS文件的分类和引用顺序

    通常,一个项目我们只引用一个CSS,但是对于较大的项目,我们需要把CSS文件进行分类。

    我们按照CSS的性质和用途,将CSS文件分成“公共型样式”、“特殊型样式”、“皮肤型样式”,并以此顺序引用(按需求决定是否添加版本号)。

    1. 公共型样式:包括了以下几个部分:“标签的重置和设置默认值”、“统一调用背景图和清除浮动或其他需统一处理的长样式”、“网站通用布局”、“通用模块和其扩展”、“元件和其扩展”、“功能类样式”、“皮肤类样式”。
    2. 特殊型样式:当某个栏目或页面的样式与网站整体差异较大或者维护率较高时,可以独立引用一个样式:“特殊的布局、模块和元件及扩展”、“特殊的功能、颜色和背景”,也可以是某个大型控件或模块的独立样式。
    3. 皮肤型样式:如果产品需要换肤功能,那么我们需要将颜色、背景等抽离出来放在这里。
    1 <link href="assets/css/global.css" rel="stylesheet" type="text/css"/>
    2 <link href="assets/css/index.css" rel="stylesheet" type="text/css"/>
    3 <link href="assets/css/skin.css" rel="stylesheet" type="text/css"/>

    CSS内部的分类及其顺序

    1. 重置(reset)和默认(base)(tags):消除默认样式和浏览器差异,并设置部分标签的初始样式,以减少后面的重复劳动!你可以根据你的网站需求设置!
    2. 统一处理:建议在这个位置统一调用背景图(这里指多个布局或模块或元件共用的图)和清除浮动(这里指通用性较高的布局、模块、元件内的清除)等统一设置处理的样式!
    3. 布局(grid)(.g-):将页面分割为几个大块,通常有头部、主体、主栏、侧栏、尾部等!
    4. 模块(module)(.m-):通常是一个语义化的可以重复使用的较大的整体!比如导航、登录、注册、各种列表、评论、搜索等!
    5. 元件(unit)(.u-):通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块中!比如按钮、输入框、loading、图标等!
    6. 功能(function)(.f-):为方便一些常用样式的使用,我们将这些使用率较高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清除浮动等!不可滥用!
    7. 皮肤(skin)(.s-):如果你需要把皮肤型的样式抽离出来,通常为文字色、背景色(图)、边框色等,非换肤型网站通常只提取文字色!非换肤型网站不可滥用此类!
    8. 状态(.z-):为状态类样式加入前缀,统一标识,方便识别,她只能组合使用或作为后代出现(.u-ipt.z-dis{},.m-list li.z-sel{}),具体详见命名规则的扩展相关项。
    9. 功能类和皮肤类样式为表现化的样式,请不要滥用!以上顺序可以按需求适当调整。以上分类的命名方法详见命名规则
       1 /* 重置 */
       2 div,p,ul,ol,li{margin:0;padding:0;}
       3 /* 默认 */
       4 strong,em{font-style:normal;font-weight:bold;}
       5 /* 统一调用背景图 */
       6 .m-logo a,.m-nav a,.m-nav em{background:url(images/sprite.png) no-repeat 9999px 9999px;}
       7 /* 统一清除浮动 */
       8 .g-bdc:after,.m-dimg ul:after,.u-tab:after{display:block;visibility:hidden;clear:both;height:0;overflow:hidden;content:'.';}
       9 .g-bdc,.m-dimg ul,.u-tab{zoom:1;}
      10 /* 布局 */
      11 .g-sd{float:left;width:300px;}
      12 /* 模块 */
      13 .m-logo{width:200px;height:50px;}
      14 /* 元件 */
      15 .u-btn{height:20px;border:1px solid #333;}
      16 /* 功能 */
      17 .f-tac{text-align:center;}
      18 /* 皮肤 */
      19 .s-fc,a.s-fc:hover{color:#fff;}

     二、命名规则

    使用类选择器,放弃ID选择器

    ID在一个页面中的唯一性导致了如果以ID为选择器来写CSS,就无法重用。

    NEC特殊字符:"-"连字符

    "-"在本规范中并不表示连字符的含义。

    她只表示两种含义:分类前缀分隔符、扩展分隔符,详见以下具体规则。

    分类的命名方法:使用单个字母+"-"为前缀

    布局(grid)(.g-);模块(module)(.m-);元件(unit)(.u-);功能(function)(.f-);皮肤(skin)(.s-);状态(.z-)。

    对以上的解释详情参见:分类方法中的“CSS内部的分类及其顺序”。

    注:在你样式中的选择器总是要以上面前五类开头,然后在里面使用后代选择器。

      如果这五类不能满足你的需求,你可以另外定义一个或多个大类,但必须符合单个字母+"-"为前缀的命名规则,即 .x- 的格式。

      特殊:.j-将被专用于JS获取节点,请勿使用.j-定义样式。

    后代选择器命名

    • 约定不以单个字母+"-"为前缀且长度大于等于2的类选择器为后代选择器,如:.item为m-list模块里的每一个项,.text为m-list模块里的文本部分:.m-list .item{}.m-list .text{}。
    • 一个语义化的标签也可以是后代选择器,比如:.m-list li{}。
    • 不允许单个字母的类选择器出现,原因详见下面的“模块和元件的后代选择器的扩展类”。

    通过使用后代选择器的方法,你不需要考虑他的命名是否已被使用,因为他只在当前模块或元件中生效,同样的样式名可以在不同的模块或元件中重复使用,互不干扰;在多人协作或者分模块协作的时候效果尤为明显!

    后代选择器不需要完整表现结构树层级,尽量能短则短。

    注:后代选择器不要在页面布局中使用,因为污染的可能性较大;

    /* 这里的.itm和.cnt只在.m-list中有效 */
    .m-list{margin:0;padding:0;}
    .m-list .itm{margin:1px;padding:1px;}
    .m-list .cnt{margin-left:100px;}
    /* 这里的.cnt和.num只在.m-page中有效 */
    .m-page{height:20px;}
    .m-page .cnt{text-align:center;}
    .m-page .num{border:1px solid #ddd;}

     命名应简约而不失语义

    /* 反对:表现化的或没有语义的命名 */
    .m-abc .green2{}
    .g-left2{}
    /* 推荐:使用有语义的简短的命名 */
    .m-list .wrap2{}
    .g-side2{}

    相同语义的不同类命名

    方法:直接加数字或字母区分即可(如:.m-list、.m-list2、.m-list3等,都是列表模块,但是是完全不一样的模块)。

    其他举例:.f-fw0、.f-fw1、.s-fc0、.s-fc1、.m-logo2、.m-logo3、u-btn、u-btn2等等。

    模块和元件的扩展类的命名方法

    当A、B、C、...它们类型相同且外形相似区别不大,那么就以它们中出现率最高的做成基类,其他做成基类的扩展。

    方法:+“-”+数字或字母(如:.m-list的扩展类为.m-list-1、.m-list-2等)。

    补充:基类自身可以独立使用(如:class="m-list"即可),扩展类必须基于基类使用(如:class="m-list m-list-2")。

    如果你的扩展类是表示不同状态,那么你可以这样命名:u-btn-dis,u-btn-hov,m-box-sel,m-box-hov等等,然后像这样使用:class="u-btn u-btn-dis"。

    如果你的网站可以不兼容IE6等浏览器,那么你标识状态的方法也可以采取独立状态分类(.z-)方法:.u-btn.z-dis,.m-box.z-sel,然后像这样使用:class="u-btn z-dis"。

    模块和元件的后代选择器的扩展类

    有时候模块内会有些类似的东西,如果你没有把它们做成元件和扩展,那么也可以使用后代选择器和扩展。

    后代选择器:.m-login .btn{}。

    后代选择器扩展:.m-login .btn-1{},.m-login .btn-dis{}。

    同样也可以采取独立状态分类(.z-)方法:.m-login .btn.z-dis{},然后像这样使用:class="btn z-dis"。

    注:此方法用于类选择器,直接使用标签做为选择器的则不需要使用此命名方法。

    注:为防止后代选择器的扩展类和大类命名规范冲突,后代选择器不允许使用单个字母。

      比如:.m-list .a{}是不允许的,因为当这个.a需要扩展的时候就会变成.a-bb,这样就和大类的命名规范冲突。

    分组选择器有时可以代替扩展方法

    有时候虽然两个同类型的模块很相似,但是你希望他们之间不要有依赖关系,也就是说你不希望使用扩展的方法,那么你可以通过合并选择器来设置共性的样式。

    使用本方法的前提是:相同类型、功能和外观都相似,写在同一片代码区域方便维护。

    /* 两个元件共性的样式 */
    .u-tip1,.u-tip2{}
    .u-tip1 .itm,.u-tip2 .itm{}
    /* 在分别是两个元件各自的样式 */
    /* tip1 */
    .u-tip1{}
    .u-tip1 .itm{}
    /* tip2 */
    .u-tip2{}
    .u-tip2 .itm{}

    防止污染和被污染

    当模块或元件之间互相嵌套,且使用了相同的标签选择器或其他后代选择器,那么里面的选择器就会被外面相同的选择器所影响。

    所以,如果你的模块或元件可能嵌套或被嵌套于其他模块或元件,那么要慎用标签选择器,必要时采用类选择器,并注意命名方式,可以采用.m-layer .layerxxx、.m-list2 .list2xxx的形式来降低后代选择器的污染性。

    选择器、属性和值都使用小写

    在xhtml标准中规定了所有标签、属性和值都小写,CSS也是如此。

    单行写完一个选择器定义

    便于选择器的寻找和阅读,也便于插入新选择器和编辑,便于模块等的识别。去除多余空格,使代码紧凑减少换行。

    如果有嵌套定义,可以采取内部单行的形式。

    /* 单行定义一个选择器 */
    .m-list li,.m-list h3{width:100px;padding:10px;border:1px solid #ddd;}
    /* 这是一个有嵌套定义的选择器 */
    @media all and (max-600px){
        .m-class1 .itm{height:17px;line-height:17px;font-size:12px;}
        .m-class2 .itm{width:100px;overflow:hidden;}
    }
    @-webkit-keyframes showitm{
        0%{height:0;opacity:0;}
        100%{height:100px;opacity:1;}
    }

    最后一个值也以分号结尾

    通常在大括号结束前的值可以省略分号,但是这样做会对修改、添加和维护工作带来不必要的失误和麻烦。

    省略值为0时的单位

    为节省不必要的字节同时也使阅读方便,我们将0px、0em、0%等值缩写为0。

    1 .m-box{margin:0 10px;background-position:50% 0;}

    使用单引号

    省略url引用中的引号,其他需要引号的地方使用单引号。

    1 .m-box{background:url(bg.png);}
    2 .m-box:after{content:'.';}

    使用16进制表示颜色值

    除非你需要透明度而使用rgba,否则都使用#f0f0f0这样的表示方法,并尽量缩写。

    1 .m-box{color:#f00;background:rgba(0,0,0,0.5);}

    根据属性的重要性按顺序书写

    只遵循横向顺序即可,先显示定位布局类属性,后盒模型等自身属性,最后是文本类及修饰类属性。

    显示属性自身属性文本属性和其他修饰
      display width font
      visibility height text-align
      position margin text-decoration
      float padding vertical-align
      clear border white-space
      list-style overflow color
      top min-width background
    1 .m-box{position:relative;width:600px;margin:0 auto 10px;text-align:center;color:#000;}
  • 相关阅读:
    【Android Developers Training】 73. 布局变化的动画
    【Android Developers Training】 72. 缩放一个视图
    【Android Developers Training】 71. 显示翻牌动画
    svn更改地址怎么办
    python学习手册
    failed to bind pixmap to texture
    Ubuntu 12.04安装Google Chrome
    svn update 时总是提示 Password for '默认密钥' GNOME keyring: 输入密码
    重设SVN 的GNOME keyring [(null)] 的密码
    Nginx + uWSGI + web.py 搭建示例
  • 原文地址:https://www.cnblogs.com/bolin-123/p/6121562.html
Copyright © 2011-2022 走看看