CSS基础(一):开篇

背景

HTML是一种超文本标记语言,用来定义文档的结构和内容,例如标题、段落和列表等等,而文档内容如何渲染、如何展示,这就需要样式来修饰了。CSS正是可以与HTML很好地结合。如果将HTML比作水,那么CSS就是水杯,用怎样形状的水杯来装水,水就显示不一样的形状。

 

什么是CSS?

CSS 指层叠样式表 (Cascading Style Sheets),定义如何显示 HTML 元素,是为了解决文档内容与表现分离的问题,通常是统一存储在样式表中,使用外部样式表可以方便管理,提高工作的效率,具有继承性和层叠性的特点。

 

CSS继承性

它是依赖于祖先-后代的关系的。继承是一种机制,它允许样式不仅可以应用于某个特定的元素,还可以应用于它的后代。但是,并不是所有的属性都会自动传给它的后代,例如边框Border,边距Margin,补白Padding等等。

例如定义了body的样式

<!DOCTYPE HTML>
<html>
<head>
<title>开篇一 | CSS继承</title>
</head>
<style type="text/css">
    body{height:100px;color:red;border: 1px solid #CCC;}
</style>
<body>
<p>
    字体颜色显示为红色,但是没有边框
</p>
</body>
</html>

可以得到的效果是body有1px的灰色实线边框,p标签里面的字体为红色,但是没有边框,所以border属性没有被继承。

 

CSS层叠性

CSS样式在针对同一元素配置同一属性时,依据层叠规则(权重)来处理冲突,选择应用权重高的CSS选择器所指定的属性,一般也被描述为权重高的覆盖权重低的,因此也称作层叠。

例如定义了样式

<!DOCTYPE HTML>
<html>
<head>
<title>开篇一 | CSS层叠</title>
</head>
<style type="text/css">
    body{height:100px;border: 1px solid #CCC;}
    .main{color:red;font-size: 18px;}
    .main p{color:#000;font-weight: bold;}
</style>
<body>
<div class="main">
<p>
    字体颜色显示为黑色,字号为加粗18px
</p>
</div>
</body>
</html>

可以得到的效果是p标签里面的字体为黑色,字号为加粗18px,.main选择器中的color属性被.main p中的color属性覆盖。

实际上由CSS的继承性和层叠性,是可以得到p标签组合的css样式为

p{color:#000;font-size: 18px;font-weight: bold;}

更多关于权重高低请参考

 

CSS代码规范

1.使用Reset但并非全局Reset

全局Reset不仅仅因为它是缓慢和低效率的方法,而且还会导致一些不必要的元素也重置了外边距和内边距。

*{ margin:0; padding:0; }

 

2.良好的命名规范

ID和class的命名尽可能短,并符合语义。多个单词的拼接用 '-' 符号链接,尽量使用小写字母。

 

3.代码缩写

CSS代码缩写可以提高你写代码的速度,精简你的代码量。

 

li{
    font-family:Arial, Helvetica, sans-serif;
    font-size: 1.2em;
    line-height: 1.4em;
    padding-top:5px;
    padding-bottom:10px;
    padding-left:5px;
}

可以缩写成

li{
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    padding:5px 0 10px 5px;
}

 

4.利用CSS继承

如果页面中父元素的多个子元素使用相同的样式,那最好把他们相同的样式定义在其父元素上,让它们继承这些CSS样式。这样你可以很好的维护你的代码,并且还可以减少代码量。那么本来这样的代码:

#container li{ font-family:Georgia, serif; }
#container p{ font-family:Georgia, serif; }
#container h1{font-family:Georgia, serif; }

就可以简写成:

#container{ font-family:Georgia, serif; }

 

5.使用多重选择器

你可以合并多个CSS选择器为一个,如果他们有共同的样式的话。这样做不但代码简洁且可为你节省时间和空间。如:

h1{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h2{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }
h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

可以合并为

h1, h2, h3{ font-family:Arial, Helvetica, sans-serif; font-weight:normal; }

 

6.适当的代码注释

代码注释可以让别人更容易读懂你的代码,且合理的组织代码注释,可使得结构更加清晰。

 

7.给你的CSS代码排序

如果代码中的属性都能按照字母排序,那查找修改的时候就能更加快速。

/*** 样式属性按字母排序 ***/
div{
    background-color:#3399cc;
    color:#666;
    font:1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}

 

8.保持CSS的可读性

书写可读的CSS将会使得更容易查找和修改样式。

/*** 每个样式属性写一行 ***/
div{
    background-color:#3399cc;
    color:#666;
    font: 1.2em/1.4em Arial, Helvetica, sans-serif;
    height:300px;
    margin:10px 5px;
    padding:5px 0 10px 5px;
    width:30%;
    z-index:10;
}
 
/*** 所有的样式属性写在同一行 ***/
div{ background-color:#3399cc; color:#666; font: 1.2em/1.4em Arial, Helvetica, sans-serif;  height:300px; margin:10px 5px; padding:5px 0 10px 5px; width:30%; z-index:10; }

 

9.选择更优的样式属性值

CSS中有些属性采用不同的属性值,虽然达到的效果差不多,当性能上却存在着差异,如:

区别在于border:0把border设为0px,虽然在页面上看不见,但按border默认值理解,浏览器依然对border-width/border-color进行了渲染,即已经占用了内存值。

而border:none把border设为“none”即没有,浏览器解析“none”时将不作出渲染动作,即不会消耗内存值。所以建议使用border:none;

同样的,display:none隐藏对象浏览器不作渲染,不占用内存。而visibility:hidden则会。

 

10.<link>代替@import

@import不属于XHTML标签,也不是Web标准的一部分,它对于较早期的浏览器兼容也不高,并且对于网站的性能有某些负面的影响。所以,请避免使用@import

 

11.使用外部样式表使用

这个原则始终是一个很好的设计实践。不单可以更易于维护修改,更重要的是使用外部文件可以提高页面速度,因为CSS文件都能在浏览器中产生缓存。内置在HTML文档中的CSS则会在每次请求中随HTML文档重新下载。所以,在实际应用中,没有必要把CSS代码内置在HTML文档中。

 

12.代码压缩

当你决定把网站项目部署到网络上,那你就要考虑对CSS进行压缩,出去注释和空格,以使得网页加载得更快。压缩您的代码,可以采用一些工具,如YUI Compressor 利用它可精简CSS代码,减少文件大小,以获得更高的加载速度。

 

13.避免使用css hack

 

14.代码格式

(1)每个css属性声明后都要使用一个分号,即使是最后的那个。

(2)在紧跟属性名的冒号后使用一个空格。

(3)每一个css选择器或是属性声明都要新起一行。

(4)在每一个css规则之间应该空一行。

 

15.如果css属性的值为0,则后面不要带上单位。除非真的是需要。

 

规范参考

 

CSS3.0新特性

目前CSS已经发展到3.0的版本,但是3.0的属性大多不支持低版本的浏览器。

新特性如CSS圆角边框、阴影、动画等,后面将会另有系列课程专门学习介绍。

 

 

作者: ForEvErNoME
出处: http://www.cnblogs.com/ForEvErNoME/
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐关注
 
 
 
 
 
posted @ 2013-09-24 21:25  ForEvErNoMe  阅读(1330)  评论(0编辑  收藏  举报