我们想一下以下问题:

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. How To Use NSOperations and NSOperationQueues

    Update 10/7/14: This tutorial has now been updated for iOS 8 and Swift; check it out! Everyone has h ...

  2. php设计模式之建造者模式

    建造者模式 建造者设计模式的目的是消除其他对象的复杂创建过程.使用建造者设计模式不仅是最佳的做法,而且在摸个对象的构造和配置方法改变时候,可以尽可能的减少重复更改代码. <?php /** *p ...

  3. npm中package-lock.json的作用:npm install安装时使用

    简单理解: XYZ 的格式 对应为: 主版本号.次版本号.修订号,版本号递增规则如下: 主版本号:当你做了不兼容的 API 修改, 次版本号:当你做了向下兼容的功能性新增, 修订号:当你做了向下兼容的 ...

  4. Cannot assign requested address 问题

    測试一个简单的TCP套接字程序,client向server请求建立连接然后释放. 在一台主机上同一时候执行两个client时.出现报错"Cannot assign requestedaddr ...

  5. python核心编程学习记录之数据库编程

  6. Javascript中的高阶函数介绍

    高阶函数:高阶看上去就像是一种先进的编程技术的一个深奥术语,一开始我看到的时候我也这样认为的. Javascript的高阶函数 然而,高阶函数只是将函数作为参数或返回值的函数.以下面的Hello,Wo ...

  7. python读写文件write和flush

    打开文件用open,该函数创建一个文件对象,这将用来调用与之关联的其他支持方式. file object = open(file_name [, access_mode][, buffering]) ...

  8. Node.js 使用angularjs取得Nodejs http服务端返回的JSON数组示例

    server.js代码: // 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块) var http=require("http" ...

  9. 【Android工具类】怎样保证Android与server的DES加密保持一致

    转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在我们的应用程序涉及到比較敏感的数据的时候,我们一般会对数据进行简单的加密.在与server之间的数据交互中 ...

  10. Protractor(angular定制的e2e)的简易入门

    这周项目终于上了e2e的测试,之前一直都没有测试的概念. 感谢我的领导和同志引入这样的理念和思想. 多的不说. 具体的环境搭建可以参考 http://jackhu.top/article/5607fa ...