HTML、CSS代码规范

1. HTML代码规范

1.1 命名

  • classid 必须单词全字母小写,单词间以 - 分隔。
  • class 必须代表相应模块或部件的内容或功能,不得以样式信息进行命名。
  • 元素 id 必须保证页面唯一。
<!-- good -->
<div class="sidebar"></div>

<!-- bad -->
<div class="red"></div>
  • idclass 命名,在避免冲突并描述清楚的前提下尽可能短。
<!-- good -->
<div id="nav"></div>
<!-- bad -->
<div id="navigation"></div>

<!-- good -->
<p class="comment"></p>
<!-- bad -->
<p class="com"></p>
  • 同一页面,应避免使用相同的 nameid
    解释:
    IE 浏览器会混淆元素的 id 和 name 属性, document.getElementById 可能获得不期望的元素。所以在对元素的 id 与 name 属性的命名需要非常小心。

1.2 标签

  • 标签名必须使用小写字母。
  • 对于无需自闭合的标签,不允许自闭合。
  • 解释:
    常见无需自闭合标签有inputbrimghr等。
  • HTML5 中规定允许省略的闭合标签,不允许省略闭合标签。
  • 标签使用必须符合标签嵌套规则。
  • HTML 标签的使用应该遵循标签的语义。
<!-- good -->
<p>Esprima serves as an important <strong>building block</strong> for some JavaScript language tools.</p>

<!-- bad -->
<div>Esprima serves as an important <span class="strong">building block</span> for some JavaScript language tools.</div>

1.3 属性

  • 属性名必须使用小写字母。
<!-- good -->
<table cellspacing="0">...</table>

<!-- bad -->
<table cellSpacing="0">...</table>
  • 属性值必须用双引号包围。
  • 布尔类型的属性,建议不添加属性值。
<input type="text" disabled>
<input type="checkbox" value="1" checked>
  • 自定义属性建议以 xxx- 为前缀,推荐使用 data-
<ol data-ui-type="Select"></ol>

2. CSS代码规范

2.1 空格

  • 选择器{ 之间必须包含空格。
  • 属性名 与之后的 : 之间不允许包含空格, :属性值 之间必须包含空格。
  • 列表型属性值 书写在单行时,, 后必须跟一个空格。
font-family: Arial, sans-serif;

2.2 选择器

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

/* bad */
.post, .page, .comment {
    line-height: 1.5;
}
  • >+~ 选择器的两边各保留一个空格。
  • 属性选择器中的值必须用双引号包围。
/* good */
article[character="juliet"] {
    voice-family: "Vivien Leigh", victoria, female
}

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

2.3 属性

  • 属性定义必须另起一行。
/* good */
.selector {
    margin: 0;
    padding: 0;
}

/* bad */
.selector { margin: 0; padding: 0; }
  • 属性定义后必须以分号结尾。
/* good */
.selector {
    margin: 0;
}

/* bad */
.selector {
    margin: 0
}

2.4 选择器

  • 如无必要,不得为 idclass 选择器添加类型选择器进行限定。
    解释:
    在性能和维护性上,都有一定的影响。

2.5 属性

  • 同一 rule set 下的属性在书写时,应按功能进行分组,并以 Formatting Model(布局方式、位置) > Box Model(尺寸) > Typographic(文本相关) > Visual(视觉效果) 的顺序书写,以提高代码的可读性。
    • Formatting Model 相关属性包括:position / top / right / bottom / left / float / display / overflow
    • Box Model 相关属性包括:border / margin / padding / width / height
    • Typographic 相关属性包括:font / line-height / text-align / word-wrap
    • Visual 相关属性包括:background / color / transition / list-style

2.6 值与单位

  • 当数值为 0 - 1 之间的小数时,省略整数部分的 0
/* good */
panel {
    opacity: .8;
}

/* bad */
panel {
    opacity: 0.8
}
  • 长度为 0 时须省略单位。 (也只有长度单位可省)
/* good */
body {
    padding: 0 5px;
}

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

  • 颜色值可以缩写时,必须使用缩写形式。
/* good */
.success {
    background-color: #aca;
}

/* bad */
.success {
    background-color: #aaccaa;
}

2.7. 常见命名

常见命名1
.wrap 或 .wrapper  用于外侧包裹
.container 或 .ct  包裹容器
.header  用于头部
.body  页面 body
.footer  页面尾部
.aside 或 .sidebar  用于侧边栏
.content 和 .header .footer 对应, 用于主要内容
.navigation  导航元素
.pagination  分页


常见命名2
.tabs > .tab  tab切换
.breadcrumbs  导航列表、面包屑
.dropdown  下拉菜单
.article  文章
.main  用于主体
.thumbnail 头像、小头像
.media  媒体资源
.panel  面板
.tooltip  鼠标放置上去的提示
.popup  鼠标点击弹出的提示


常见命名3
.button 或 .btn  按钮
.ad  广告
.subnav  二级导航
.menu  菜单
.tag  标签
.message 或 .notice  提示消息
.summary  摘要
.logo  logo
.search  搜索框
.login  登陆


常见命名4
.register  注册
.username  用户名
.password  密码
.banner  广告条
.copyright  版权
.modal 或 .dialog  弹窗


常见命名5
var 名字 = {
    状态: [
        'inverse',  相反的、倒转,可以表示反转的状态(reverse)
        'toggled',  拴牢、系紧(绑定 binding)
        'switched',  转换的、开关
        'original',  原始的、原型
        'initial',  最初的
        'identified',  被识别的、被认同者(标识符 identifier)
        'disabled',  残废的,无法使用的,可以表示禁用的状态
        'loading',  载入,可以表示加载的状态
        'pending',  在...期间,可以表示阻塞的状态
        'syncing',  同时发生
        'default'  默认
    ],
    修饰: [
        'dark',  黑暗的、深色的
        'light', 明亮的、浅色的
        'shaded',  色彩较暗的
        'flat',  扁平的
        'ghost',  幽灵,可以用来表示 根据情况展现或消失
        'maroon',  褐红色、孤立的,可以用来表示单独的(孤独 alone)
        'pale',  苍白的、屋里的、暗淡的,可以用来表示 失去某种状态的样子(.popup 好像更贴切)
        'intense', 强烈的、紧张的、热情的,可以用来表示动效多的元素的样子(.active 好像更贴切)
        'twisted', 扭曲的,可以用来表示变形的元素的样子(.transformation 好像更贴切)
        'narrow',  狭窄的、勉强的、有限的
        'wide',  宽的、广阔的、充分的
        'smooth',  顺利的、光滑的
        'separate', 分开的、不同的
        'clean', 清洁的、干净的,可以用来表示 清除状态
        'sharp',  急剧的、锋利的
        'aligned'  对齐的、均衡的
    ],
    元素: [
        'pagination',  标记页数、页码,用于 分页
        'modal',  模式的、情态的,用于 弹窗(对话、回话 dialog)
        'popup',  弹出、发射,用于 鼠标点击弹出的提示,也可以用于弹窗
        'article',  文章
        'story',  故事、小说
        'flash',
        'status',  状态、情形
        'state',  情形
        'media',  媒体
        'block',  块
        'card',  卡片(和 panel 类似)
        'teaser',  戏弄者、强求者
        'badge',  徽章、标记(符号 sign、标签 label、标记 符号 mark)
        'label',  标签
        'sheet',  表
        'poster',  海报、广告(横幅图片 banner、广告 ad)
        'notice',  通知、公告(消息 message)
        'record',  记录、录音
        'entry',  进入、入口、登记
        'item',  条款、项目
        'figure',  计算、出现(计算 calculate)
        'square',  正方形
        'module',  模块、组件
        'bar',
        'button',
        'action',  活动、功能(活跃的 active)
        'knob'  鼓起、突出
    ],
    布局: [
        'navigation',  导航
        'wrapper',  用于外侧包裹(wrap)
        'inner',  内部的
        'header',  头部、页眉
        'footer',  底部、页脚
        'aside',  侧边栏(sidebar)
        'section',  节
        'divider',  除法器、分隔物(使分离 分开 separate)
        'content',  用于主要内容
        'container',  用于包裹容器
        'panel',  面板
        'pane',  也可以用于面板
        'construct',  构造、建造
        'composition',  构成、合成物
        'spacing',  调节间隔
        'frame'  框架
    ]
}

参考链接:
HTML编码规范
CSS编码规范

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