我们想一下以下问题:

1、什么样子的css代码才是高效的?

2、什么样子的css代码才是便于维护的?

3、什么样子的css才是可扩展的?

带着以下问题咱们简单的说一下css的“性能”问题

虽然我技术不是很好  但是我会说以下的代码不要用

*{margin:0; padding:0; border:none;}

这样的代码如果你写出来的话那么不算一个前端(除非你做了一个很简单只有十行代码的demo)

那么咱们再看这个

.box{border:;}
.box{border:none;}

这两行代码哪一种更好  可能很多人都觉得 一样   (其实不一样) 最后一行代码浏览器解析是不会做出渲染动作的 也就不会消耗内存值  同理以下代码也是最后一个代码更好 道理同上

.box{visibility: hidden;}
.box{display: none;}

哈哈。。不会这么简单吧。。。。(答案是不会)

大家都知道 #box{/*里边是代码*/} 的渲染是最快的  但是千万不要出现这种代码 例如

ul#main-navigation{}

ID 是唯一的,所以不需要用标签修饰,这只会让它更低效。

当然也不需要

ul.classbox{}

直接写上classbox这个类名更高效一点,因为css渲染是从右边到左边渲染的 ,他找到了 classbox 还需要匹配ul标签,何不直接匹配呢? 就像jq的操作dom 一样(扯远了。。。)

后代选择器是CSS里最昂贵的选择器,昂贵得可怕——特别是当它放在标签和通用符后面时

html body ul li a { }

这个绝对不可以啊  这需要匹配多少次啊  让你去做匹配你不累啊。。。(人性化一点)

PS:

1、千万不要用 css表达式 可能有人跟你说那个东西很强大,对就是很强大,强大到我有一点恐惧,因为他为了计算的很精确他会不停的计算  你可能写一个表达式就是计算一下某个合资的高度除以2 但是你会发现当你滑动屏幕或者缩小屏幕 甚至鼠标划上去 特也会计算  计算高达上千次 不是谎话。。

2、千万不要用important! 至于为什么    等你看到上百行代码都加了这个的代码 然 让你改版的时候你都想砸电脑了。。。无非就是提高层级  换成 css 的层级 实在不行咱们去覆盖也比这个坏蛋要强。。

以下为需要注意的 :

一:css 命名 、书写规范;(好的代码看上去就很整齐 很有条理性这样方便日后的维护和管理)
二:css优先级; 选择器权重:内联样式:1000,id选择器:1000, class选择器:10,标签选择器:1  注意权重的问题。
三:少用滤镜,少用hack,少用position:absolute;。
四:多用继承属性。
五:使用简写样式:例如margin: 10px; 浏览器会解释为上下左右各有10px的外补丁。margin: 0 10px 浏览器解析为 左右有10px的外补丁。
六:
不要在ID选择器和class选择器前 使用标签名 例如:div.box { color: #f00; }; 直接 可以 用类名, .box {
color:#f00;}  这样浏览器找到这个class后 就不用再匹配是否存在div标签.从而提高了渲染效率。当然同一级的
有不同的样式可以这样写,但是不建议这样。
七:css的层级关系不要太深 用class直接代替多余的层级元素。例如 .box .box-con .box-list li { line-height: 24px; } 这么长。。。增加代码量减小开发效率。刚也说了,css渲染是从上到下,从右到左的
所以直接这样写就可以了.box-list li { line-height: 24px; };

八:平铺背景图片不要过小,影响渲染速率。
九:float使用要谨慎。
十:合理化布局(模块化布局);可以把样式划分为 基类 和扩展类 ;模块化布局 :模块基本相同的样式写在 基类里,不同的在重新用class来定义称为扩展类 。

CSS 优先级法则:

A  选择器都有一个权值,权值越大越优先;

B  当权值相等时,后出现的样式表设置要优于先出现的样式表设置;

C  创作者的规则高于浏览者:即网页编写者设置的CSS 样式的优先权高于浏览器所设置的样式;

D  继承的CSS 样式不如后来指定的CSS 样式;

E  在同一组属性设置中标有“!important”规则的优先级最大;

PS: css 渲染是从右边到左边的 !,css 渲染是从右边到左边的 !,css 渲染是从右边到左边的 !(重要的事情说三遍)

如何使CSS--better(系列一)的更多相关文章

  1. CSS 魔法系列:纯 CSS 绘制各种图形《系列六》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  2. CSS 魔法系列:纯 CSS 绘制各种图形《系列五》

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  3. CSS 魔法系列:纯 CSS 绘制图形(各种形状的钻石)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  4. CSS 魔法系列:纯 CSS 绘制图形(心形、六边形等)

    <CSS 魔法系列>继续给大家带来 CSS 在网页中以及图形绘制中的使用.这篇文章给大家带来的是纯 CSS 绘制五角星.六角形.五边形.六边形.心形等等. 我们的网页因为 CSS 而呈现千 ...

  5. CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)

    我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...

  6. IE CSS Bug 系列

    1.[IE CSS Bug系列]IE6&IE7图片链接无效 <!doctype html> <html> <head> <meta charset=& ...

  7. JQuery - 动态添加Html后,如何使CSS生效,JS代码可用?

    今天在开发JQuery Mobile程序时候,需要从服务器取得数据,随后显示在页面上的Listview控件中,数据完整获取到了,也动态添加到Listview控件中,但是数据对应的CSS没有任何效果了, ...

  8. CSS学习系列4 -- 再说CSS中的浮动运用及clear:left/right实际用法

    在 CSS学习系列2 -- CSS中的清除浮动 中,我们详细说了CSS中清除浮动的方法及使用 后来我自己在项目开发一个需要使用浮动的网页时,进行了实际运用,加上后来看到一篇好文章.所以就在这里再次写篇 ...

  9. HTML和CSS 入门系列(一):超链接、选择器、颜色、盒模式、DIV布局、图片

    一.超链接 二.CSS选择器 CSS的全称叫做: Cascading Style Sheets 级联样式表的缩写. 2.1 类型选择器 2.2 派生选择器 2.3 伪类选择器 <style &g ...

  10. HTML和CSS 入门系列(二):文字、表单、表格、浮动、定位、框架布局、SEO

    上一篇:HTML和CSS 入门系列(一):超链接.选择器.颜色.盒模式.DIV布局.图片 一.文字 1.1 属性 1.2 字体样式:font-family 1.3 字体大小:font-size 1.4 ...

随机推荐

  1. 【MySQL】undo,redo,2PC,恢复思维导图

    http://blog.itpub.net/22664653/viewspace-2131353/

  2. selenium 调用方法

    #coding:utf-8 from selenium import webdriver url = "http://demo.testfire.net" chrome_optio ...

  3. asp.net使用母版页以及Jquery和prototype要注意的问题

    在母版页中引用了js,css或者其他外部文件之后,子页面就不必再重新引用,否则可能出错 prototype.js和jquery.js冲突的解决方案: <script type="tex ...

  4. 转:100.64. 开头IP地址问题

    100.64. 开头IP地址问题 姚洪楼 发表于 学习备忘录 分类,标签: 电信 08二月2015 0 之前调试过一个路由器在成功设置DDNS的情况下外网依旧无法访问的情况,当时没有多想什么,一直以为 ...

  5. 三分钟教你学Git(十三) - 二分查找

    比方说你收到了错误报告,然后你知道前几天明明是好的.可是这几天有好多新的commit被部署了.那么我们怎么迅速的找到第一个引入Bug的commit呢? 我们能够使用git bisect,git利用二分 ...

  6. Node.js 读取博客首页并获得文章标题

    app.js // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require(' ...

  7. JS杂技之无中间变量的值交换方式

    从http://www.cnblogs.com/liuyitian/p/4081517.html#3074553看到一种无中间变量的值交换方式,具体如下: var a = 1;var b = 2;a ...

  8. CPC23-4-K. 喵喵的神数 (数论 Lucas定理)

    喵喵的神∙数 Time Limit: 1 Sec Memory Limit: 128 MB Description 喵喵对组合数比較感兴趣,而且对计算组合数很在行. 同一时候为了追求有后宫的素养的生活 ...

  9. 仿IOS中下拉刷新的“雨滴”效果

    在IOS中,有非常赞的"水滴"下拉效果.非常久之前也想在Android上实现,可是苦于能力有限,一直未能付诸行动.这几天趁着空隙时间.写了一版初步实现,基本达到了"水滴& ...

  10. Effective C++ Item 25 考虑写出一个不抛异常的swap函数

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie 经验:当std::swap对你的类型效率不高时,提供一个swap成员函数,并确定这个函数不抛 ...