• CSS样式表的写作规范


    推荐大家使用的CSS书写规范、顺序

       写了这么久的CSS,但自己都没有按照良好的CSS书写规范来写CSS代码,东写一段西写一段,命名也是想到什么写什么,过一段时间自己都不知道写的是那一块内容,
    这样会影响代码的阅读体验和工作进程,在更改样式时也会麻烦很多;看网上的大能前辈总结的CSS书写规范、CSS书写顺序供大家参考,我想对写CSS的前端用户来说是
    值得学习的。
      想了想我认为前端是一个整体,HTML的布局和CSS命名息息相关,body里包个外框-(wrapper)>各个布局模块(g)-{g-one、g-two、g-three、g-four、
    g-five}>模块里内容-内层(core)-{内容多以c-header、c-main、c-foot}>内层里内容以“c-header>nameClass”来表示;
    最后找到网上大能前辈的方法做参考!!!

    CSS的引用、开头
    
    1.样式放头上,脚本放脚下。不内嵌,只外链。
    2.@charset "utf-8";注意,必须要定义在 CSS 文件所有字符的前面(包括编码注释),@charset 才会生效。
        例如,下面的例子都会使得 @charset 失效:
    
        /* 字符编码 */
        @charset "utf-8";
        html,
        body {
              height: 100%;
        }
    
        @charset "utf-8";
    3.注释用英文,避免解析出现乱码;
    4.慎用 * 通配符。所谓通配符,就是将 CSS 中的所有标签均初始化,不管用的不用的,过时的先进的,一视同仁,这样,大大的占用资源。要有选择的初始化标签。
    
    

     命名空间规范

    1.布局:以 g 为命名空间,例如:.g-wrap 、.g-header、.g-content。
    2.状态:以 s 为命名空间,表示动态的、具有交互性质的状态,例如:.s-current、s-selected。
    3.工具:以 u 为命名空间,表示不耦合业务逻辑的、可复用的的工具,例如:u-clearfix、u-ellipsis。
    4.组件:以 m 为命名空间,表示可复用、移植的组件模块,例如:m-slider、m-dropMenu。
    5.钩子:以 j 为命名空间,表示特定给 JavaScript 调用的类名,例如:j-request、j-open。

    CSS样式层叠覆盖顺序

    层叠样式类型

    类型:
    1. 浏览器默认样式
    2. 浏览器用户自定义样式
    3. 外部样式表
    4. 内部样式表
    5. 内联样式表    
    顺序:
    浏览器默认样式 < 浏览器用户自定义样式 < 外部样式表 < 内部样式表 < 内联样式表
    样式表内部选择器
    1. 类选择器 
    2. 类派生选择器
    3. ID选择器
    4. ID派生选择器
    样式表内部选择器生效顺序
    类选择器 < 类派生选择器 < ID选择器 < ID派生选择器
    生效规则
    1. 样式表的元素选择器选择越精确,则其中的样式优先级越高。
       id选择器指定的样式 > 类选择器指定的样式 > 元素类型选择器指定的样式
    2. 对于相同类型选择器指定的样式,在样式表文件中,越靠后的优先级越高。
    3. 一个元素同时应用多个class,后定义的优先(即近者优先)
    4. 如果要让某个样式的优先级变高,可以使用!important来指定。
    CSS书写顺序
    1.位置属性(position, top, right, z-index, display, float等)
    2.大小(width, height, padding, margin)
    3.文字系列(font, line-height, letter-spacing, color- text-align等)
    4.背景(background, border等)
    5.其他(animation, transition等)
      
    
    
    CSS书写规范
    css-written-order
    使用CSS缩写属性
    CSS有些属性是可以缩写的,比如padding,margin,font等等,这样精简代码同时又能提高用户的阅读体验。
    abbreviation
    
    去掉小数点前的“0”
    简写命名
    很多用户都喜欢简写类名,但前提是要让人看懂你的命名才能简写哦!
    16进制颜色代码缩写
    
    
    有些颜色代码是可以缩写的,我们就尽量缩写吧,提高用户体验为主。
    
    
    连字符CSS选择器命名规范
    
    
    color-abb
    
    1.长名称或词组可以使用中横线来为选择器命名。
    
    2.不建议使用“_”下划线来命名CSS选择器,为什么呢?
    
    输入的时候少按一个shift键;
    浏览器兼容问题 (比如使用_tips的选择器命名,在IE6是无效的)
    能良好区分JavaScript变量命名(JS变量命名是用“_”)
    这里有一篇破折号与下划线的详细讨论,英文:点击查看 中文篇:点击查看
    
    

      字符小写

    
    
    定义的选择器名,属性及属性值的书写皆为小写。
    在xhtml标准中规定了所有标签、属性和值都小写,CSS 书写也应该遵循此约定。
    
    

     选择器

    当一个规则包含多个选择器时,每个选择器独占一行。
    、+、~、> 选择器的两边各保留一个空格。
    .g-header > .g-header-des,
    .g-content ~ .g-footer {
        
    }

      

     代码注释

    单行注释
    星号与内容之间必须保留一个空格。
    
    /* 表格隔行变色 */
    多行注释
    星号要一列对齐,星号与内容之间必须保留一个空格。
    
    /**
     * Sometimes you need to include optional context for the entire component. Do that up here if it's important enough.
     */

    规则声明块内注释

    
    

    使用 // 注释,// 后面加上一个空格,注释独立一行。

    
    
    .foo{
        border: 0;
        // ....
    }
    
    

    文件注释

    
    

    文件顶部必须包含文件注释,用 @name 标识文件说明。星号要一列对齐,星号与内容之间必须保留一个空格,标识符冒号与内容之间必须保留一个空格。

    
    
    /**
     * @name: 文件名或模块名
     * @description: 文件或模块描述
     * @author: author-name(mail-name@domain.com)
     *          author-name2(mail-name2@domain.com)
     * @update: 2015-04-29 00:02
     */
    
    
    
    • @description为文件或模块描述。
    • @update为可选项,建议每次改动都更新一下。
    
    

    当该业务项目主要由固定的一个或多个人负责时,需要添加@author标识,一方面是尊重劳动成果,另一方面方便在需要时快速定位责任人。

     

     数值与单位

    当属性值或颜色参数为 0 - 1 之间的数时,省略小数点前的 0 。
    
    color: rgba(255, 255, 255, 0.5)
    
    color: rgba(255, 255, 255, .5);
    
    当长度值为 0 时省略单位。
    
    margin: 0px auto
    
    margin: 0 auto

    不要随意使用Id
    
    
    underline
    
    id在JS是唯一的,不能多次使用,而使用class类选择器却可以重复使用,另外id的优先级优先与class,所以id应该按需使用,而不能滥用。
    
    css-id
    
    
    为选择器添加状态前缀
    有时候可以给选择器添加一个表示状态的前缀,让语义更明了,比如下图是添加了“.is-”前缀。
      

      样式属性顺序

    单个样式规则下的属性在书写时,应按功能进行分组,并以 Positioning Model > Box Model > Typographic > Visual 的顺序书写,提高代码的可读性。
    
    如果包含 content 属性,应放在最前面;
    Positioning Model 布局方式、位置,相关属性包括:position / top / right / bottom / left / z-index / display / float / ...
    Box Model 盒模型,相关属性包括:width / height / padding / margin / border / overflow / ...
    Typographic 文本排版,相关属性包括:font / line-height / text-align / word-wrap / ...
    Visual 视觉外观,相关属性包括:color / background / list-style / transform / animation / transition / ...
    Positioning 处在第一位,因为他可以使一个元素脱离正常文本流,并且覆盖盒模型相关的样式。盒模型紧跟其后,因为他决定了一个组件的大小和位置。
    其他属性只在组件内部起作用或者不会对前面两种情况的结果产生影响,所以他们排在后面。

     合理使用使用引号

    在某些样式中,会出现一些含有空格的关键字或者中文关键字。
    
    font-family 内使用引号
    当字体名字中间有空格,中文名字体及 Unicode 字符编码表示的中文字体,为了保证兼容性,都建议在字体两端添加单引号或者双引号:
    body {
      font-family: 'Microsoft YaHei', '黑体-简', '5b8b4f53';
    }
    
    
    

      

    background-image 的 url 内使用引号 如果路径里面有空格,旧版 IE 是无法识别的,会导致路径失效,建议不管是否存在空格,都添加上单引号或者双引号: 
    div { 
    background-image: url('...');
    }
    
    

      

     

     CSS命名规范(规则)

    
    
    status-select
    常用的CSS命名规则
    头:header
    内容:content/container
    尾:footer
    导航:nav
    侧栏:sidebar
    栏目:column
    页面外围控制整体佈局宽度:wrapper
    左右中:left right center
    登录条:loginbar
    标志:logo
    广告:banner
    页面主体:main
    热点:hot
    新闻:news
    下载:download
    子导航:subnav
    菜单:menu
    子菜单:submenu
    搜索:search
    友情链接:friendlink
    页脚:footer
    版权:copyright
    滚动:scroll
    内容:content
    标签:tags
    文章列表:list
    提示信息:msg
    小技巧:tips
    栏目标题:title
    加入:joinus
    指南:guide
    服务:service
    注册:regsiter
    状态:status
    投票:vote
    合作伙伴:partner
    
    注释的写法:
    /* Header */
    内容区
    /* End Header */
    
    Id的命名:
    1)页面结构
    
    容器: container
    页头:header
    内容:content/container
    页面主体:main
    页尾:footer
    导航:nav
    侧栏:sidebar
    栏目:column
    页面外围控制整体佈局宽度:wrapper
    左右中:left right center
    
    (2)导航
    
    导航:nav
    主导航:mainnav
    子导航:subnav
    顶导航:topnav
    边导航:sidebar
    左导航:leftsidebar
    右导航:rightsidebar
    菜单:menu
    子菜单:submenu
    标题: title
    摘要: summary
    
    (3)功能
    
    标志:logo
    广告:banner
    登陆:login
    登录条:loginbar
    注册:register
    搜索:search
    功能区:shop
    标题:title
    加入:joinus
    状态:status
    按钮:btn
    滚动:scroll
    标籤页:tab
    文章列表:list
    提示信息:msg
    当前的: current
    小技巧:tips
    图标: icon
    注释:note
    指南:guild
    服务:service
    热点:hot
    新闻:news
    下载:download
    投票:vote
    合作伙伴:partner
    友情链接:link
    版权:copyright、
    
    

     

     避免使用 !important

    除去某些极特殊的情况,尽量不要不要使用 !important。
    
    !important 的存在会给后期维护以及多人协作带来噩梦般的影响。
    
    当存在样式覆盖层叠时,如果你发现新定义的一个样式无法覆盖一个旧的样式,只有加上 !important 才能生效时,是因为你新定义的选择器的优先级不够旧样式选择器的优先级高。
    所以,合理的书写新样式选择器,是完全可以规避一些看似需要使用 !important 的情况的。

     SASS 使用建议

     

    嵌套层级规定
    使用 SASS 、 LESS 等预处理器时,建议嵌套层级不超过 3 层。

    组件/公用类的使用方法

    
    

    组件/公用类使用 %placeholders 定义,使用 @extend 引用。如:

    
    
    1
    2
    3
    4
    5
    6
    7
    8
    %clearfix {
      overflowauto;
      zoom: 1;
    }
     
    .g-header {
      @extend %clearfix;
    }
    
    

    组件类的思考

    
    

    使用 SASS ,经常会预先定义好一些常用公用组件类,譬如清除浮动,水平垂直居中,文字 ellipsis。又或者多个元素具有同样的样式,我们希望能够少写这部分代码,公共部分抽离出来只写一次,达到复用。

    
    

    但是复用的方式在 SASS 中有多种,那么是使用单独使用一个类定义,给需要的标签添加,还是使用 @include 或者 @extend在定义的类中引入一个 @mixin,或者一个 @function 呢?

    
    

    基于让 CSS 更简洁以及代码的复用考虑,采用上面的使用 %placeholders 定义,使用 @extend 引用的方案。

    
    
    • %placeholders,只是一个占位符,只要不通过 @extend 调用,编译后不会产生任何代码量
    • 使用 @extend 引用,则是因为每次调用相同的 %placeholders 时,编译出来相同的 CSS 样式会进行合并(反之,如果使用 @include 调用定义好的 @mixin,编译出来相同的 CSS 样式不会进行合并)
    • 这里的组件类特指那些不会动态改变的 CSS 样式,注意与那些可以通过传参生成不同数值样式的 @mixin 方法进行区分
    
    
    
    
    

    尽量避免使用标签名

    
    

    使用 SASS ,或者说在 CSS 里也有这种困惑。

    
    

    假设我们有如下 html 结构:

    
    
    1
    2
    3
    4
    5
    6
    7
    8
    <div class="g-content">
        <ul class="g-content-list">
            <li class="item"></li>
            <li class="item"></li>
            <li class="item"></li>
            <li class="item"></li>
        </ul>
    </div>
    
    

    在给最里层的标签命名书写样式的时候,我们有两种选择:

    
    
    1
    2
    3
    4
    5
    6
    7
    .g-content {
      .g-content-list {
        li {
          ...
        }
      }
    }
    
    

    或者是

    
    
    1
    2
    3
    4
    5
    6
    7
    .g-content {
      .g-content-list {
        .item {
          ...
        }
      }
    }
    
    

    也就是,编译之后生成了下面这两个,到底使用哪个好呢?

    
    
    • .g-content .g-content-list li { }
    • .g-content .g-content-list .item { }
    
    

    基于 CSS 选择器的解析规则(从右向左),建议使用上述第二种 .g-content .g-content-list .item { } ,避免使用通用标签名作为选择器的一环可以提高 CSS 匹配性能。

    
    

    浏览器的排版引擎解析 CSS 是基于从右向左(right-to-left)的规则,这么做是为了使样式规则能够更快地与渲染树上的节点匹配。 

    
    
    
     

     编写CSS样式表需要注意的15个点

    
    1、不要使用过小的图片做背景平铺。这就是为何很多人都不用 1px 的原因,这才知晓。宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源。 
    2、无边框。推荐的写法是 border:none;,哈哈,我一直在用这个。 border:0; 只是定义边框宽度为零,但边框样式、颜色还是会被浏览器解析,占用资源。   
    3、慎用 * 通配符。所谓通配符,就是将 CSS 中的所有标签均初始化,不管用的不用的,过时的先进的,一视同仁,这样,大大的占用资源。要有选择的初始化标签。   
    4、CSS 的十六进制颜色代码缩写。习惯了缩写及小写,这才知道,原来不是推荐的写法,为的是减少解析所占用的资源。但同时会增加文件体积。孰优孰劣,有待仔细考证。   
    5、样式放头上,脚本放脚下。不内嵌,只外链。   
    6、坚决不用 CSS 表达式。   
    7、使用引用样式表,而不是通过 @import 导入。   
    8、一般来说,PNG 比 GIF 要小,小得多。再者,GIF 中有多少颜色是被浪费的,很值得优化。   
    9、千万不要在 HTML 中缩放图片,一者不好看,二者占资源。   
    10、正文字体最好用偶数,12px、14px、16px,效果非常好。特例,15px。   
    11、block、ul、ol 等上下留出至少一倍行距,左侧至少两倍行距,右侧随意。   
    12、段落之间,至少要有一倍行距。   
    13、强行指定某些元素的 line-height,正文 1.6 倍于文字大小,标题 1.3 倍。   
    14、中文标点用全角。英文夹杂在中文中,左右空格,半角。   
    15、中文字体的粗体和斜体,远离较好,利民利己。 
    ----------- 本文来自 Gadxiong 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/Gadxiong/article/details/80440148?utm_source=copy--------------
    
    
    
    
    
  • 相关阅读:
    ElasticSearch 2 (10)
    zookeeper 配置
    zookeeper
    ES 聚合函数
    win 7安装 linux
    Elasticsearch分布式搜索集群配置
    Elasticsearch 插件安装
    为Elasticsearch添加中文分词,对比分词器效果
    .net 4.0 网站发布(转)
    ssm 网页
  • 原文地址:https://www.cnblogs.com/liaohongwei/p/9698687.html
Copyright © 2020-2023  润新知