CSS规范--春风十里不如写好CSS
先吟几句:
最近看了看春风十里不如你,本来很少看剧的,暑假有点闲就看了,感觉不错,挺喜欢这部剧,就套了个名字,嘿嘿嘿。剧里面印象深刻的是《致橡树》这首诗,念几句:
我如果爱你,绝不像攀援的凌霄花,借你的高枝炫耀自己;
我如果爱你,绝不学痴情的鸟儿,为绿荫重复单调的歌曲;
也不止像险峰,增加你的高度,衬托你的威仪。
不骚了,回到正题,写css也一样需要爱,你爱一门技术就要用心付出,对知识寸土必争,寸草必得。写css容易,写好就需要下功夫了。如果我爱你,就会去研究怎么去写好你,下面先说说怎么规范的写css。
css语法规范:
- 每条属性声明占一行,增加易读性
/*bad*/
body{margin: 0;padding: 0;}
/*good*/
body{
margin: 0;
padding: 0;
}
- 颜色采用十六进制写法(不使用颜色名),并且能够简写的进行简写:
/*bad*/
.example{
color: #ffaabb;
}
/*good*/
.example{
color: #fab;
}
- 0值的单位进行省略,如将margin:0px,写成margin:0:
/*bad*/
.example{
margin: 0px;
}
/*good*/
.example{
margin: 0;
}
- 有选择器组时,每个选择器占一行:
body,
html,
p{
margin: 0;
padding: 0;
}
- 连字符使用-,而不使用_,因为能少按一个shift就少按,还有和js变量命名区分开。
/*bad*/
.index_list {}
/*good*/
.index-list {}
- 选择器避免使用标签名。(首先可能使得一些不必要的标签带上样式,其次会对选择器寻找上也会在一定程度上浪费时间)
/*bad*/
.index-list li{}
/*good*/
.index-list .item{}
- 媒体查询,不要写在文档最后或分开到另外文档,应该写在相应规则的附近,这样有利于修改和阅读
.index-nav{
margin-top: 10px;
}
/*和相关的规则一起放*/
@media (min-width: 480px){
.index-nav{
margin-top: 5px;
}
}
- 前缀,css3的一些属性要注意带上前缀:
.selector {
-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);
box-shadow: 0 1px 2px rgba(0,0,0,.15);
}
- 引号方面,使用双引号而不使用单引号,url不用使用引号:
/*no good*/
.example{
font-family: 'Times New Roman',Georgia,Serif;
background: url("../images/icon.png");
}
/*good*/
.example{
font-family: "Times New Roman",Georgia,Serif;
background: url(../images/icon.png);
}
- 每条属性声明语句结束后加上分号,最后一条声明可省略分号,但不建议
- 每个属性声明的冒号(:)后添加一个空格
- 小于1的小数点的值,省略0,如0.5px,可写成.5px
- 避免使用@ import指令。应使用link标签来引入css文件
- 避免使用!important,这个优先级最高,滥用会使得维护困难,代码混乱
- Less,Sass等预处理言的嵌套不超过3层
- 避免使用id:(因为id优先级高,且具有唯一性,复用性差,而且id是html与js的挂钩,class是HTML与css的挂钩,这样能够让代码更为的清晰,不用说看到一个id,既要到js里查查有没有什么用,又到css里看看有什么样式,确实麻烦。)
- 注释需要全面易懂,不要只写一点
css属性声明顺序规范:
css属性的书写顺序大致分为4组,从上到下依次书写:
- Positioning Model(定位的相关属性):
- 有position,display,TRBL,z-index,float,overflow等
- Box Model (盒子模型的属性):
- 有margin,padding,border,width,height等
- Typographic (文本,排版)
- 有font,line-height,text-align
- Visual (视觉方面的)
- 有background,color,transition,list-style
例子:
.example{
content: "hello";
/*positioning*/
position: absolute;
top: 10px;
left: 12px;
/*box model*/
margin-top: 20px;
width: 100px;
heith: 100px;
/*typographic*/
text-align: center;
font-size: 12px;
/*visual*/
color: #f00;
background-color: #0f0;
}
特别的:如果有content属性时,需要把其放到最前面
css的文件分类:
文件分类这不会有什么标准,分好,适合自己开发和维护便可。比如:可以有公共的css,某个页面的css,重置的css,皮肤的css,部件的css等,可根据自己的需求,习惯等分类。不必太过拘束。
- common.css(通用)
- main.css(主要)
- reset.css(重置)
- skin.css(皮肤)
……
css选择器命名:
命名这东西可以说让每个前端开发的人员苦恼的东西,有时得想半天去想一个名字,煎熬啊。老是想,到底怎么样的命名才比较好呢?我这样命名接着会不会重复?等等。。。
到底怎样命名才比较规范,参考一下NEC规范或者是BEM规范。个人比较喜欢NEC,因为其比较简约些,详细的可以到NEC官网上看看。
看看NEC的分类:
- 布局(grid)(.g-):将页面分割为几个大块,通常有头部、主体、主栏、侧栏、尾部等!
- 模块(module)(.m-):通常是一个语义化的可以重复使用的较大的整体!比如导航、登录、注册、各种列表、评论、搜索等!
- 元件(unit)(.u-):通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块中!比如按钮、输入框、loading、图标等!
- 功能(function)(.f-):为方便一些常用样式的使用,我们将这些使用率较高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清除浮动等!不可滥用!
- 皮肤(skin)(.s-):如果你需要把皮肤型的样式抽离出来,通常为文字色、背景色(图)、边框色等,非换肤型网站通常只提取文字色!非换肤型网站不可滥用此类!
- 状态(.z-):为状态类样式加入前缀,统一标识,方便识别,她只能组合使用或作为后代出现(.u-ipt.z-dis{},.m-list li.z-sel{})
我们参考NEC的分类命名的规范,学习学习它的命名,可以照着使用,也可以有自己不同的命名,可以根据团队的习惯等。规矩是死的,人是活的,能灵活去变通才是最好的,能够写出清晰易懂的代码就ok。
css命名常用单词:
- 头:header
- 尾:footer
- 导航:nav
- 侧栏:sidebar
- 栏目:column
- 外围容器:wrapper
- 登录条:loginbar
- 标志:logo
- 广告:banner
- 页面主体:main
- 热点:hot
- 新闻:news
- 下载:download
- 子导航:subnav
- 菜单:menu
- 子菜单:submenu
- 搜索:search
- 友情链接:friendlink
- 页脚:footer
- 版权:copyright
- 滚动:scroll
- 内容:content
- 标签页:tab
- 文章列表:list
- 信息:msg
- 小技巧:tips
- 标题:title
- 加入:joinus
- 指南:guild
- 服务:service
- 注册:regsiter
- 状态:status
- 投票:vote
- 合作伙伴:partner
- 容器:container
- 按钮:button
单词这方面能看懂就好,英语也要学号才行啊,有时候不懂怎么命名,就查查英文单词怎么写,看得出英语还是很重要啊。css的命名单词长度不要太长太冗余,看懂就好,有些单词过长可以适当的缩写一下。
最后说说:
如果想学好一门技术,就想要从各个方面研究他,本文也是,了解css也要css的规范,这对于强迫症的人就是很好的疗药,我就是这样,总觉得自己的css写得太不规范,也不容易维护,想要去修饰好,所以写写博客来强迫自己去改正,博客是个好东西,写给自己看看同时也写给别人看,所以这会有约束,从而不断的修饰改正错误,从中自己也会学到很多东西,可谓春风十里不如写博客。
CSS规范--春风十里不如写好CSS的更多相关文章
- 春风十里不如你,全新Windows UI 3(WinUI 3) 的第一个实现Project Reunion 0.5
什么是WinUI Windows UI库 (WinUI) 是适用于 Windows 桌面应用程序和 UWP 应用程序的本机用户体验 (UX) 框架. WinUI is a user interface ...
- 谈谈一些有趣的CSS题目(十五)-- 谈谈 CSS 关键字 initial、inherit 和 unset
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- CSS规范(OOCSS SMACSS BEM)
Css规范 OOCSS SMACSS BEM OOCSS(Object Oriented CSS)面向对象的css 主要分成四个部分 Template :模板 Grids :栅格布局 Module : ...
- 谈谈一些有趣的CSS题目(十四)-- 纯 CSS 方式实现 CSS 动画的暂停与播放!
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 谈谈一些有趣的CSS题目(十五)-- 奇妙的 background-clip: text
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 谈谈一些有趣的CSS题目(十六)-- 奇妙的 background-clip: text
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- 第十四章 校本化CSS
CSS(层叠样式表)是一种指定HTML文档视觉的表现的标准.CSS本来是让视觉设计师来使用的:它允许设计师精确的对文档元素的字体 ,颜色,外边距,缩进,边框甚至是定位.不过,客户端javascript ...
- 有利于SEO的DIV+CSS规范小结
一.CSS文件及样式命名 1.CSS文件命名规范 全局样式:global.css:框架布局:layout.css:字体样式:font.css:链接样式:link.css:打印样式:print.css: ...
- 谈谈一些有趣的CSS题目(十二)-- 你该知道的字体 font-family
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
随机推荐
- centos生成公钥私钥 securecrt通过公钥访问服务器 winscp通过公钥访问服务器
忙碌了一下午,一直到写博客现在.都在纠结阿里云服务器上配置公钥私钥,网上的说辞总是参差不齐,需要各个去综合,合理取舍.今天终于配置好了. 我就不说这种方式的重要性了,往往黑客都不需要你的登陆账户密码就 ...
- 我的学习之路_第二十五_javaScript
Javascript 作用:可以对表单数据进行校验,可以对页面实现一些动态效果 定义: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型. 它的解释器被称为 ...
- UGUI 字体背景长度自适应
本文实现以下需求: 在UGUI中 Text为动态添加 要使Text字体背景随着Text的长度而变化 之前还在赞叹UGUI的强大 转念一想,UGUI中好像没有可以实现此功能的组件 也想出了一种办法 把背 ...
- vue和mvvm的一些小区别
Vue.js 和 MVVM 小细节 MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这 ...
- Linux下mysql远程连接问题
[旧博客转移 - 发布于2015年9月6日 18:42] 在Linux上装好Mysql后 发现远程客户端连接不上 出现这种情况是因为mysql服务器出于安全考虑,默认只允许本地登录数据库服务器. ...
- gulp总结
安装 1.安装node 检测是否安装成功的方法,在命令行输入: node -v npm -v 显示版本号则安装成功 2.装cnmp一定要网络好一点 npm install cnpm -g --regi ...
- Javasript 正则匹配任意字符
今天在写Js匹配任意字符的时候发现使用.不好使,当输入内容有回车的时候就会失效. 后来上网查,发现js的任意字符不包括\n. 本来想写一个trim后长度为10的正则验证,最后使用[\s|\S]来代替任 ...
- Gulp安装流程、使用方法及cmd常用命令导览
Gulp安装流程.使用方法及CMD常用命令导览 来自前端小白的gulp及周边知识学习总结 一.名词介绍: Npm--node包管理工具 一开始我不理解,包管理工具是什么鬼.后来用到的gulp也好,gu ...
- Java中的二进制及基本的位运算
Java中的二进制及基本的位运算 二进制是计算技术中广泛采用的一种数制.二进制数据是用0和1两个数码来表示的数.它的基数为2,进位规则是"逢二进一",借位规则是"借一当二 ...
- Android之圆点导航的两个案例(ViewPager)
案例一效果: 布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" ...