GVKun编程网logo

前端之CSS编码规范(前端的css)

26

本文将为您提供关于前端之CSS编码规范的详细介绍,我们还将为您解释前端的css的相关知识,同时,我们还将为您提供关于bootstrapcss编码规范、bootstrapcss编码规范_html/css

本文将为您提供关于前端之CSS编码规范的详细介绍,我们还将为您解释前端的css的相关知识,同时,我们还将为您提供关于bootstrap css编码规范、bootstrap css编码规范_html/css_WEB-ITnose、Css 编码规范、CSS:编码规范的实用信息。

本文目录一览:

前端之CSS编码规范(前端的css)

前端之CSS编码规范(前端的css)

前言

项目启动时 css 应该注意哪些问题

 

文件名规范

文件名建议用小写字母加中横线的方式。为什么呢?因为这样可读性比较强,看起来比较清爽,像链接也是用这样的方式,例如

    // 地址: github的地址
    https://github.com/wangjeaf/ckstyle-node

那为什么变量名不用小写字母加小划线的方式,如:family_tree,而是推荐用驼峰式的familyTree?C语言就喜欢用这种方式命名变量,但是由于因为下划线比较难敲(shift + -),所以一般用驼峰式命名变量的居多。

引入css文件的link可以不用带type=“text/css”,如下代码:

    <link rel="stylesheet" href="test.css">

因为link里面最重要的是rel这个属性,可以不要type,但是不能没有rel。

js也是同样道理,可以不用type,如下代码:

    <script src="test.js"></script>

没有兼容性问题。

 

属性书写顺序

属性的书写顺序对于浏览器来说没有区别,除了优先级覆盖之外。但是如果顺序保持一致的话,扫一眼可以很快地知道这个选择器有什么类型的属性影响了它,所以一般要把比较重要的属性放前面。比较建议的顺序是这样的:

你可能会觉得我平时差不多就是这么写的,那么说明你有一个比较好的素养。并且我觉得规则不是死,有时候可以灵活,就像你可能会用transform写居中,然后把left/top/transform挨在一起写了,我觉得这也是无可厚非的,因为这样可以让人一眼看出你要干嘛。

 

不要使用样式特点命名

有些人可能喜欢用样式的特点命名,例如:

.red-font{
    color: red;
		}
.p1{
    font-size: 18px;
		}
.p2{
    font-size: 16px;
		}

然后你在它的html里面就会看到套了大量的p1/p2/bold-font/right-wrap之类的类名,这种是不可取的,假设你搞了个red-font,下次UI要改颜色,那你写的这个类名就没用了,或者是在响应式里面在右边的排版在小屏的时候就会跑到下面去,那你取个right就没用了。有些人先把UI整体瞄了一下,发现UI大概用了3种字号18px/16px/14px,于是写3个类p1/p2/p3,不同的字号就套不同的类。这乍一看,好像写得挺通用,但是当你看他的html时,你就疯掉了,这些p1/p2/p3的类加起写了有二三十个,密密麻麻的。我觉得如果要这样写的话还不如借助标题标签如下:

.house-info h2{
    font-size: 18px;
		}
.house-info h3{
    font-size: 16px;
		}

因为把它的字号加大了,很可能是一个标题,所以为什么不直接用标题标签,不能仅仅担心因为标题标签会有默认样式。

类的命名应当使用它所表示的逻辑意义,如signup-success-toast、request-demo、agent-portrait、 company-logo等等。

如果有些样式你觉得真的特别通用,那可以把它当作一个类,如clearfix,或者有些动画效果,有几个地方都要用到,我觉得这种较为复杂并且通用的可以单独作为一个类。但是还是趋向于使用意义命名。

 

不要使用hack

有些人在写CSS的时候使用一些hack的方法注释,如下:

.agent-name{
    float: left;
    _margin: 10px;
    //padding: 20px;
	}

这种方法的原理是由于//或者_开头的CSS属性浏览器不认识,于是就被忽略,分号是属性终止符,从//到分号的内容都被浏览器忽略,但是这种注释是不提倡的,要么把.css文件改成.less或者.scss文件,这样就可以愉快地用//注释了。

还有一些专门针对特定浏览器的hack,如*开头的属性是对IE6的hack。不管怎么样都不要使用hack。

 

选择器的性能

选择器一般不要写超过3个,有些人写sass或者less喜欢套很多层,如下:

.listings-list{
    ul{
        li{
            .bed-bath{
                p{
                     color: #505050;
                }
            }
        }
    }}

一个容器就套一层,一层一层地套下来,最底层套了七八层,这么长的选择器的性能比较差,因为Chrome里面是用递归从最后一个选择器一直匹配到第一个,选择器越多,匹配的时间就越长,所以时间会比较长,并且代码的可读性也比较差,为看到最里面的p标签的样式是哪个的我得一层层地往上看,看是哪里的p。代码里面缩进了7、8层看起来也比较累。

一般只要写两三个比较重要的选择器就好了,不用每个容器都写进去,重要的目标元素套上class或者id。

最后一个选择器的标签的应该少用,因为如果你写个.container div{}的话,那么页面上所有的div第一次都匹配中,因为它是从右往左匹配的,这样的写的好处是html不用套很多的类,但是扩展性不好,所以不要轻易这样用,如果要用需要仔细考虑,如果合适才使用,最起码不能滥用。

 

避免选择器误选

有时候会出现自己的样式受到其他人样式的影响,或者自己的样式不小心影响了别人,有可能是因为类的命名和别人一样,还有可能是选择器写的范围太广,例如有人在他自己的页面写了:

* {
    Box-sizing: border-Box;
	}

结果导致在他个页面的公用弹框样式挂了。一方面不要写*全局匹配选择器,不管从性能还是影响范围来说都太大了,例如在一个有3个子选择器的选择器:

.house-info .key-detail .location{}

在三个容器里面,*都是适用的,并且有些属性是会继承的,像font-size,会导致这三个容器都有font-size,然后一层层地覆盖。

还有一种情况是滥用了:first-child、:nth-of-type这种选择器,使用这种选择器的后果是扩展性不好,只要html改了,就会导致样式不管用了,或者影响到了其它无关元素。但是并不是说这种选择器就不能用,只要用得好还是挺方便的,例如说在所有的li里面要让最后一个li的margin-left小一点,那么可以这么写:

.listing-list li:last-child{
    margin-left: 10px;
}

这可能比你直接套一个类强。但是不管怎么样,不能滥用,合适的时候才使用,而不是仅仅为了少写类名。

 

减少覆盖

覆盖是一种常用的策略,也是一种不太优雅的方式,如下代码,为了让每个house中间的20px的间距,但是第一个house不要有间距:

.house{
    margin-top: 20px;
}
.house:first-child{
    margin-top: 0;
}

其实可以改成这样:

.house + .house{
    margin-top: 20px;
}

只有前面有.house的.house才能命中这个选择器,由于第一个.house前面没有,所以无法命中,这样看起来代码就简洁多了。

还有这种情况,如下代码所示:

.request-demo input{
    border: 1px solid #282828;
}
.request-demo input[type=submit]{
    border: none;
}

其实可以借助一个:not选择器:

.request-demo input:not([type=sbumit]){
    border: 1px solid #282828;
}

这样看起来代码也优雅了很多。

有一种覆盖是值得的,那就是响应式里面小屏的样式覆盖大屏,如下:

@media (min-width: 1025px){
     .container{
         width: 1080px;
         margin: 0 auto;
    }}

我一开始是就是这么写的,为了遵循减少覆盖原则,但是后来发现这种实践不好,代码容易乱,写成覆盖的好处在于可以在浏览器明显地看到,小屏的样式是覆盖了哪个大屏的样式,这个在大屏的时候又是怎么样的。

 

少用!important

important用来覆盖属性,特别是在CSS里面用来覆盖style里的属性,但是important还是少用为妙。有时候你为了偷懒直接写个!important,以为这个的优先级是最高的了,往往螳螂捕蝉,黄雀在后,很可能过不了多久又要再写一个优先级更高的覆盖掉,这样就略显尴尬了。所以能少用还是少用。如果要覆盖还是先通过增加添加选择器权重的方式。

 

排版规范

不管是JS/CSS,缩进都调成4个空格,如果你用的sublime,在软件的右下角有一个Tab Size,选择Tab Size 4,然后再把最上面的Indent Using Spaces勾上,这样,当你打一个tab键缩进的时候就会自动转换成4个空格。如果你使用vim,新增或者编辑~/.vimrc文件新增一行:

:set tabstop=4 也会自动把缩进改成4个空格,其它编辑器自行查找设置方法。因为\t在不同的编辑器上显示长度不一样,而改成空格可以在不同人的电脑上格式保持一致。

多个选择器共用一个样式集,每个选择器要各占一行,如下:

.landing-pop,.samll-pop-outer,.signup-success{   
    display: none;
}

每个属性名字冒号后面要带个空格,~、>、+选择器的前后也要带一个空格:

.listings &gt; li{
    float: left;
}

 

正确使用background和img

显示一张图片有两种方式,可以通过设置CSS的background-image,或者是使用img标签,究竟什么时候用哪种呢?

如果是头图等直接展示的图片还是要img标签,如果是做为背景图就使用background,因为使用img可以写个alt属性增强SEO,而背景图那种本身不需要SEO。虽然background有一个一个background-position: center center很好,但是头图那种还是使用img吧,自己去居中吧,不然做不了SEO。

 

响应式的规范

响应式开发最不好不要杂合使用rem,文字字号要么全部使用rem,要么不要用,也不要使用transform: scale去缩小,因为被缩小的字号看起来会有点奇怪,别人都是14px,而你变成了13.231px,小了一点。响应式的原则一般是保持中间或者两边间距不变,然后缩小主体内容的宽度。

豌豆资源搜索网站https://55wd.com 电脑刺绣绣花厂 ttp://www.szhdn.com

少用inline-block布局

有些人喜欢用inline-block,特别是刚开始学切图的人,因为block会换行,而inline-block不会换行还具有盒模型,因此inline-block用得很顺手,而float比较复杂,还要处理清除浮动之类的问题。如下布局:

应该写li,然后让li float,如果你让li display:inline-block也可以达到目的。但是inline-block用得多了可能会有一些奇怪的问题,你通常要在一个inline-block的元素里面套block的元素,inline-block是行内元素,而block是块级元素,这两者终究有点差别。这种应该用float/flex会更自然,如果你float用顺手了你会发现比inline-block好多了,并且更加专业。如果你没怎么用过flex ,那你可以尝试换一下使用flex,如果你没怎么用过float,可以尝试用一下。只有你的切图方式多样化了,你切起图来才能比较灵活。

总结

以上是小编为你收集整理的前端之CSS编码规范全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

bootstrap css编码规范

bootstrap css编码规范

总结

以上是小编为你收集整理的bootstrap css编码规范全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

bootstrap css编码规范_html/css_WEB-ITnose

bootstrap css编码规范_html/css_WEB-ITnose

1.1.  语法

1.        用两个空格来代替制表符(tab) -- 这是唯一能保证在所有环境下获得一致展现的方法。

2.        为选择器分组时,将单独的选择器单独放在一行。

3.        为了代码的易读性,在每个声明块的左花括号前添加一个空格。

4.        声明块的右花括号应当单独成行。

5.        每条声明语句的 : 后应该插入一个空格。

立即学习“前端免费学习笔记(深入)”;

6.        为了获得更准确的错误报告,每条声明都应该独占一行。

7.        所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。

8.        对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格(例如,box-shadow)。

9.        不要在 rgb()、rgba()、hsl()、hsla() 或 rect() 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)。

10.     对于属性值或颜色参数,省略小于 1 的小数前面的 0 (例如,.5 代替 0.5;-.5px 代替 -0.5px)。

11.     十六进制值应该全部小写,例如,#fff。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。

12.     尽量使用简写形式的十六进制值,例如,用 #fff 代替#ffffff。

13.     为选择器中的属性添加双引号,例如,input[type="text"]。只有在某些情况下是可选的,但是,为了代码的一致性,建议都加上双引号。

14.     避免为 0 值指定单位,例如,用 margin: 0; 代替margin: 0px;。

/* Bad CSS */

.selector,.selector-secondary,.selector[type=text] {

  padding:15px;

  margin:0px0px15px;

  background-color:rgba(0,0,0,0.5);

  box-shadow:0px1px2px#CCC,inset01px0#FFFFFF

}

 

/* Good CSS */

.selector,

.selector-secondary,

.selector[type="text"] {

  padding:15px;

  margin-bottom:15px;

  background-color: rgba(0,0,0,.5);

  box-shadow:01px2px#ccc,inset01px0#fff;

}

1.2.  声明顺序

相关的属性声明应当归为一组,并按照下面的顺序排列:

Positioning

Box model

Typographic

Visual

由于定位(positioning)可以从正常的文档流中移除元素,并且还能覆盖盒模型(box model)相关的样式,因此排在首位。盒模型排在第二位,因为它决定了组件的尺寸和位置。

其他属性只是影响组件的内部(inside)或者是不影响前两组属性,因此排在后面。

.declaration-order {

  /* Positioning */

  position:absolute;

  top:0;

  right:0;

  bottom:0;

  left:0;

  z-index:100;

 

  /* Box-model */

  display:block;

  float:right;

  width:100px;

  height:100px;

 

  /* Typography */

  font:normal13px"HelveticaNeue",sans-serif;

  line-height:1.5;

  color:#333;

  text-align:center;

 

  /* Visual */

  background-color:#f5f5f5;

  border:1pxsolid#e5e5e5;

  border-radius:3px;

 

  /* Misc */

  opacity:1;

}

1.3.  不要使用 @import

与  标签相比,@import 指令要慢很多,不光增加了额外的请求次数,还会导致不可预料的问题。替代办法有以下几种:

使用多个  元素

通过 Sass 或 Less 类似的 CSS 预处理器将多个 CSS 文件编译为一个文件

通过 Rails、Jekyll 或其他系统中提供过 CSS 文件合并功能

 

  @importurl("more.css");

1.4.  媒体查询(Mediaquery)的位置

将媒体查询放在尽可能相关规则的附近。不要将他们打包放在一个单一样式文件中或者放在文档底部。如果你把他们分开了,将来只会被大家遗忘。下面给出一个典型的实例。

.element { ... }

.element-avatar { ... }

.element-selected { ... }

 

@media(min-width:480px) {

  .element { ...}

  .element-avatar { ... }

  .element-selected { ... }

}

1.5.  带前缀的属性

当使用特定厂商的带有前缀的属性时,通过缩进的方式,让每个属性的值在垂直方向对齐,这样便于多行编辑。

在 Textmate 中,使用 Text → Edit Each Line in Selection(??A)。在 Sublime Text 2 中,使用 Selection →Add Previous Line (??↑) 和 Selection → Add NextLine (??↓)。

/* Prefixed properties */

.selector {

  -webkit-box-shadow:01px2px rgba(0,0,0,.15);

          box-shadow:01px2px rgba(0,0,0,.15);

}

1.6.  单行规则声明

对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行。对于带有多条声明的样式,还是应当将声明分为多行。

这样做的关键因素是为了错误检测 -- 例如,CSS 校验器指出在 183 行有语法错误。如果是单行单条声明,你就不会忽略这个错误;如果是单行多条声明的话,你就要仔细分析避免漏掉错误了。

/* Single declarations on oneline */

.span1 {width:60px; }

.span2 {width:140px; }

.span3 {width:220px; }

 

/* Multiple declarations, oneper line */

.sprite {

  display:inline-block;

  width:16px;

  height:15px;

  background-image:url(../img/sprite.png);

}

.icon           { background-position:00; }

.icon-home      { background-position:0-20px; }

.icon-account   { background-position:0-40px; }

1.7.  简写形式的属性声明

在需要显示地设置所有值的情况下,应当尽量限制使用简写形式的属性声明。常见的滥用简写属性声明的情况如下:

padding

margin

font

background

border

border-radius

大部分情况下,我们不需要为简写形式的属性声明指定所有值。例如,HTML 的 heading 元素只需要设置上、下边距(margin)的值,因此,在必要的时候,只需覆盖这两个值就可以。过度使用简写形式的属性声明会导致代码混乱,并且会对属性值带来不必要的覆盖从而引起意外的副作用。

/* Bad example */

.element {

  margin:0010px;

  background:red;

  background:url("image.jpg");

  border-radius:3px3px00;

}

 

/* Good example */

.element {

  margin-bottom:10px;

  background-color:red;

  background-image:url("image.jpg");

  border-top-left-radius:3px;

  border-top-right-radius:3px;

}

1.8.  Less 和 Sass 中的嵌套

避免非必要的嵌套。这是因为虽然你可以使用嵌套,但是并不意味着应该使用嵌套。只有在必须将样式限制在父元素内(也就是后代选择器),并且存在多个需要嵌套的元素时才使用嵌套。

// Without nesting

.table>thead>tr>th {… }

.table>thead>tr>td {… }

 

// With nesting

.table>thead>tr {

  >th { … }

  >td { … }

}

1.9.  注释

代码是由人编写并维护的。请确保你的代码能够自描述、注释良好并且易于他人理解。好的代码注释能够传达上下文关系和代码目的。不要简单地重申组件或 class 名称。

对于较长的注释,务必书写完整的句子;对于一般性注解,可以书写简洁的短语。

/* Bad example */

/* Modal header */

.modal-header {

  ...

}

 

/* Good example */

/* Wrapping element for.modal-title and .modal-close */

.modal-header {

  ...

}

1.10.    class 命名

class 名称中只能出现小写字符和破折号(dashe)(不是下划线,也不是驼峰命名法)。破折号应当用于相关 class 的命名(类似于命名空间)(例如,.btn 和 .btn-danger)。

避免过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。

class 名称应当尽可能短,并且意义明确。

使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。

基于最近的父 class 或基本(base) class 作为新 class 的前缀。

使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。

在为 Sass 和 Less 变量命名是也可以参考上面列出的各项规范。

/* Bad example */

.t {... }

.red {... }

.header {... }

 

/* Good example */

.tweet {... }

.important { ... }

.tweet-header { ... }

1.11.    选择器

对于通用元素使用 class ,这样利于渲染性能的优化。

对于经常出现的组件,避免使用属性选择器(例如,[class^="..."])。浏览器的性能会受到这些因素的影响。

选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3 。

只有在必要的时候才将 class 限制在最近的父元素内(也就是后代选择器)(例如,不使用带前缀的 class 时 -- 前缀类似于命名空间)。

/* Bad example */

span {... }

.page-container#stream.stream-item.tweet.tweet-header.username { ... }

.avatar {... }

 

/* Good example */

.avatar {... }

.tweet-header.username { ... }

.tweet.avatar { ... }

1.12.    代码组织

以组件为单位组织代码段。

制定一致的注释规范。

使用一致的空白符将代码分隔成块,这样利于扫描较大的文档。

如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动。

/*

 * Component section heading

 */

 

.element { ... }

 

 

/*

 * Component section heading

 *

 * Sometimes you need to include optionalcontext for the entire component. Do that up here if it''s important enough.

 */

 

.element { ... }

 

/* Contextual sub-component ormodifer */

.element-heading { ... }

1.13.    编辑器配置

将你的编辑器按照下面的配置进行设置,以避免常见的代码不一致和差异:

用两个空格代替制表符(soft-tab 即用空格代表 tab 符)。

保存文件时,删除尾部的空白符。

设置文件编码为 UTF-8。

在文件结尾添加一个空白行。

 

Css 编码规范

Css 编码规范

(1)为选择器分组时,将单独的选择器放在一行。

         对于只包含一条声明的样式,为了易读性和便于快速编辑,建议将语句放在同一行

(2)在每个声明块的左括号前面添加空格,右括号应单独成行,最后应该插入一个空格

(3)用两个空格来代替制表符(tab),能在所有环境下获得一致展现。

(4)所有声明语句都应当以分号结尾。最后一条声明语句后面的分号是可选的,但是,如果省略这个分号,你的代码可能更易出错。

(5)对于以逗号分隔的属性值,每个逗号后面都应该插入一个空格

(6)不要在 rgb ()、rgba ()、hsl ()、hsla () 或 rect () 值的内部的逗号后面插入空格。这样利于从多个属性值(既加逗号也加空格)中区分多个颜色值(只加逗号,不加空格)

(7)尽量使用简写形式的十六进制值,并且十六进制值应该小写。在扫描文档时,小写字符易于分辨,因为他们的形式更易于区分。

(8)尽量不给 0 值指定单位,例如,用 padding: 0; 代替 padding: 0px;。

(9)声明顺序

  • 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 等)

(10) 与 <link> 标签相比,@import 执行比较慢,尽量不要使用 import 标签。可以使用多个 < link > 标签

<link rel="stylesheet" href="core.css">

<style> @import url("more.css"); </style>

(11)class 命名

  • class 名称中只能出现小写字符和破折号(-,破折号应当用于相关 class 的命名)。(例如,.btn 和 .btn-danger)。
  • class 名称应当尽可能短,并且意义明确,但不要过度任意的简写。.btn 代表 button,但是 .s 不能表达任何意思。
  • 使用有意义的名称。使用有组织的或目的明确的名称,不要使用表现形式(presentational)的名称。
  • 基于最近的父 class 或基本(base) class 作为新 class 的前缀。
  • 使用 .js-* class 来标识行为(与样式相对),并且不要将这些 class 包含到 CSS 文件中。

(12)选择器

  • 对于通用元素使用 class ,这样利于渲染性能的优化。
  • 对于经常出现的组件,避免使用属性选择器(例如,[class^="..."])。浏览器的性能会受到这些因素的影响。
  • 选择器要尽可能短,并且尽量限制组成选择器的元素个数,建议不要超过 3 。
  • 只有在必要的时候才将 class 限制在最近的父元素内(也就是后代选择器)(例如,不使用带前缀的 class 时 -- 前缀类似于命名空间)。

CSS:编码规范

CSS:编码规范

CSS书写格式

1.格式化代码

1.1文件

[建议]:CSS文件使用无BOMUTF-8编码

1.2缩进

[强制]:使用 4 个空格做为一个缩进层级,不允许使用 2 个空格 或 tab 字符。
.selector {
    margin: 0;
    padding: 0;
}

1.3空格

[强制]:选择器 与 { 之间必须包含空格。
.selector {

}
[强制]:选择器 与 { 之间必须包含空格。

margin: 0;

[强制]:列表性属性书在单行时,,后必须跟一个空格

font-family: Aria, sans-serif;

1.4行长度

[强制]: 每行不得超过 120 个字符,除非单行不可分割。

[建议]: 对于超长的样式,在样式值的 空格 处或 , 后换行,建议按逻辑分组。

/* 不同属性值按逻辑分组 */
background:
    transparent url(aVeryVeryVeryLongUrlIsPlacedHere)
    no-repeat 0 0;

/* 可重复多次的属性,每次重复一行 */
background-image:
    url(aVeryVeryVeryLongUrlIsPlacedHere)
    url(anotherVeryVeryVeryLongUrlIsPlacedHere);

/* 类似函数的属性值可以根据函数调用的缩进进行 */
background-image: -webkit-gradient(
    linear,
    left bottom,
    left top,
    color-stop(0.04, rgb(88,94,124)),
    color-stop(0.52, rgb(115,123,162))
);

1.5选择器

[强制]:当一个 rule 包含多个 selector 时,每个选择器声明必须独占一行。
/* good */
.post,
.page,
.comment {
    line-height: 1.5;
}

/* bad */
.post, .page, .comment {
    line-height: 1.5;
}
[强制]: >+~ 选择器的两边各保留一个空格。

示例:

/* good */
main > nav {
    padding: 10px;
}

label + input {
    margin-left: 5px;
}

input:checked ~ button {
    background-color: #69C;
}

/* bad */
main>nav {
    padding: 10px;
}

label+input {
    margin-left: 5px;
}

input:checked~button {
    background-color: #69C;
}
[强制] 属性选择器中的值必须用双引号包围。
css
/* good */
article[character="juliet"] {
    voice-family: "Vivien Leigh", victoria, female
}

/* bad */
article[character=''juliet''] {
    voice-family: "Vivien Leigh", victoria, female
}

2.选择器与属性缩写

2.1选择器

[强制] 如无必要,不得为 idclass 选择器添加类型选择器进行限定。

解释:在性能和维护性上,都有一定的影响。

示例:

css
/* good */
#error,
.danger-message {
    font-color: #c00;
}

/* bad */
dialog#error,
p.danger-message {
    font-color: #c00;
}
[建议] 选择器的嵌套层级应不大于 3 级,位置靠后的限定条件应尽可能精确。

示例:

/* good */
#username input {}
.comment .avatar {}

/* bad */
.page .header .login #username input {}
.comment div * {}

2.2 属性缩写

[建议] 在可以使用缩写的情况下,尽量使用属性缩写。

示例:

/* good */
.post {
    font: 12px/1.5 arial, sans-serif;
}

/* bad */
.post {
    font-family: arial, sans-serif;
    font-size: 12px;
    line-height: 1.5;
}
[建议] 使用 border / margin / padding 等缩写时,应注意隐含值对实际数值的影响,确实需要设置多个方向的值时才使用缩写。

解释:border / margin / padding 等缩写会同时设置多个属性的值,容易覆盖不需要覆盖的设定。如某些方向需要继承其他声明的值,则应该分开设置。

示例:

/* centering <article> horizontally and highlight featured ones */
article {
    margin: 5px;
    border: 1px solid #999;
}

/* good */
.page {
    margin-right: auto;
    margin-left: auto;
}

.featured {
    border-color: #69c;
}

/* bad */
.page {
    margin: 5px auto; /* introducing redundancy */
}

.featured {
    border: 1px solid #69c; /* introducing redundancy */
}

2.3 每个规则集之间保留一个空行

/* good */
.selector1 {
  display: block;
  width: 100px;
}
.selector2 {
  padding: 10px;
  margin: 10px auto;
}

/* bad */
.selector1 {
  display: block;
  width: 100px;
}

.selector2 {
  padding: 10px;
  margin: 10px auto;
}

3.值与单位

3.1 文本

[强制] 文本内容必须用双引号包围。

解释:文本类型的内容可能在选择器、属性值等内容中。
示例:

/* good */
html[lang|="zh"] q:before {
    font-family: "Microsoft YaHei", sans-serif;
    content: "“";
}

html[lang|="zh"] q:after {
    font-family: "Microsoft YaHei", sans-serif;
    content: "”";
}

/* bad */
html[lang|=zh] q:before {
    font-family: ''Microsoft YaHei'', sans-serif;
    content: ''“'';
}

html[lang|=zh] q:after {
    font-family: "Microsoft YaHei", sans-serif;
    content: "”";
}

3.2 数值

[强制] 当数值为 0 - 1 之间的小数时,省略整数部分的 0

示例:

/* good */
panel {
    opacity: .8
}

/* bad */
panel {
    opacity: 0.8
}

4.3 url()

[强制] url() 函数中的路径不加引号。

示例:

body {
    background: url(bg.png);
}

3.3 长度

[强制] 长度为 0 时须省略单位。 (也只有长度单位可省)

示例:

/* good */
body {
    padding: 0 5px;
}

/* bad */
body {
    padding: 0px 5px;
}

3.4 颜色

[强制] RGB颜色值必须使用十六进制记号形式 #rrggbb。不允许使用 rgb()
/* good */
.success {
    box-shadow: 0 0 2px rgba(0, 128, 0, .3);
    border-color: #008000;
}

/* bad */
.success {
    box-shadow: 0 0 2px rgba(0,128,0,.3);
    border-color: rgb(0, 128, 0);
}
[强制] 颜色值可以缩写时,必须使用缩写形式。

示例:

/* good */
.success {
    background-color: #aca;
}

/* bad */
.success {
    background-color: #aaccaa;
}
[强制] 颜色值不允许使用命名色值。

示例:

/* good */
.success {
    color: #90ee90;
}

/* bad */
.success {
    color: lightgreen;
}
[建议] 颜色值中的英文字符采用小写。如不用小写也需要保证同一项目内保持大小写一致。

示例:

/* good */
.success {
    background-color: #aca;
    color: #90ee90;
}

/* good */
.success {
    background-color: #ACA;
    color: #90EE90;
}

/* bad */
.success {
    background-color: #ACA;
    color: #90ee90;
}

3.5 2D 位置

[强制] 必须同时给出水平和垂直方向的位置。

解释:
2D 位置初始值为 0% 0%,但在只有一个方向的值时,另一个方向的值会被解析为 center。为避免理解上的困扰,应同时给出两个方向的值。background-position属性值的定义

示例:

/* good */
body {
    background-position: center top; /* 50% 0% */
}

/* bad */
body {
    background-position: top; /* 50% 0% */
}

4.文本编排

4.1 字体族

[强制] font-family 属性中的字体族名称应使用字体的英文 Family Name,其中如有空格,须放置在引号中。

解释:
所谓英文 Family Name,为字体文件的一个元数据,常见名称如下:

字体 操作系统 Family Name
宋体 (中易宋体) Windows SimSun
黑体 (中易黑体) Windows SimHei
微软雅黑 Windows Microsoft YaHei
微软正黑 Windows Microsoft JhengHei
华文黑体 Mac/iOS STHeiti
冬青黑体 Mac/iOS Hiragino Sans GB
文泉驿正黑 Linux WenQuanYi Zen Hei
文泉驿微米黑 Linux WenQuanYi Micro Hei

示例:

h1 {
    font-family: "Microsoft YaHei";
}
[强制] font-family 按「西文字体在前、中文字体在后」、「效果佳 (质量高/更能满足需求) 的字体在前、效果一般的字体在后」的顺序编写,最后必须指定一个通用字体族( serif / sans-serif )

解释:
更详细说明可参考本文。

示例:

/* Display according to platform */
.article {
    font-family: Arial, sans-serif;
}

/* Specific for most platforms */
h1 {
    font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", "WenQuanYi Micro Hei", "Microsoft YaHei", sans-serif;
}
[强制] font-family 不区分大小写,但在同一个项目中,同样的 Family Name 大小写必须统一。

示例:

/* good */
body {
    font-family: Arial, sans-serif;
}

h1 {
    font-family: Arial, "Microsoft YaHei", sans-serif;
}

/* bad */
body {
    font-family: arial, sans-serif;
}

h1 {
    font-family: Arial, "Microsoft YaHei", sans-serif;
}

4.2 字号

[强制] 需要在 Windows 平台显示的中文内容,其字号应不小于 12px

解释:由于 Windows 的字体渲染机制,小于 12px 的文字显示效果极差、难以辨认。

4.3 字体风格

[建议] 需要在 Windows 平台显示的中文内容,不要使用除 normal 外的 font-style。其他平台也应慎用。

解释:
由于中文字体没有 italic 风格的实现,所有浏览器下都会 fallback 到 obilique 实现 (自动拟合为斜体),小字号下 (特别是 Windows 下会在小字号下使用点阵字体的情况下) 显示效果差,造成阅读困难。

6 变换与动画

[强制] 使用 transition 时应指定 transition-property

示例:

/* good */
.box {
    transition: color 1s, border-color 1s;
}

/* bad */
.box {
    transition: all 1s;
}
[建议] 尽可能在浏览器能高效实现的属性上添加过渡和动画。

解释:
见本文,在可能的情况下应选择这样四种变换:

  • transform: translate(npx, npx);

  • transform: scale(n);

  • transform: rotate(ndeg);

  • opacity: 0..1;

典型的,可以使用 translate 来代替 left 作为动画属性。
示例:

/* good */
.box {
    transition: transform 1s;
}
.box:hover {
    transform: translate(20px); /* move right for 20px */
}

/* bad */
.box {
    left: 0;
    transition: left 1s;
}
.box:hover {
    left: 20px; /* move right for 20px */
}

7 响应式

[强制] Media Query 如果有多个逗号分隔的条件时,应将每个条件放在单独一行中。

示例:

@media
(-webkit-min-device-pixel-ratio: 2), /* Webkit-based browsers */
(min--moz-device-pixel-ratio: 2),    /* Older Firefox browsers (prior to Firefox 16) */
(min-resolution: 2dppx),             /* The standard way */
(min-resolution: 192dpi) {           /* dppx fallback */
    /* Retina-specific stuff here */
}

CSS注释

普通注释

/* 普通注释 */

区块注释

/**
 * 模块:m-detail
 * author: xxx
 * edit:   2016.5.02
 */

CSS命名规范

命名组成

  • 命名必须由单词,中划线组成。例如:.info,.news-list

  • 不推荐使用拼音来作为样式名,尤其是缩写的拼音、拼音与英文的混合

  • 所有命名都使用小写,使用中划线 “-” 作为连接字符,而不是下划线 “_“

命名前缀

前缀 说明 示例
g- 全局通用样式命名 g-mod
m- 模块命名方式 m-detail
ui- 组件命名方式 ui-selector
j- 所有用于纯交互的命名,不涉及任何样式规则。 J-switch

不允许出现以类似:.info, .current, .news 开头的选择器,比如:

.info{sRules;}
因为这样将给我们带来不可预知的管理麻烦以及沉重的历史包袱。你永远也不会知道哪些样式名已经被用掉了,如果你是一个新人,你可能会遭遇,你每定义个样式名,都有同名的样式已存在,然后你只能是换样式名或者覆盖规则。所以我们推荐这样写:

.m-xxx .info{sRules;}
所有的选择器必须是以 g-, m-, ui- 等有前缀的选择符开头的,意思就是说所有的规则都必须在某个相对的作用域下才生效,尽可能减少全局污染。 J- 这种级别的className完全交由JSer自定义,但是命名的规则也可以保持跟重构一致,比如说不能使用拼音之类的

命名单词

  • 不以表现来命名,而是根据内容来命名。比如:left, right, center, red, black这种以表现来定命名,不允许出现;

  • 推荐使用功能和内容相关词汇的命名,如:

套系:package
相册:photo-album
作品:works
攻略:raiders
普通用户:normal-user 
达人:talent-user
摄影师:photographer
用户昵称:user-alias
头像:head
地区:area
关注数:follow
粉丝数:followers
互相注意:attention
标签:label
发表时间:publish-date,publish-time
标题:title
信息:info
内容:content
关于我:about
简介内容:intro-content
评论:review 
服务:service
封面:cover
流行:popular
收藏:collect
查看:view
预约:reservation
促销:sale-promotion

(待补充)

编辑器配置

将你的编辑器按照下面的配置进行设置,以避免常见的代码不一致和差异:

  • 使用4个空格缩进

  • 使用Unix风格换行符(LF)

  • 保存文件时,删除尾部的空白符。

  • 设置文件编码为 UTF-8。

  • 在文件结尾添加一个空白行。

参照文档并将这些配置信息添加到项目的 .editorconfig文件中。

// 示例
# css-creating coding style
root = true

# 为所有文件设置风格
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
trim_trailing_whitespace = true
insert_final_newline = true

# 为 Markdown 文件保留行尾空格
[*.md]
trim_trailing_whitespace = false

关于前端之CSS编码规范前端的css的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于bootstrap css编码规范、bootstrap css编码规范_html/css_WEB-ITnose、Css 编码规范、CSS:编码规范等相关知识的信息别忘了在本站进行查找喔。

本文标签: