CSS 命名里面有大学问
其实迟迟不敢开始写关于样式里布局方面的心得,
因为大多数人眼中,哪需要管那么多,只需要最终效果达到了就行了呗。
然而,即使是如今国内外顶级大牛也不敢说自己是个优秀的 CSS 工程师。
一般大公司都是 html 和 css 是分开来写的,一个负责结构和语义,一个负责布局和样式,可见这茬子事并不简单...
CSS 分离与合并
该怎么说呢,
一部分代码其实可以分离出来成为 pt1,代表 padding-top: 1rem 这样的,很多地方可重用;
而另一部分代码可以由多个相似合并成一个,这个我们用得最多了,都懂的。
分离与合并看似矛盾,但都是为精简代码而产生,需要程序员强大的控制力(特别是多页面使用同一 CSS 文件时)。
语义和重用
这两者看似也是矛盾,比如 .index_header_login_btn 拥有十足的语义,但也注定只能被用在首页头部的登录按钮上,失去了复用性。
写多个类去满足复用性不无不可,只是曾写过 #index_header_login_btn .login_btn .btn .btn-sm .btn-outline 之后,我并不认为这事简单了。
.item a 要比 .link 慢得多
这得从渲染原理说起,它遵从“从右至左”原则,
按我的想法来看,一个名称就是渲染树的一个分支,要找 .x 下的 a,得先遍历树,找到 a,再遍历一遍找到 .x,比对层叠覆盖样式,可怕吧。
.box.box1 形态你以为是限定得越死越容易查找就会渲染越快吗,骚年,不要太天真,它是一次次重头遍历的。
不要否定,.x 这种最直接的命名方式渲染效率是最高的。(这条建议很重要)
拒绝 ID!拒绝层级!拒绝标签!
他们的存在只是为了提升样式优先级而已的,都限定死范围了,还谈何重用。
ID 就让它去和 js 搞就好了,不要让它加入到 CSS 的世界里。
性能消耗最大选择器应该是 * 和多 class 选择器(比如 .foo.bar)
.x > * 显然他是很烧的,但又实在没有更好替代办法,所以表示我也很难抉择。
宽度分离
这也是为什么菜单我们总是用 ul > li > a 来套,而不是 div > a 的原因,a 的父级去设宽高,a 负责 padding 就好了。
能不设宽度坚决不设,不但是弹性布局的基础,也是避免子级设宽高溢出,
另外在没有 border-box 的情况下,padding 的更改还得牵扯到 width 的重新计算。
其实没有宽度,也还是可以通过 padding | margin | absolute 来进行设定的。
写码一时爽,微调和改需求才是常态...
完全兼容 or 渐进增强
其实吧,这方面我自己都没怎么在乎过,实在不是一个好的前端...
比如 [type="range"] 在各家浏览器上模样都不一样,那要不要完全兼容非得搞成一个样呢,
但 text-shadow 在一些浏览器上不支持,是不是就不管了呢,
这个问题,因人而异吧。此时庆幸自己是个金牛座。
CSS 命名里面有大学问的更多相关文章
- (转)面向属性的CSS命名
原文链接:戳这里 自从开始做前端开发以来,我发现在开发页面的时候,总是有一个问题十分影响自己的开发效率,这个问题就是css的命名,主要是指css类选择器的命名.这个问题主要体现在:第一,有的内容你压根 ...
- 面向属性的CSS命名
自从开始做前端开发以来,我发现在开发页面的时候,总是有一个问题十分影响自己的开发效率,这个问题就是css的命名,主要是指css类选择器的命名.这个问题主要体现在:第一,有的内容你压根想不出用什么名字来 ...
- CSS命名规范
DIV+CSS规范命名大全集合 前端人员必看CSS命名规范 整理: 文件名必须由小写字母.数字.中划线组成 ).所有的命名最好都小写,一律采用小写加中划线的方式,不允许使用大写字母或 _2).属性的值 ...
- 精简高效的css命名准则
对于css,为了避免样式冲突,我们总会赋予相当特殊的命名,或是在选择符上添加html标记,或是使用层级.我们为避免在冲突上做文章,就会把代码的命名变得复杂化. 如果css的重用性越高,相比就越高效.如 ...
- html,css命名规范 (转)
HTML+CSS命名规范总结 1.HTML部分 1.1添加必须的utf-8的字符集,并且使用HTML5的简洁 方式: <meta charset="utf-8"> 1. ...
- Div+CSS命名规范
注意事项:1.命名遵循驼峰式 2.尽量用中文 3.不加中杠和下划线 4.尽量不缩写,除非一看就明白的单词 头:header 标志:logo 友情链接:friendlink 内容:c ...
- CSS命名
CSS命名规范 CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体:main 页尾:footer 导航:n ...
- 常用的css命名规则:
关于团队合作的css命名规范 常用的css命名规则: 头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制 ...
- 常用的css命名规则
头:header 内容:content/container 尾:footer 导航:nav 侧栏:sidebar 栏目:column 页面外围控制整体布局宽度:wrapper 左右中:left rig ...
随机推荐
- Unity3D 移动开发代码优化
1. 尽量避免每帧处理 比方: function Update() { DoSomeThing(); } 可改为每5帧处理一次: function Update() { if(Time.frameCo ...
- php基本语法之逻辑运算符
百度经验 | 百度知道 | 百度首页 | 登录 | 注册 新闻 网页 贴吧 知道 经验 音乐 图片 视频 地图 百科 文库 帮助 首页 分类 杂志 任务 签到 回享计划 商城 知道 百度经验 > ...
- MathType可以编辑省略号吗
说到省略号大家可能会想到写文章的时候会用到,其实在数学中也会常常的使用到.当数学过程是重复有规律性的过程时,就会用到它.MathType是一款数学公式编辑器,那么,在数学公式中,MathType编辑时 ...
- C++11写算法之二分查找
同样的,二分查找很好理解,不多做解释,要注意二分查找的list必须是排好序的. 这里实现了两种二分查找的算法,一种递归一种非递归,看看代码应该差不多是秒懂.想试验两种算法,改变一下findFunc函数 ...
- 服务器之FRU
EEPROM是server主板上的电可擦除可编程只读存储器, 里面存储了FRU data, 包括制造商,产品型号,产品序列号,资产序列号等信息,为厂商和客户提供资产信息管理. 所以正确的FRU格式以及 ...
- Yii 2 的安装 之 踩坑历程
由于刚接触yii2 ,决定先装个试试:可是这一路安装差点整吐血,可能还是水平有限吧, 但还是想把这个过程分享出来,让遇到同样问题的同学有个小小的参考,好了言归正传!! <(~.~)> 下 ...
- CodeIgniter框架——源码分析之Config.php
CI框架的配置信息被存储在$config数组中,我们可以添加自己的配置信息或配置文件到$config中: $this->config->load('filename'); //加载配置文件 ...
- 位运算+引用+const+new/delete+内联函数、函数重载、函数缺省参数
update 2014-05-17 一.位运算 应用: 1.判断某一位是否为1 2.只改变其中某一位,而保持其它位都不变 位运算操作: 1.& 按位与(双目): 将某变量中的某些位(与0位与) ...
- influxDB---Data Exploration
the group clause group by 返回的分组结果是根据用户指定的tag ,time interval. 1.group by tags 2.group by time interva ...
- 【Python之路】第十三篇--DOM
文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把 ...