web移动开发最佳实践之 css篇 ——转

 web移动开发最佳实践之 css篇

一。css概述

  css即层叠样式表Cascading Style Sheets),它的作用主要是控制页面元素的样式,包括布局、颜色、字体、字号、空白、边框、属性等等。css的出现使得html的内容和样式分离,极大的提高了工作效率。

  目前最新的标准是css3,下面几节将介绍在使用css过程中应遵循的最佳实践方案

二、使用高效的css选择器

  欲创建一个高效的web应用,你要了解浏览器是如何读取你的web页面呈现出来的。当浏览器读取你的html文档时,它首先对html文档进行语法分析,然后把相应元素填充到一个文档树中;然后从css样式表中匹配相应的样式到各个元素中。浏览器读取样式表是从右到左的,即从最右边的选择符(key selector)开始,然后依次向左移动,直到匹配到元素结束。为了使这个匹配过程高效些,就要减少匹配元素样式的过程。举例来说:

#home a {color: blue;}

我们希望id是home下的所有a标签,使用蓝色字体。但是这样声明并不高效,浏览器首先会查找每一个a标签,然后查看它的父元素是否含有home的id,直到文档的结尾。更高效的方式是避免使用子选择器,使用class属性:

.home-anchor {color: blue;}

使用特定的样式规则就可以减少匹配的时间(但是要在可维护性性之间找到一个平衡点),可能的形式为:

#main-navigation {   }      /* ID (Fastest) */
body.home #page-wrap {   }  /* ID */
.main-navigation {   }      /* Class */
ul li a.current {   }       /* Class *
ul {   }                    /* Tag */
ul li a {  }                /* Tag */
* {   }                     /* Universal (Slowest) */
#content [title=‘home‘]     /* Universal */

有四种类型的选择器,其中idclass比元素选择器和通配符更快:

#chapter1 {text-align: center; }
.chapter1 { font-weight: bold; }
h1 { font-family: sans-serif; }
* {font-family: Arial; }

三、声明图片的尺寸

  为了提高页面渲染的速度,声明图片的尺寸是很好的办法:

<img src="img/logo.png" style="width: 100px; height: 100px;">

因为浏览器是分开下载各个图片的,声明了尺寸就可以提前确定排版,否则等到图片下载完成后才知道图片的尺寸信息,渲染过程就明显变慢了。

还有就是,声明图片尺寸的时候,应该是实际的尺寸。例如:一个图片实际尺寸是50*50,但是你希望它小一点,把尺寸声明为20*20,那么调整图片尺寸的过程就会耗费CPU资源、内存资源等,使渲染速度变慢。其次,这还会避免下载一个不必要的较大的图片,手机流量是有限的,这也是为用户节约资源

声明图片尺寸的方式有3种(html,内联css,外联css):

<img id="logo" src="logo.jpg" alt="Company logo" height="100" width="100" />
<img id="logo" src="logo.jpg" style="width: 100px; height: 100px;">
#logo { width: 100px; height: 100px; }

四、使用css精灵(sprites)

  css精灵即把多个小图片放到一个大图片中,这样就可以减少http请求的数量。使用时,就进行相应的裁剪,这在各大网站中常被用到。放在一个大图片中,也更容易对图片进行统一管理,这对于按钮、导航图标等非常合适。

#navcontainer li {
    background-image: url(‘spritebg.jpg‘); /* single image */
}
#navcontainer ul li:nth-child(1) {
    background-position: -130px -700px; /* position = xpos ypos */
}
#navcontainer ul li:nth-child(2) {
    background-position: -130px -718px;
}
#navcontainer a {
    width: 250px; /* size */
    height: 18px;
}

五、启用硬件加速

  如果你的应用中含有动画,那么就可以启用硬件加速功能来提升用户体验。默认情况下,大多数浏览器是没有开硬件加速的,使用该功能的典型情况是WebGL组件、3D动画等。但是,如果你希望某个特定的元素使用硬件加速,可以手动触发:

... {
    -webkit-transform: <transform function>;
}

transform属性会把2D或3D转换应用到一个元素中,可以使用这个属性来进行旋转、缩放等操作。例如:

img.rotate3d {
    -webkit-transition: -webkit-transform 1s ease-in-out;
    -webkit-transform: rotate3d(0, 0, 1, 0deg);
}

img.rotate3d:hover {
    -webkit-transform: rotate3d(0, 0, 1, 15deg);
}

以上代码对图片进行15度的旋转

但是开启硬件加速并不会加速其他元素的执行,它只是加速了动画的转换(使用GPU)。最后,硬件的资源是很宝贵的,有必要的时候才考虑使用。

时间: 2024-10-13 10:51:26

web移动开发最佳实践之 css篇 ——转的相关文章

web移动开发最佳实践之 css篇

web移动开发最佳实践之 css篇 一.css概述 css即层叠样式表(Cascading Style Sheets),它的作用主要是控制页面元素的样式,包括布局.颜色.字体.字号.空白.边框.属性等等.css的出现使得html的内容和样式分离,极大的提高了工作效率. 目前最新的标准是css3,下面几节将介绍在使用css过程中应遵循的最佳实践方案. 二.使用高效的css选择器 欲创建一个高效的web应用,你要了解浏览器是如何读取你的web页面并呈现出来的.当浏览器读取你的html文档时,它首先对

web移动开发最佳实践之js篇

一.js概述 js即JavaScript,是被设计用来验证表单.检测浏览器.创建cookies.改进设计以及更多应用的网络脚本语言,它非常容易使用.在web应用中,它是主要的编程语言,主要用途是进行各种逻辑控制.行为展现等.对于js的优化,对于整个应用的提升都是非常显著的. 二.使用字面量(literal notation)来声明对象和数组 创建对象和数组的方法有很多,但是使用字面量是最简单最快的.传统的方法是使用内建的构造器声明: //create an object var obj = ne

移动端WEB前端开发最佳实践

移动端WEB前端开发最佳实践 Safari,Android Browser,Chrome都是以WebKit为核心的 移动设备和PC之间的页面现实存在差异(Safari中定义了viewport) 在移动设备和桌面端WEB前端开发中,事件绑定存在差异(移动触点) 页面控件设计存差异(点触不灵敏,虚拟键盘弹出框) 移动设备的网络带宽普遍比PC慢,移动页面要设置更简洁 PC页面兼容移动设备 使用流式布局 借助CSS Media queries(媒体查询)技术 使用合适的图片显示兼容方案 保持页面简洁,不

入门书籍 web前端开发最佳实践

高效web前端开发  book PageSpeed  出自google公司  是一款  免费的工具  性能分析 Timeline网页交互  和渲染  所要花费的时间 Profile谁  可以查看网页cpu以及内存占有的情况报告 Audits  中提供了各种资源及配置的优化建议和未使用的css规则的列表 代码的压缩 文本服务器开启Gzip压缩. UglifyJs  不仅仅是一个压缩工具,同事具有JS语法分析和代码美化工能 图片压缩工具  以在线工具居多  TinyPNG  压缩  PNG格式图片.

&lt;读书笔记&gt;《Web前端开发最佳实践》

P77 P89 CSS Reset P94 给CSS样式定义排序    排序工具:CSScomb P97 什么是CSS的权重?权重是指选择符的优先级 P100 工具:Sass Less P101 框架:YUI.ExtJS P102 hack代码,不易理解且维护困难 P103 条件注释 P104 em px % 2016.3.8 P110 CSS的匹配原理和我们习惯的匹配过程是相反的,它是从右到左进行匹配的. P111 CSS选择器定义的最佳实践(四个避免): 1.* { } 2.referenc

WEB前端开发最佳实践(2)

样式和结构分离 HTML页面链接一个CSS(最优),提高加载速度 HTML内嵌CSS(单一页面最佳,减少加载CSS样式文件的请求数目,加快加载速度 内联CSS样式,可以使用JS动态来统一修改,很少使用,JQ中使用其实现动画效果 在CSS样式文件中引用CSS文件,避免使用 添加JS禁用提示信息 使用noscrpt,HTML4只在body中起作用,HTML5中可以出现在head中,支持HTML,不支持XHTML 最好使用noscript,采用渐进增强的模式,平稳降级 添加必要的meta的标签 met

【WEB前端开发最佳实践系列】JavaScript篇

一.养成良好的编码习惯,提高可维护性 1.避免定义全局变量和函数,解决全局变量而导致的代码"污染"最简单的额方法就是把变量和方法封装在一个变量对象上,使其变成对象的属性: 1 var myCurrentAction = { 2 length : 0 , 3 init : function(){}, 4 action : function(){} 5 } 还可以将全局的变量包含在一个局部作用域中,然后在这个作用域中完成这些变量的定义以及变量使用的逻辑: 1 (function(){ 2

WEB前端开发最佳实践(3)

选择器注意 尽量不使用ID选择器 减少子选择器的层级(less和Sass的滥用) 使用组合CSS类选择器 兼容IE浏览器 兼容旧浏览器的代码,被称为hack代码 熟悉IE浏览器中常见的兼容样式 分离样式兼容代码 em,px,% px:相对尺寸,但由于同环境,又是绝对尺寸 em:应用元素上字体大小的两倍,%:相对于父元素的百分比 尽量设置相对尺寸 只有在可预知元素尺寸的情况下才使用绝对尺寸 使用em设置字体的大小 使用高效的CSS选择器 匹配原理:从右到左 避免使用通配符 避免使用标签和单个属性选

《web前端开发最佳实践》党建 摘要

1. 各种调试工具.ie dev toolbar. chrome developer tools. firebug .fiddler 2. 压缩合并工具 3. fis 4. 性能工具yslow.  pagespeed 5. 压缩 gzip js压缩 uglifyjs. yui compressor.  closoure compiler. webstorm file watcher css 压缩   css compressor 6. 规范 层级id 公开函数首字母大写 $前缀 输入框的tab顺