开发过程中应该遵守哪些编码规范和CLASS命名规范?

1.背景介绍

团队开发过程中,如果编码不规范,很容易造成出现bug之后难以维护等问题 所以一个具有普适性的编码规范具有很重要的意义. 黄金原则:不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的。

2.知识剖析

HTML规范

一.DOCTYPE的声明: 每个HTML开头使用!doctype来启用标准模式声明,在此建议使用HTML5的声明模式

二.字符集和编码字符: 在每个页面的head中设置字符集,一般都是使用"UTF-8"

三.语法: 使用四个空格的缩进 在属性上使用双引号 不要忽略可选的关闭标签

四.引入css样式以及js脚本: 需要采用外链的形式引入css样式/js脚本,方便管理和修改

五.正确的标签嵌套 

除了固定的嵌套规则(如ul包含li,ol包含li等),一般遵循以下规则:

1.块级元素与块级元素平级、内联元素与内联元素平级

2.块级元素可以包含内联元素或某些块级元素,但内联元素不能包含块级元素

3.有几个特殊的块级元素只能包含内联元素,不能再包含块级元素 h1~h6、p、dt。

4.块级元素不能放在标签p里面。

5.li标签可以包含div标签,因为li和div标签都是装在内容的容器。

六.属性顺序 

HTML属性应该按照特定的顺序出现保证可读性

除了固定的嵌套规则(如ul包含li,ol包含li等),一般遵循以下规则:

1.class

2.id、name.

3.data-*

4.src,for,tpye,href等

5.title,alt

6.role,aria-*

七.逻辑顺序 

尽量让自己的网站按照先后顺序 比如先写页头,在写页体,最后写页脚

CSS书写规范

一.声明顺序 

1.positioning 定位

2.因为可使一个元素脱离文档流,覆盖盒模型相关的样式

3.Box model盒模型

4.Typographic 排版

5.Visual 外观

二.媒体查询 

尽量将媒体查询的位置靠近他们的相关的规则。不要把他们放在一个独立 文件当中,也不要写在最底下,以免容易忘记

三.CLASS的命名

不但要自己能看懂代码,也要别人能轻松读懂自己的代码。

1.规则命名中,一律采用小写加中划线的方式,不允许使用大写字母或_

2.命名避免使用中文拼音,应该采用更简明有语义的英文单词进行组合+

3.不允许通过1、2、3等序号进行命名;避免class与id重名

4.class用于标识某一个类型的对象,命名必须言简意赅

5.尽可能提高代码模块的复用,样式尽量用组合的方式

6.规则名称中不应该包含颜色(red/blue)、定位(left/right)等与具体显示效果相关的信息。 应该用意义命名,而不是样式显示结果命名

四.属性简写 

坚持限制属性取值简写的使用,过度使用属性简写往往会导致更混乱的代码。 常见的属性简写滥用包括: padding,margin,font,background等

3.常见问题

class命名有什么常用的方式?

4.解决方案

原子类命名 

这个关键在于拼凑组合.ft{folat:right;}

模块命名 

按照职能划分命名规则 nav模块,可以命名为nav-tittle、nav-left

BEM命名 

BEM的优点是独一无二 ,不用担心自己的样式被覆盖 缺点就是class名太长了,修改更新不方便

5.编码实战

demo

6.扩展思考

在实际写代码的时候到底该如何选择命名方式? 可以记住常见的class关键词,在此基础上特殊化class 也可以参考github上的热门项目

7.参考文献

参考一:推酷

参考二:豆瓣

8.更多讨论

常用的class关键词有哪些?


三个问题:

1.属性的声明应该按照什么顺序?

解答:

相关的属性声明应该以下面的顺序分组处理:

1、Positioning位置属性(position, top, right, z-index, display, float等)

2、Box model盒模型 (width,height,padding,margin)

3、Typographic排版(font,line-height,letter-spacing,color,text-align等)

4、Visual外观(background,border等)

Positioning处在第一位,因为他可以使一个元素脱离正常文本流,并且覆盖盒模型相关的样式。盒模型紧跟其后,因为他决定了一个组件的大小和位置。

其他属性只在组件内部起作用或者不会对前面两种情况的结果产生影响,所以他们排在后面。

2.css命名在什么情况下必须用到层级?

解答:

因为只有定位了的元素才有设置层级的必要。

正常的div只有一层文档流,div按先后顺序从上往下排。

设置了定位的元素脱离了这个文档流。但是,其实定位元素也不是一定非得设置层级。如果你的定位元素代码也是按照“先写的在下层,后写的在上层”这种规则写的,那就不用设置层级。

但在实际的复杂网页中,可能并没有遵循这种规则,所以需要设置层级来设置上下前后顺序

3.如何减少css的声明?

解答:

比如有一对象,在公共CSS文件中定义过:div#code{top:1px;right:1px;}

但现在需要在显示的地方重新定义为:div#erweima{bottom:1px;right:1px;},即要取消之前的定义top:1px。

现在我改为:div#erweima{top:;bottom:1px;right:1px;},也就是给top弄空值,但是浏览器显示的结果还是自动读取在公共CSS中的定义,top:;这种方式浏览器不承认赋空。

注意,我说的那个是公共CSS,所以说,这个问题的前提是不修改公共CSS.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容