背景

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:; padding:; }

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:;
}

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:;
} /*** 所有的样式属性写在同一行 ***/
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:; }

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/
欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐 或 关注

 
 
 
 
 

CSS基础(一):开篇的更多相关文章

  1. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  2. CSS基础总结

    CSS基础总结链接地址:http://segmentfault.com/a/1190000002773955

  3. CSS基础篇之了解CSS和它的基本属性

    CSS是什么? CSS英文全名是Cascading Style Sheets翻译过来就是层叠样式表,它主是把网页表现与内容分离的一种样式设计语言.这种语言能优化我们编程,把东西简化和优化写法,而且不同 ...

  4. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  5. HTML5 -入门 (---css样式-------------(css基础与css选择器)---------------------—)

    ---恢复内容开始--- 一css基础入门与css选择器 CSS英文全拼:cascading style sheet 层叠样式表. 在html中使用:要在head中写style标签,所有样式放在sty ...

  6. css 基础---选择器

    1.css基础 selector {property: value} eg: h1 {color:red; font-size:14px;} p { text-align: center; color ...

  7. 妙味课堂——HTML+CSS基础笔记

    妙味课堂的课程讲得非常的清楚,受益匪浅.先把HTML和CSS基础课程部分视频的学习笔记记录如下: padding #PS基础 ##前端需要的PS技能 - PS技能(前端需要):切图.修图.测量 - P ...

  8. WEB前端开发CSS基础样式全面总结

    Web前端开发css基础样式全面总结 颜色和单位的使用 颜色 用颜色的名字表示颜色,比如:red 用16进制表示演示 比如:#FF0000 用rgb数值表示颜色,rgb(红,绿,蓝),每个值都在0-2 ...

  9. css基础不扎实

    写了两周的网页,发现自己的css基础还是很差的,当时培训学习的时候就发现了,我做的页面都特别的别扭和丑吧,在班级上应该是垫底的: 原先只知道用float,不会使用定位,网页连固定定位也不会,现在发现, ...

  10. css基础总结一

    最近在弄一个简单管理系统的前端,所以打算将做项目的一些个人感想以及总结简单罗列下,当然,主要针对前端的基础部分以及一些常用的前端个人简单技巧总结.主要分为js部分和css部分,下面是css的基础部分总 ...

随机推荐

  1. 尝试在mac上用dotnet cli运行asp.net core示例程序

    自从知道微软用dotnet cli取代dnx之后,一直在等dotnet cli支持asp.net core... 昨天看到这篇新闻(ASP.NET Core 1.0 Hello World)后,才知道 ...

  2. C#中Encoding.Unicode与Encoding.UTF8的区别

    今天在园子首页看到一篇博文-简单聊下Unicode和UTF-8,从中知道了UTF-8是Unicode的一种实现方式: Unicode只是给这世界上每个字符规定了一个统一的二进制编号,并没有规定程序该如 ...

  3. Salesforce 生成测试可用 Id

    在写 Test Class 的时候,有时候需要一批有 Id 的数据或者把 Id 作为参数等情况,在数据关系比较复杂的情况下去造真实数据有些麻烦,于是找到这样一个可以生成 Id 的方法可以用来辅助测试! ...

  4. 你在用什么思想编码:事务脚本 OR 面向对象?

    最近在公司内部做技术交流的时候,说起技能提升的问题,调研大家想要培训什么,结果大出我意料,很多人想要培训:面向对象编码.于是我抛出一个问题:你觉得我们现在的代码是面向对象的吗?有人回答:是,有人回答否 ...

  5. Nginx学习笔记(四) 源码分析&socket/UDP/shmem

    源码分析 在茫茫的源码中,看到了几个好像挺熟悉的名字(socket/UDP/shmem).那就来看看这个文件吧!从简单的开始~~~ src/os/unix/Ngx_socket.h&Ngx_s ...

  6. SpringMVC实现一个controller写多个方法

    MultiActionController与ParameterMethodNameResolver在一个Controller类中定义多个方法,并根据使用者的请求来执行当中的某个方法,相当于Struts ...

  7. 【转】The difference between categorical(Nominal ), ordinal and interval variables

    What is the difference between categorical, ordinal and interval variables? In talking about variabl ...

  8. 常用linux命令索引

    每天一个linux命令(61):wget命令 每天一个linux命令(60):scp命令 每天一个linux命令(59):rcp命令 每天一个linux命令(58):telnet命令 每天一个linu ...

  9. Leetcode 88 Merge Sorted Array STL

    合并有序数组 时间复杂度O(m+n) 该算法来自各种算法与数据结构书,写得已经烂得不能再烂了,这个应该是最短的代码了吧,不知如何归类 class Solution { public: void mer ...

  10. CSS3参考手册

    很好用的CSS3 API http://www.css88.com/book/css/