一、有效组织CSS代码

规划组织CSS代码:组织CSS代码文件,所有的CSS都可以分为2类,通用类和业务类。代码的组织应该把通用类和业务类的代码放在不同的目录中。

模块内部的另一样式规则:样式声明的顺序是按照模块中元素的层级关系来处理,从父级元素开始,如果是同一级元素则按照元素在页面的位置从上到下。从坐到右地定义对应的样式。如果多个公用,则先声明公用的样式,然后声明个体样式。

CSS排序实践:

  • 对CSS样式排序
  • 推荐按样式属性功能分组排序
  • 推荐在CSS样式代码编写完成并准备嵌入的时候排序
  • 使用如CSScomb等工具排序

二、合理利用权重:提高代码的重用性

CSS的6中基础选择器:

  • ID选择器
  • 类选择器
  • 属性选择器
  • 伪类和伪对象选择器
  • 标签类型选择器
  • 通配符选择器

组合选择器:

  • 后代选择器(.reader .title{})
  • 子选择器(.reader>.title{})
  • 相邻选择器(.reader+.title{})

CSS权重规则:

  • 计算选择符中的ID选择器的数量(=a)
  • 计算选择符中的类选择器、属性选择器以及伪类选择启动额数量(=b)
  • 计算标签类型选择器和伪对象选择启动额数量(=c)
  • 忽略全局选择器

基础选择器的优先级:

ID>类|伪类|属性选择>标签选择|伪对象>通配符

操作原则:

  • CSS样式中尽量不使用ID选择器
  • 减少子选择器的层级
  • 使用组合的CSS类选择器

浏览器兼容:http://browserhacks.com/#ie

相对单位:

W3C官方文档注意把尺寸单位分为相对长度单位和绝对长度单位两种。相对长度单位在定义长度时是相对于其他长度的,它又分为字体相对单位和视窗相对单位,字体相对单位包括:em  ex   ch  rem视窗相对单位包括:vw  vh  vmin  vmax。绝对长度单位定义的长度是固定的,使用的是物理度量单位,包括:cm  mm in px pt  pc 。使用最广泛的就是em  px和百分比值。

  1. px:像素,相当于绝对尺寸
  2. em:相当于元素上计算的字体大小值
  3. 百分比:相对于父元素的设置

尺寸设置最佳实践:

尽量设置相对尺寸:如果希望尺寸随着字体的改变而改变则应该使用em,如果期望尺寸随着父元素尺寸的改变而改变则应该使用百分比。设置行高一般使用em,设置高度和宽度一般使用百分比。

只有在预知元素尺寸的情况下才使用绝对尺寸:

使用em设置字体大小

三、CSS优化

减少CSS的代码量

合并相关CSS的规则

定义简洁的属性值

删除无效的定义

兼容在线监测:caniuse.com   、 CSS3 Click ChartCSS  contents  and browser compatibility。CSS3 Clicj  Chart提供完整的浏览器兼容代码示例.

添加必要的前缀:Chrome和Safari浏览器使用-webket,Firefox浏览器使用-moz,IE使用-ms,Opera浏览器使用-o.

使用工具来生成CSS属性定义的浏览器前缀:Prefixr。如果希望开发过程中有更多的自主性可以使用Autoprefixer

除上述之外还可以使用:cssFx  、  CSS Agent-prefis-free。以及LESS预处理

有效使用HTML5的建议网站:html5please

【WEB前端开发最佳实践系列】CSS篇的更多相关文章

  1. Web前端开发最佳实践系列文章汇总

    Web前端开发最佳实践(1):前端开发概述 Web前端开发最佳实践(2):前端代码重构 Web前端开发最佳实践(3):前端代码和资源的压缩与合并 Web前端开发最佳实践(4):在页面中添加必要的met ...

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

    一.养成良好的编码习惯,提高可维护性 1.避免定义全局变量和函数,解决全局变量而导致的代码“污染”最简单的额方法就是把变量和方法封装在一个变量对象上,使其变成对象的属性: var myCurrentA ...

  3. 【Web前端开发最佳实践系列】前端代码推荐和建议

    一.常用的前端文件的组织结构: 1.js (放置JavaScript代码) lib(放置框架JavaScript文件) custom.js 2.css(放置CSS样式代码) lib(放置框架CSS文件 ...

  4. 【WEB前端开发最佳实践系列】高可读的HTML

    一.HTML语义化 HTML5中增加了很多标签都是基于此类原则设计的(article   nav  header  footer).页面标签语义化的优点是使得搜索引擎以及第三方抓包工具等更容易读懂页面 ...

  5. 【Web前端开发最佳实践系列】标准的HTML代码

    一.验证代码是否符合标准 优点: 标准的页面会保证浏览器正确的渲染 网页能更容易被搜索引擎搜索,提高网站的搜索排名 提高网站的易用性 网页更好维护和扩展 常用工具: W3 Validator HTML ...

  6. Web前端开发最佳实践(9):CSS代码太太乱,重复代码太多?你需要精简CSS代码

    前言 提高网站整体加载速度的一个重要手段就是提高代码文件的网络传输速度.之前提到过,所有的代码文件都应该是经过压缩了的,这可提高网络传输速度,提高性能.除了压缩代码之外,精简代码也是一种减小代码文件大 ...

  7. Web前端开发最佳实践(8):还没有给CSS样式排序?其实你可以更专业一些

    前言 CSS样式排序是指按照一定的规则排列CSS样式属性的定义,排序并不会影响CSS样式的功能和性能,只是让代码看起来更加整洁.CSS代码的逻辑性并不强,一般的开发者写CSS样式也很随意,所以如果不借 ...

  8. Web前端开发最佳实践(1):前端开发概述

    引言 我从07年开始进入博客园,从最开始阅读别人的文章到自己开始尝试表达一些自己对技术的看法.可以说,博客园是我参与技术讨论的一个主要的平台.在这其间,随着接触技术的广度和深度的增加,也写了一些得到了 ...

  9. web前端开发最佳实践笔记

    一.文章开篇 由于最近也比较忙,一方面是忙着公司的事情,另外一方面也是忙着看书和学习,所以没有时间来和大家一起分享知识,现在好了,终于回归博客园的大家庭了,今天我打算来分享一下关于<web前端开 ...

随机推荐

  1. 嵌入式开发之hi3519---i2c EEPROM

    http://pdf1.alldatasheetcn.com/datasheet-pdf/view/163283/MICROCHIP/24LC024.html http://www.elecfans. ...

  2. JavaBean递归拷贝工具类Dozer

    JavaBean深度拷贝利器——Dozer DozerBeanMapper对象之间相同属性名赋值 DozerBeanMapper + 对象转Map方法 Dozer(JavaBean的映射工具)开发手册

  3. (实用)Ubuntu 、CentOS更换国内源

    Ubuntu更换apt-get源 通过编辑/etc/apt/sources.list文件,我们能够更换Ubuntu的默认软件更新源.通常是将其换成一些国内比较知名的源.本文主要列举这些内容. 注意,在 ...

  4. Xianfeng轻量级Java中间件平台:菜单管理

    通过菜单管理,可以实现系统菜单的权限控制.用户个性化菜单功能等,当然很多系统支持在线开发,不用专门的开发工具编写代码,通过一些简单的设置就能开发出新的功能,有新功能增加到系统中,菜单管理功能也是必不可 ...

  5. linux 系统安装配置 zabbix服务(源码安装)

    简介: zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定 ...

  6. 文本处理三剑客之 sed详解

    1.简介 sed是非交互式的编辑器,它不会修改文件,除非使用shell重定向来保存结果.默认情况下,所有的输出行都被打印到屏幕上. sed编辑器逐行处理文件(或输入),并将结果发送到屏幕.具体过程如下 ...

  7. interproscan 软件对序列进行GO 注释

    interproscan 软件实际上将对输入的查询序列和interpro 数据库中的序列去比对,将比对上的序列对应的GO信息作为查询序列的GO注释 在interpro 数据库中,每条蛋白质序列有一个唯 ...

  8. 【Php】数组遍历,foreach, each, trim()

    <?php $iplist = "122.224.251.154|192.168.2.138|192.168.2.12"; echo $_SERVER['REMOTE_ADD ...

  9. chrome浏览器表单自动填充默认样式(背景变黄)-autofill

    之所以出现这样的样式, 是因为Chrome会自动为input增加如下样式. 这个样式的优先级也比较高. 无法通过important覆盖(这就比较恶心了). 解决方案(3种): 1. 关闭自动保存账号密 ...

  10. thinkphp3.2 session时间周期无效

    Thinkphp3.2 session周期时间默认是无效的 方法一: 这种方法使用session非常麻烦 1.配置'SESSION_AUTO_START' =>false,2.控制器方法sess ...