css页面优化

news/2024/7/10 5:52:44 标签: css, border, 浏览器, stylesheet, 优化

最近看了很多页面优化方面的文章,集合多篇文章,整理总结如下:


1、样式放头上,脚本放脚下。不内嵌,只外链。使用 引用样式表,而不是通过 @import 导入。 

* 不赞成:<p style=”font-size: 14pt ;”>Home</p>

* 建议用:<link href="style.css" rel="stylesheet" type="text/css"/></link>

2、十六进制的颜色值对的位数和大小写

编写十六进制颜色值时你可能会用小写字母或省略成3位数,关于这写法没找到确实的数据证明对浏览器的渲染效率是否有影响,但十六进制的颜色值默认标准是大写及6位数标注。在未知情况下不希望冒险而降低了渲染的效率。

* 不赞成:#f3a
* 建议用:#FF33AA

3、display与visibility的差异

他们用于设置或检索是否显示对象。display隐藏对象不保留物理空间,visibility为隐藏对象保留占据的物理空间。当浏览器渲染被占据的物理空间时,会有所消耗资源。

* 不赞成:visibility:hidden
* 建议用:display:none

4、border:none;与border:0;的区别

和display与visibility的关系类似,分别不保留与保留空间。更多的是border:0;尽管可以隐藏掉边框,但它会为你保留border-color/border-style的使用权。

* 不赞成:border:0;
* 建议用border:none;

5、不宜用过小的背景图片平铺

不要使用过小的图片做背景平铺,这就是为何很多人都不用 1px 的原因,宽高 1px 的图片平铺出一个宽高 200px 的区域,需要 200*200=40, 000 次,占用资源。提高背景图片渲染效率跟图片尺寸及体积有关,最大的图片文件体积保持约70KB。

* 不赞成:宽高8px以下的平铺背景图片
* 建议用:衡量适中体积及尺寸的背景图片


6、慎用 * 通配符

所谓通配符,就是将 CSS 中的所有标签均初始化,不管用的不用的,过时的先进的,一视同仁,这样,大大的占用资源。要有选择的初始化标签。 


7、慎用IE滤镜

IE的滤镜除了比较消耗资源外也有兼容性问题。当中有让PNG透明的滤镜,可采用GIF或JPG似透非透的办法来避免使用此滤镜。一般来说,PNG 比 GIF 要小,小得多。再者,GIF 中有多少颜色是被浪费的,很值得优化。 

* 建议用:个别透明图片用 gif,其余用 png

8、选择器

<1>. 有四种目标选择器:ID, class, tag和通用符。看下他们各自的效率如何:

css">#main-navigation { } /* ID (最快) */
body.home #page-wrap { } /* ID */
.main-navigation { } /* Class */
ul li a.current { } /* Class *
ul { } /* Tag */
ul li a { } /* Tag */
* { } /* Universal (最慢) */
#content [title='home'] /* Universal(慢) */

<2>. 尽量不使用后代选择器,后代选择器是CSS里最昂贵的选择器
* 不赞成:html body ul li a { }
* 建议用:<a class="link"></a>   .link { }

<3>. 尽量不要用标签修饰
* 不赞成:ul#main-navigation { }  ID是唯一的,所以不需要用标签修饰ul,这只会让它更低效。

9、合理使用简写

例如margin:
* 不赞成:
css">margin-top:1px;
margin-right:1px;
margin-botton:1px;
margin-left:1px;
* 建议用
css">margin:1px 1px 1px 1px;

缩写的顺序是上->右->下->左。顺时针的方向。相对的边的值相同,则可以省掉:


css">margin:1px;//四个方向的边距相同,等同于margin:1px 1px 1px 1px;
margin:1px 2px;//上下边距都为1px,左右边距均为2px,等同于margin:1px 2px 1px 2px
margin:1px 2px 3px;//右边距和左边距相同,等同于margin:1px 2px 3px 2px;
margin:1px 2px 1px 3px;//注意,这里虽然上下边距都为1px,但是这里不能缩写。

其他的像border,font,background等也进行简写,不建议简写color(第二点)

10、CSS重用优化

CSS代码的共用属性提取来达到节约代码、维护方便。
* 不赞成
.yangshi_a{ width:100px; height:20px; text-align:left; float:left; font-size:24px;}
.yangshi_b{ width:100px; height:20px; text-align:right; float:left; font-size:24px;}
* 建议用
.yangshi_a ,.yangshi_b{ width:100px; height:20px; text-align:left; float:left; font-size:24px;}
.yangshi_b{text-align:right; }

11、尽量减少浏览器reflow和repaint

最简单的就是为页面中所有图片指定宽度和高度。
浏览器勾画页面时,它需要能够流动的,如图片这样的可替换的元素。提供了图片尺寸,浏览器知道去环绕附近的不可替换元素,甚至可以在图片下载之前开始渲染页面。如果没有指定的图片尺寸,或者如果指定的尺寸不符合图片的实际尺寸,一旦图片下载,浏览器将需要reflows和重新绘制页面。为了防止reflows,在HTML的<img>标签中或在CSS中为所有图片指定宽度和高度。
此处方法很多,有很多 相关文章


最后:浏览器越来越强悍,上面写的更多的是良好的代码规范,优化效果不一定明显


参考:
1、http://homepage.yesky.com/458/8225958.shtml
2、http://www.woaicss.com/article/div/css11.htm
3、http://www.daqianduan.com/css-efficiency-browsers-render-speed/
4、http://www.woaicss.com/article/div/css--.htm
5、http://www.zcool.com.cn/article/ZMjE5NzI=.html

6、浏览器渲染原理,reflow和repaint http://www.cnblogs.com/beixiaosmail/archive/2012/02/04/2338090.html


新博客已移至:http://keenwon.com



http://www.niftyadmin.cn/n/1770761.html

相关文章

computed怎么使用_用1W3字来控诉 Vue3 这个小妖精是怎么迷惑人的!

前言前段时间 Vue 3.0 Beta 版本发布了&#xff0c;本以为是皆大欢喜的一件事情&#xff0c;但是论坛里还是看到了很多反对的声音。主流的反对论点大概有如下几点&#xff1a;意大利面代码结构吐槽&#xff1a;“太失望了。杂七杂八一堆丢在setup里&#xff0c;我还不如直接用r…

Javascript的事件冒泡和事件捕获,阻止事件冒泡,事件源target

事件冒泡 事件捕获&#xff1a;父级元素先触发&#xff0c;子级元素后触发 事件冒泡&#xff1a;子级元素先触发&#xff0c;父级元素后触发 现在在IE和FF下&#xff0c;触发事件基本都是事件冒泡&#xff0c;由内向外的执行 <!DOCTYPE html PUBLIC "-//W3C//DTD XH…

基于wifi的单片机无线通信研究_新版STC单片机WiFi程序下载电路开源下载

01 简介在博文通过 WiFi对STC 单片机程序下载和调试[1]给出了 STC 单片机 WiFi 下载电路设计与调试。通过与 STC 公司的技术人员交流。对于原来的设计中的一些问题进行了梳理&#xff1a;现在能够进行下载的单片机系列包括有&#xff1a;15,8A,8G,8H 系列&#xff1b;单片机在下…

Javascript 点击div之外任何地方,隐藏div

document.onclick function (event) {var e event || window.event;var elem e.srcElement || e.target;while (elem) {if (elem ! document) {if (elem.id "目标ID") {show();return;}elem elem.parentNode;} else {hide();return;}}} 大概功能&#xff1a;点击…

python转java好转吗_简单Python转Java,求助,谢谢

展开全部 def downloadFile(self,sURL,sName): import os.path if os.path.exists(os.path.join(self.sPath,sName )): return True nEndPosself.getFileSize(sURL) if nEndPos<0 or nEndPos 2407: return False try: import urllib2 req urllib2.Request(sURL) req.add_h…

博客搬家了,http://keenwon.com

博客搬家了&#xff0c; http://keenwon.com

以太坊生成地址_以太坊名称服务暴露隐私缺陷 Vitalik Buterin提出解决方案,深入剖析...

以太坊名称服务暴露隐私缺陷 Vitalik Buterin提出解决方案,深入剖析据Decrypto 4月1日报道&#xff0c;以太坊联合创始人Vitalik Buterin提议为以太坊最大的隐私缺陷之一找到一个解决方案。该缺陷与以太坊名称服务&#xff08;Ethereum Name Service, ENS&#xff09;有关。该服…

小甲鱼python电子版下载_零基础入门学习Python 小甲鱼出品 (全42集)

零基础入门学习Python&#xff0c;让没有编辑基础的朋友也可以学习python&#xff0c;其实建议大家有点c语言知识&#xff0c;既然有各种各样的编程语言可以选择&#xff0c;小甲鱼为什么极力鼓励大家来学习Python呢&#xff1f; Python具有跨平台特点 Python可以在各种不同类型…