高效、可维护、组件化的CSS

时间:2023-02-14 16:23:56

如何写出更加高效的CSS?

主要有以下四个关键点:

高效的CSS

可维护的CSS

组件化的CSS

hack-free CSS

1、书写高效的CSS代码

* 使用 外联样式 替代行间 样式或者内嵌样式.

* 为了兼容老版本的浏览器,建议使用 link 引入外部样式表的方来代替 @import 导入样式的方式.

* 使用 继承

低效的:
p{
font-family: arial, helvetica, sans-serif; }

#container {
font-family: arial, helvetica, sans-serif; }

#navigation {
font-family: arial, helvetica, sans-serif; }

h1 { font-family: georgia, times, serif; }

高效的:

body {
font-family: arial, helvetica, sans-serif; }

h1 {
font-family: georgia, times, serif; }

* 使用 多重选择器

低效的:

h1 { color: #236799; }
h2 { color: #236799; }
h3 { color: #236799; }

高效的:

h1, h2, h3{ color: #236799; }

* 使用 多重声明

低效的:

p { margin: 0 0 1em; }
p { background: #ddd; }
p { color: #666; }

高效的:

p {
   margin: 0 0 1em;
   background: #ddd;
   color: #666;

}

* 使用 简记属性

高效的:

body {

font: 85% arial, helvetica, sans-serif; background: url(image.gif) no-repeat 0 100%; margin: 1em 1em 0;
 padding: 10px;
 border: 1px solid red;

}

* 避免使用 !important

#news { background: #ddd !important; }
特定情况下可以使用 以下多层方式提高权重级别: 
#container #news { background: #ddd; }

2、书写可维护的CSS代码

* 在样式表开头添加一个注释块,用以描述这个样式表的 创建日期、创建者、 标记 等备注信息.

/*
---------------------------------

Site:      Site name Name

Author:      Name


Updated:     Date and time


Updatedby:    Name

---------------------------------

*/

* 包括公用 颜色标记

/*

---------------------------------


COLORS


Body background:    #def455
Container background:    #fff

Main Text:     #333
Links:     #00600f
Visited links:    #098761
Hover links:    #aaf433
H1, H2, H3:    #960
H4, H5, H6:    #000
---------------------------------

*/

* 给 ID 和 Class 进行 有意义 的命名

不推荐的命名方式:

.green-box { ... }
#big-text { ... }

推荐使用的命名方式:

.pullquote {... }
#introduction {... }

* 将 关联的 样式规则进行整合

#header { ... }

#header h1 { ... }

#header h1 img { ... }

#header a#skip { ... }

#navigation { ... }

#navigation ul { ... }

#navigation ul li { ... }

#navigation ul li a { ... }

* 给样式添加清晰的 注释

/*
---------------------------------
header styles
---------------------------------
*/

#header{ ... }

/*
---------------------------------
navigation styles
---------------------------------
*/
#navigation { ... }
 

3、组件化 CSS

ep: Html文档引入了一个主样式表 

1. 将主样式表 拆分 成独立的样式文件

高效、可维护、组件化的CSS

优势:更易于查找样式规则,简化维护,方便管理,还可以针对某一页面提供特定的样式。

2. 添加一个桥接样式文件

高效、可维护、组件化的CSS

优势:可以随时添加或移除样式而不需要修改HTML文档。

3. 引入桥接样式

高效、可维护、组件化的CSS

为什么要定义两种媒体类型?

NN4(第四代N氧化碳浏览器)不支持 @import,故识别不到桥接样式。

4. 将(分离的)CSS文件 导入 桥接样式中

高效、可维护、组件化的CSS

高效、可维护、组件化的CSS

@import 如何工作?

它将所有CSS规则从一个文件导入到另外一个文件。@import 不能被老的浏览器所识别。

概述:

对于 大型站点 来说,这是一个理想的概念

高效、可维护、组件化的CSS

高效、可维护、组件化的CSS

4、Hack-free CSS

假如想针对IE或者避开IE,可以使用 条件注释

1. 针对IE,创建一个新的样式文件

高效、可维护、组件化的CSS

2. 在HTML文档的开头添加 条件注释 代码

高效、可维护、组件化的CSS

只有指定的IE浏览器版本识别这个新的样式,其它的浏览器会彻底忽略它

条件注释的优点

* no hacks

特定的CSS规则仅出现在新的样式表里

* 文件分离

针对特定版本的IE定义的 样式脱离了主样式表,可以 在IE浏览器升级更新对属性支持时 轻松移除这些文件.

* 针对性

可对不同版本的IE浏览器有针对性的进行相关属性的定义。

<!--[if IE]>
<!--[if IE 5]>
<!--[if IE 6]>
<!--[if lt IE 6]>
<!--[if lte IE 6]>
<!--[if gt IE 6]>
<!--[if gte IE 6]>

高效、可维护、组件化的CSS的更多相关文章

  1. Vue&period;js:轻量高效的前端组件化方案

    转发一篇尤老师对vue.js的介绍,了解vue.js的来龙去脉.不过现在已经是2.0了,也有添加一些新的东西,当然有些东西也改了. Vue.js:轻量高效的前端组件化方案 Vue.js 是我在2014 ...

  2. 【转】Vue&period;js:轻量高效的前端组件化方案

    摘要:Vue.js通过简洁的API提供高效的数据绑定和灵活的组件系统.在前端纷繁复杂的生态中,Vue.js有幸受到一定程度的关注,目前在GitHub上已经有5000+的star.本文将从各方面对Vue ...

  3. CSS组件化思考

    为什么组件化? 分层设计,代码复用,减少冗余: 维护方便,弹性好: 如何组件化? 目前代码分成三级: 第一级粒度最细,是基础,主要包含字体配置,颜色配置,UI框架(比如MUI或者pure.css): ...

  4. (day67)组件、组件化、组件传参、JS补充(命名转换、for in 、数据转换)、css取消选中和模拟小手

    目录 一.初识组件 (一)概念 (二)特点 二.组件的分类 (一)根组件 (二)局部组件 (三)全局组件 二.数据组件化 三.组件的传参 (一)父传子 (二)子传父 四.JS补充 (一)与html命名 ...

  5. 【腾讯Bugly干货分享】打造&OpenCurlyDoubleQuote;微信小程序”组件化开发框架

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/2nQzsuqq7Avgs8wsRizUhw 作者:Gc ...

  6. 【转】Web应用的组件化开发(一)

    原文转自:http://blog.jobbole.com/56161/ 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也是产品,它的研发过程也必然是有其 ...

  7. Web应用的组件化(一)

    基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也是产品,它的研发过程也必然是有其目的.绝大多数软件产品是追逐利润的,在产品目标确定的情况下,成本有两个途 ...

  8. 前端web应用组件化(一) 徐飞

    https://github.com/xufei/blog/issues/6 Web应用的组件化(一) 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也 ...

  9. 从徐飞的文章《Web应用的组件化开发(一)中窥视web应用开发的历史

    Web应用的组件化开发(一) 原文来自 徐飞 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也是产品,它的研发过程也必然是有其目的.绝大多数软件产品是追 ...

随机推荐

  1. thread&lowbar;Disruptor

    转自 知乎 https://zhuanlan.zhihu.com/p/21355046 order从client端传入,decode后进行matching,一旦存在可成交的价格,就要publish到t ...

  2. 『局域网安全』利用ARP欺骗劫持Cookie

    0x 00 ARP欺骗说明 欺骗原理相关内容就不多叙述了,百度一大堆 实施ARP欺骗在Windows下,Linux下都相关工具 由于在Linux下可以开启ip_forward功能,个人认为Linux下 ...

  3. hdu 5288&vert;&vert;2015多校联合第一场1001题

    pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...

  4. git 命令详细

    git是代码管理工具 github是基于git实现的代码管理平台 git --version 查看git版本 git remote -v 查看clone地址 git init 初始化git //全局设 ...

  5. Porsche Piwis Tester II V15&period;6 with CF30 Laptop or Lenovo E49AL Laptop

    Some of my customers let me recommended which auto diagnostic tool is good for Porsche , I recommend ...

  6. python 等频率切分数据

    小编最近入坑风控,在工作中需要对数据进行等频率切分,也就是将数据划分成几段,在每段中,数据的出现频率,出现次数是大致相同的,让数据集在每段上呈现出分布均匀的趋势. 小编先是想到df.describe ...

  7. Spark调优&lowbar;性能调优&lpar;一&rpar;

    总结一下spark的调优方案--性能调优: 一.调节并行度 1.性能上的调优主要注重一下几点: Excutor的数量 每个Excutor所分配的CPU的数量 每个Excutor所能分配的内存量 Dri ...

  8. echart 遇到的点

    1,图表随着外部container变化而变化: window.onresize = myChart.resize (拿着resize在api文档中搜就看到了)

  9. Python使用chardet包自动检测编码

    chardet:charset detection 一旦自动检测出编码,就可以解码了. 八种文件打开方式 w:一旦打开文件,文件内容就清空了 r:只读方式打开 a:追加方式打开 r+:先读后写 以上四 ...

  10. Lintcode---翻转二叉树

    翻转一棵二叉树 您在真实的面试中是否遇到过这个题? Yes 样例 1 1 / \ / \ 2 3 => 3 2 / \ 4 4 思路:依旧采用递归的思路,判断特殊条件后,先交换根节点的左右孩子, ...