《CSS设计指南》笔记--CSS工作原理

通过阅读和学习书籍《CSS设计指南》总结

《CSS设计指南》/Charles lvyke-Smith著.李松峰译—人民邮电出版社

本书网站:http://www.stylinwithcss.com

强烈推荐!!深入浅出,精简,适合入门!!

CSS工作原理

2.1 剖析CSS规则

??规则实际上就是一条完整的CSS指令。规则声明了要修改的元素和要应用给该元素的样式。

2.1.1 为文档添加样式的三种方法

??有三种方法可以把CSS添加到网页中,分别是写在元素标签里(行内样式),写在<style>标签里(嵌入样式)和写在单独的CSS样式表中(链接样式)。

  • 行内样式:行内样式是写在特定HTML标签的style属性里,其作用非常有限。行内样式只能影响它所在的标签,而且总会覆盖嵌入样式和链接样式。
  • 嵌入样式:嵌入的CSS样式是放在HTML文档的head元素中,嵌入样式的应用范围仅限于当前页面。页面样式会覆盖外部样式表的样式,但会被行内样式覆盖。
  • 链接样式:在创建包含多个页面的网站时,需要把样式集中在一个单独的文件里,这个文件就叫样式表。样式表其实就是一个扩展名为.css的文本文件。可以在任意多个HTML页面中链接同一个样式表文件,每个页面中只需加入类似下面的这一行代码即可:
<link href="style.css" rel="stylesheet" type="text/css" />

??链接样式的作用范围可以是整个网站。只要使用标签把样式表链接到每个页面,相应的页面就可以使用其中的样式。随后,只是修改了样式表中的样式,改动就会在所有被选中的元素上体现出来,无论这个元素在哪个页面里。这样,既可以做到全站页面外观统一,又便于整站样式更新。

??除了以上三种为页面添加样式的方法,还有一种在样式表链接其他样式表的方法,那就应用@import指令(是一种at规则):

@import url(css/style2.css)

需要注意,@import指令必须出现在样式表中其他样式之前,否则@import引用的样式表不会被加载。

2.1.2 CSS规则命名惯例

??CSS规则分两部分,即选择符和声明。声明又由两部分组成,即属性和值。声明包含在一对花括号内。

p {color:red;}
p {color:red; font-size:12px; font-weight:bold;}
h1,h2,h3 {color:blue; font-weight:bold;}

2.2 上下文选择符

??上下文选择符的格式如下:

标签1 标签2{声明}

??其中,标签2就是我们选择的目标,而且只有在标签1 是其祖先元素(不一定是父元素)的情况下才会被选中。

??上下文选择符,严格来讲(也就是CSS规范里),叫后代组合式选择符(descentdant combinator selector),就是一组以空格分隔的标签里。用于选择作为指定祖先元素后代的标签。如:

article p {font-weight:bold;}
article h1 em {color:green;}//双上下文选择符可以选中更具体的标签

2.3 特殊的上下文选择符

2.3.1 子选择符>

标签1 >标签2 

??标签2 必须是标签1 的子元素,或者反过来说,标签1 必须是标签2 的父元素。这个选择符中的标签1不能是标签2之外的其他祖先元素。如:

section > h2 {font-style:italic;}

2.3.2 紧邻同胞选择符+

标签1 + 标签2 

??标签2必须紧跟在其同胞标签1的后面。如:

h2 + p {font-variant:small-caps;}

2.3.3 一般同胞选择符~

标签1~标签2

??标签2必须跟(不一定紧跟)在其同胞标签1后面。如:

h2 ~ a {color:red;}

2.3.4 通用选择符*

??通用选择符*(常被称为星号选择符)是一个通配符,它匹配任何元素。如:

p * {color:green;}
section * a {font-size:1.3em;}//任何是section孙子元素,而非子元素的a标签都会被选中

??总之,只有一个标签名的选择符会选中页面中所有相同标签的实例。而通过上下文选择符,则可以指定标签必须具备相应的祖先或同胞。

2.4 ID和类选择符

2.4.1 类属性

??类属性就是HTML元素的class属性,body标签中包含的任何HTML元素都可以添加这个属性。

  • 类选择符:就是在HTML类名前面加一个点。如:
.specialtext {font-style:italic}
  • 标签带类选择符:把标签名和类选择符号写在一块,比如:
p.specialtext {color:red;}//更精确的选择特定的标签
p.specialtext span{font-weight:bold;}
  • 多类选择符。如:
<p class="specialtext featured">Here the span tag <span>may or may not </span> be styled.</p>
.specialtext.featured {font-size:120%;}//两个类名之间没有空格,这里选择同时具有这两个类名的那个元素

2.4.2 ID属性

??ID与类写法类似,如:

#specialtext {CSS样式声明}

2.4.3 什么时候用ID,什么时候用类

??ID的用途是在页面标记中唯一地标识一个特定的元素。它能够为我们编写CSS规则提供必要的上下文,排除无关的标记,而只选择该上下文中的标签。

??相对来说,类的目的是为了标识一组具有相同特征的元素,可以应用给任意多个页面中的任意多个HTML元素的公共标识符,以便我们为这些元素应用相同的CSS样式。而且,使用类也让为不同标签名的元素应用相同的样式成为可能。

??注:不要乱用类。要充分了解继承和上下文的选择符的作用。利用其让不同的标签共享样式,从而降低你需要编写和维护的CSS量。

2.5 属性选择符

2.5.1 属性名选择符

标签名[属性名] //选择任何带有属性名的标签名
img[title] {border:2px solid blue;}

2.5.2 属性值选择符

标签名[属性名="属性值"]//选择任何带有值为属性值的属性名的标签名
img[title="red flower"] {border:4px solid green;}

2.6 伪类

伪类分两种。

  • UI(User Interface,用户界面)伪类会在HTML元素处于某个状态时(比如鼠标指针位于链接上),为该元素应用CSS样式。
  • 结构化伪类会在标记中存在某种结构上的关系时(如某个元素是一组元素中的第一个或最后一个),为相应元素应用CSS样式。

2.6.1 UI伪类

??UI伪类会基于HTML元素的状态应用样式。

??1. 结构伪类

  • Link:此时,链接就在那儿等着用户点击。
  • Visited:用户此前点击过这个链接。
  • Hover:鼠标指针正悬停在链接上。
  • Aactive:链接正在被点击(鼠标在元素上按下,还没有释放)。

一个冒号(:)表示伪类,两个冒号(::)表示CSS3新增的伪元素。如:

a:hover {text-decoration:none;}
p:hover {background-color:gray;}

??2. focus伪类

e:focus //e表示任何元素

??表单中的文本字段在用户单击它时会获得焦点,然后用户才能在其中输入字符。如:

intput:focus {border:1px solid blue;}

??会在光标位于input字段中时,为该字段添加一个蓝色框。这样可以让用户明确知道输入的字符会出现在哪里。

??3. :target伪类

e:target //如果用户点击一个指向页面中其他元素的链接,则这个元素就是目标,可以用:target伪类选中它

??如:对于下面这个链接

<a href="#more_info">More Information</a>

??位于页面其他地方,ID为more_info的那个元素就是目标。该元素可能是这样的:

<h2 id="more_info">This is the information you are looking for.</h2>

??那么,如下CSS规则

#more_info:target {background:#eee;}

??会在用户单击链接转向ID为more_info的元素时,为该元素添加浅灰色背景。

2.6.2 结构化伪类

??1. :first-child和:last-child

e:first-child //代表一组同胞元素中的第一个元素
e:last-child  //代表最后一个

??2. :nth-child

e:nth-child(n) // n表示一个数值,也可以是odd或者even,2n+1等

2-7 伪元素

??伪元素,就是你的文档中若有实无的元素。

??1. ::first-letter伪元素

p::first-letter {font-size:300%;}//段落首字母放大效果

??2. ::first-line伪元素

p::first-line {font-variant:small-caps;}//把第一行以小型字母显示

??3. ::before和::after伪元素

e::before
e::after //用于在特殊元素前面或后面添加特殊元素

2.8 继承

2.9 层叠

??详见《HTML+CSS基础课程》学习笔记六

??以下就是浏览器层叠各个来源样式的顺序:

  • 浏览器默认样式
  • 用户样式表
  • 作者连接样式表(按照它们链接到页面的先后顺序)
  • 作者嵌入样式
  • 作者行内样式

??浏览器会按照上述顺序依次检查每个来源的样式,并在有定义的情况下,更新对每个标签属性值的设定。整个检查更新过程结束后,再将每个标签以最终设定的样式显示出来。

2.9.1 层叠规则:

规则一:找到应用给每个元素和属性的你所有声明;
规则二:按照顺序和权重排序;
规则三:按特指度排序;
规则四:顺序决定权重(当特指度相同时)。

2.9.2 计算特指度

??首先,有一个简单的记分规则,即对每个选择符都要按下面的“ICE”公式计算三个值:

I-C-E
  • 选择符中有一个ID,就在I的位置加1;
  • 选择符中有一个类,就在C的位置上加1;
  • 选择符中有一个元素(标签)名,就在E位置上加1;
  • 得到一个三位数。
p                                  0-0-1 特指度 =1
p.largetext                        0-1-1 特指度 =11
p#largetext                        1-0-1 特指度 =101
body p#largetext                   1-0-2 特指度 =102
body p#largetext ul.mylist         1-1-3 特指度 =113
body p#largetext ul.mylist li      1-1-4 特指度 =114

简单层叠要点:

  • 规则一:包含ID的选择符胜过包含类的选择符,包含类的选择符胜过包含标签的选择符
  • 规则二:如果几个不同来源都为同一个标签的同一个属性定义了样式,行内样式胜过嵌入样式,嵌入样式胜过链接样式。在链接的样式表中,具有相同特指度的样式,后声明的胜过先声明的。
  • 规则三:设定的样式胜过继承的样式,此时不考虑特指度(即显式设定优先)。

2.10 规则声明

CSS属性值主要分以下三类。

  • 文本值。
  • 数字值。
  • 颜色值

《HTML+CSS基础课程》学习笔记七 》(格式化排版)

《HTML+CSS基础课程》学习笔记十 》(颜色值,文本值,代码简写,文本居中设置)

《CSS3实战》笔记–色彩模式和不透明度

Colrd:一个Pinterest风格的站点有很多启发人创造的图片和照片,以及相应的调色板。

Adobe Kuler:Adobe Kuler的官方网站提供了数千种色样,调色板创建工具,以及其他人选用的时尚颜色。

时间: 2024-10-25 10:09:02

《CSS设计指南》笔记--CSS工作原理的相关文章

CSS设计指南笔记

1.border中,solid为实线,dashed为虚线 2.clear为清楚浮动 3.position有四种值: static.正常文档流 relative.相对上下左右的位置 absolute.绝对定位,针对body或父级元素定位 fix:固定定位,不随滚动条滚动 4.display:是否显示,不显示的时候不占据空间 visibility:是否可见,不可见的时候占据空间 5.background-repeat:背景图片是否重复 repeat.默认 repeat-x repeat-y no r

CSS设计指南之CSS三种机制:继承、层叠和特指

一.继承 CSS中的祖先元素也会向后代传递一样东西:CSS属性的值.body元素是所有元素的祖先,所有标签都是它的后代,比如为body元素设置一种字体,那么文档中的所有元素,无论它在层次结构中多么靠下,都将继承这些样式.CSS中有很多属性都可以继承,其中相当一部分都与文本有关. 二.层叠 层叠,就是层叠样式表中的层叠,是一种样式在文档层次中逐层叠加的过程.目的是让浏览器面对某个标签特定属性的多个来源时,确定最终使用哪个值. 1.样式来源 浏览器默认样式表:因为你还没有显示设置CSS属性,h1就会

《css设计指南》 读书笔记 一

<css设计指南>这本书是一个大神同学介绍给我的,据说覆盖了几乎所有前端面试的有关css的知识点,所以赶紧买来看看.( ps:这本书貌似绝版了,可以上淘宝买复印本,也可直接看电子书. ) 闭合标签,自闭合标签. html5中,将忽略所有自闭合标签最后的 / .可是建议在最后仍然加上  空格加/ 以规范格式. 所有img标签都需要加上alt属性. ps:视障用户使用的屏幕阅读器会读出图片的alt属性. 行内.块级标签.  块级: h1~h6, p, ol/ul, li, blockquote .

《CSS设计指南》笔记--HTML标记与文档结构

通过阅读和学习书籍<CSS设计指南>总结 <CSS设计指南>/Charles lvyke-Smith著.李松峰译-人民邮电出版社 本书网站:http://www.stylinwithcss.com 强烈推荐!!深入浅出,精简,适合入门!! HTML标记与文档结构 1.1 HTML标记基础 1.1.1 文本用闭合标签 ??闭合标签的基本格式如下: <标签名>文本内容<标签名/> <标签名 属性_1="属性值" 属性_2="属

CSS设计指南之理解盒子模型

原文:CSS设计指南之理解盒子模型 一.理解盒模型 每一个元素都会在页面上生成一个盒子.因此,HTML页面实际上是由一堆盒子组成的.默认情况下,每个盒子的边框不可见,背景也是透明的,所以我们不能直接看到页面中盒子的结构.使用WebDeveloper工具条中的"OutLine"->"OutLine Level Element"菜单项,可以方便地显示盒子的边框和背景,从而让我们能从另外一个角度来审视页面的构成. 1.1 元素盒子的属性 1.边框(border):可

CSS设计指南之浮动与清除

原文:CSS设计指南之浮动与清除 浮动意思就是把元素从常规文档流中拿出来,浮动元素脱离了常规文档流之后,原来紧跟在其后的元素就会在空间允许的情况下,向上提升到与浮动元素平起平坐. 一.浮动 CSS设计float属性的主要目的,是为了实现文本绕排图片的效果.然而,这个属性也成为了创建多栏布局最简单的方式. 1.文本绕排图片 在浮动一张图片或其他元素时,你是在要求浏览器把它往上方推,直到它碰到父元素的内边界.后面的段落不再认为浮动元素在文档流中位于它的前面了,因为它会占据父元素左上角的位置.不过,它

css 权威指南笔记

部分属性选择: 选择class 属性中包含warning的元素 [class~="warning"]{font-weight:bold} 子串匹配属性选择器: 在现代浏览器中得到支持 包括ie7 特定属性选择器: css 权威指南笔记

css设计指南第3版 读书笔记

html标记内容,css显示内容. html标记由一系列标签组成,包括闭合标签和自闭合标签,属性给标签提供了额外信息.标签可以嵌套. 标签分为块级别和行内级别,块级标签占一行(扩展到与父元素同宽),行内标签则相反,只有在空间不足才会折到下一行. html实体表示键盘上没有印刷的字符,它以&开始,;结束. dom层次可以使用父标签(直接祖先),子标签(直接后代),同胞标签,后代.祖先标签来表示. html标签都有一组样式,通过css来设定.css选择符和要应用的样式构成了一条css规则. css行

《CSS设计指南》笔记—浅谈颜色值

颜色值 指定颜色值可以有几种方式.这些方式可以在同一个样式表中混合使用. 1.颜色名(如red) 设定颜色属性时可以直接使用颜色名,或者用官方术语就是颜色关键字.  W3C定义了16个颜色关键字:aqua(浅绿色).black(黑色).blue(蓝色).fuchsia(紫红色).gray(灰色).green(绿色).lime(黄绿色).maroon(褐红色).navy(深蓝色).olive(茶青色 ).purple(紫色).red(红色).silver(银色).teal(青色).white(白色