如何使CSS--better(系列一)
我们想一下以下问题:
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(系列一)的更多相关文章
- CSS 魔法系列:纯 CSS 绘制各种图形《系列六》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- CSS 魔法系列:纯 CSS 绘制各种图形《系列五》
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- CSS 魔法系列:纯 CSS 绘制图形(各种形状的钻石)
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- CSS 魔法系列:纯 CSS 绘制图形(心形、六边形等)
<CSS 魔法系列>继续给大家带来 CSS 在网页中以及图形绘制中的使用.这篇文章给大家带来的是纯 CSS 绘制五角星.六角形.五边形.六边形.心形等等. 我们的网页因为 CSS 而呈现千 ...
- CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)
我们的网页因为 CSS 而呈现千变万化的风格.这一看似简单的样式语言在使用中非常灵活,只要你发挥创意就能实现很多比人想象不到的效果.特别是随着 CSS3 的广泛使用,更多新奇的 CSS 作品涌现出来. ...
- IE CSS Bug 系列
1.[IE CSS Bug系列]IE6&IE7图片链接无效 <!doctype html> <html> <head> <meta charset=& ...
- JQuery - 动态添加Html后,如何使CSS生效,JS代码可用?
今天在开发JQuery Mobile程序时候,需要从服务器取得数据,随后显示在页面上的Listview控件中,数据完整获取到了,也动态添加到Listview控件中,但是数据对应的CSS没有任何效果了, ...
- CSS学习系列4 -- 再说CSS中的浮动运用及clear:left/right实际用法
在 CSS学习系列2 -- CSS中的清除浮动 中,我们详细说了CSS中清除浮动的方法及使用 后来我自己在项目开发一个需要使用浮动的网页时,进行了实际运用,加上后来看到一篇好文章.所以就在这里再次写篇 ...
- HTML和CSS 入门系列(一):超链接、选择器、颜色、盒模式、DIV布局、图片
一.超链接 二.CSS选择器 CSS的全称叫做: Cascading Style Sheets 级联样式表的缩写. 2.1 类型选择器 2.2 派生选择器 2.3 伪类选择器 <style &g ...
- HTML和CSS 入门系列(二):文字、表单、表格、浮动、定位、框架布局、SEO
上一篇:HTML和CSS 入门系列(一):超链接.选择器.颜色.盒模式.DIV布局.图片 一.文字 1.1 属性 1.2 字体样式:font-family 1.3 字体大小:font-size 1.4 ...
随机推荐
- 个人对JAVA的SSH三大框架组合的偏见
多数人JavaWeb的入门是学习SSH:struts+spring+hibernate:我在十年前(2006年)学习的,那时火的是struts1.x ,struts2还没诞生. 这三个框架组合,我 ...
- ubuntu 安装 regex模块时 fatal error: Python.h: No such file or directory
原因是 python-dev包没有安装 根据Py2还是py3 sudo apt-get install python-dev 或者 sudo apt-get install python3-dev 安 ...
- python git log
# -*- coding: utf-8 -*- # created by vince67 Feb.2014 # nuovince@gmail.com import re import os imp ...
- Jquery.data()的值存放再什么地方的问题?
Where is jQuery.data() stored? Where does jQuery store the values of the data() that it sets to DOM ...
- Elasticsearch教程(六) elasticsearch Client创建
Elasticsearch 创建Client有几种方式. 首先在 Elasticsearch 的配置文件 elasticsearch.yml中.定义cluster.name.如下: cluster ...
- FizzBuzz and Fibonacci优化
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- 5.全局异常捕捉【从零开始学Spring Boot】
在一个项目中的异常我们我们都会统一进行处理的,那么如何进行统一进行处理呢? 新建一个类GlobalDefaultExceptionHandler, 在class注解上@ControllerAdvice ...
- 【Javascript 基础】对象
1 创建对象 Javascript 支持对象的概率.有多种方法可以用来创建对象. <!DOCTYPE html> <html lang="en"> < ...
- Android学习(七) Android实现计算器
前台页面代码,通过线性布局方式实现计算器页面:如图所示 color.xml,自定义颜色values: <?xml version="1.0" encoding="u ...
- 仿新浪首页、主题、详情页,纯html静态页面
仿新浪首页.主题.详情页.纯html静态页面,下载地址: http://download.csdn.net/detail/sweetsuzyhyf/8085535