CSS 指层叠样式表 (Cascading Style Sheets)css
把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题html
CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明。浏览器
selector {declaration1; declaration2; ... declarationN }
选择器一般是您须要改变样式的 HTML 元素。编辑器
每条声明由一个属性和一个值组成。ide
属性(property)是您但愿设置的样式属性(style attribute)。每一个属性有一个值。属性和值被冒号分开。布局
selector {property: value}
下面这行代码的做用是将 h1 元素内的文字颜色定义为红色,同时将字体大小设置为 14 像素。字体
在这个例子中,h1 是选择器,color 和 font-size 是属性,red 和 14px 是值。this
h1 {color:red; font-size:14px;}
下面的示意图为您展现了上面这段代码的结构:url
提示:请使用花括号来包围声明。spa
1)值的不一样写法和单位
除了英文单词 red,咱们还可使用十六进制的颜色值 #ff0000:
p { color: #ff0000; }
为了节约字节,咱们可使用 CSS 的缩写形式:
p { color: #f00; }
咱们还能够经过两种方法使用 RGB 值:
p { color: rgb(255,0,0); } p { color: rgb(100%,0%,0%); }
请注意,当使用 RGB 百分比时,即便当值为 0 时也要写百分比符号。可是在其余的状况下就不须要这么作了。好比说,当尺寸为 0 像素时,0 以后不须要使用 px 单位,由于 0 就是 0,不管单位是什么。
2)记得写引号
提示:若是值为若干单词,则要给值加引号:
p {font-family: "sans serif";}
3)多重声明
提示:若是要定义不止一个声明,则须要用分号将每一个声明分开。下面的例子展现出如何定义一个红色文字的居中段落。最后一条规则是不须要加分号的,由于分号在英语中是一个分隔符号,不是结束符号。
p {text-align:center; color:red;}
你应该在每行只描述一个属性,这样能够加强样式定义的可读性,就像这样:
p { text-align: center; color: black; font-family: arial; }
4)空格和大小写
大多数样式表包含不止一条规则,而大多数规则包含不止一个声明。多重声明和空格的使用使得样式表更容易被编辑:
body { color: #000; background: #fff; margin: 0; padding: 0; font-family: Georgia, Palatino, serif; }
1)选择器的分组
你能够对选择器进行分组,这样,被分组的选择器就能够分享相同的声明。用逗号将须要分组的选择器分开。在下面的例子中,咱们对全部的标题元素进行了分组。全部的标题元素都是绿色的。
h1,h2,h3,h4,h5,h6 { color: green; }
经过依据元素在其位置的上下文关系来定义样式,你可使标记更加简洁。
在 CSS1 中,经过这种方式来应用规则的选择器被称为上下文选择器 (contextual selectors),这是因为它们依赖于上下文关系来应用或者避免某项规则。在 CSS2 中,它们称为派生选择器,可是不管你如何称呼它们,它们的做用都是相同的。
派生选择器容许你根据文档的上下文关系来肯定某个标签的样式。经过合理地使用派生选择器,咱们可使 HTML 代码变得更加整洁。
比方说,你但愿列表中的 strong 元素变为斜体字,而不是一般的粗体字,能够这样定义一个派生选择器:
li strong { font-style: italic; font-weight: normal; }
请注意标记为 <strong> 的蓝色代码的上下文关系:
<p><strong>我是粗体字,不是斜体字,由于我不在列表当中,因此这个规则对我不起做用</strong></p> <ol> <li><strong>我是斜体字。这是由于 strong 元素位于 li 元素内。</strong></li> <li>我是正常的字体。</li> </ol>
在上面的例子中,只有 li 元素中的 strong 元素的样式为斜体字,无需为 strong 元素定义特别的 class 或 id,代码更加简洁。
再看看下面的 CSS 规则:
strong { color: red; } h2 { color: red; } h2 strong { color: blue; }
下面是它施加影响的 HTML:
<p>The strongly emphasized word in this paragraph is<strong>red</strong>.</p> <h2>This subhead is also red.</h2> <h2>The strongly emphasized word in this subhead is<strong>blue</strong>.</h2>
id 选择器能够为标有特定 id 的 HTML 元素指定特定的样式。
id 选择器以 "#" 来定义。
下面的两个 id 选择器,第一个能够定义元素的颜色为红色,第二个定义元素的颜色为绿色:
#red {color:red;} #green {color:green;}
下面的 HTML 代码中,id 属性为 red 的 p 元素显示为红色,而 id 属性为 green 的 p 元素显示为绿色。
<p id="red">这个段落是红色。</p> <p id="green">这个段落是绿色。</p>
在现代布局中,id 选择器经常用于创建派生选择器。
#sidebar p { font-style: italic; text-align: right; margin-top: 0.5em; }
上面的样式只会应用于出如今 id 是 sidebar 的元素内的段落。这个元素极可能是 div 或者是表格单元,尽管它也多是一个表格或者其余块级元素。它甚至能够是一个内联元素,好比 <em></em> 或者 <span></span>,不过这样的用法是非法的,由于不能够在内联元素 <span> 中嵌入 <p>。
即便被标注为 sidebar 的元素只能在文档中出现一次,这个 id 选择器做为派生选择器也能够被使用不少次:
#sidebar p { font-style: italic; text-align: right; margin-top: 0.5em; } #sidebar h2 { font-size: 1em; font-weight: normal; font-style: italic; margin: 0; line-height: 1.5; text-align: right; }
在这里,与页面中的其余 p 元素明显不一样的是,sidebar 内的 p 元素获得了特殊的处理,同时,与页面中其余全部 h2 元素明显不一样的是,sidebar 中的 h2 元素也获得了不一样的特殊处理。
id 选择器即便不被用来建立派生选择器,它也能够独立发挥做用:
#sidebar { border: 1px dotted #000; padding: 10px; }
根据这条规则,id 为 sidebar 的元素将拥有一个像素宽的黑色点状边框,同时其周围会有 10 个像素宽的内边距(padding,内部空白)。
div#sidebar { border: 1px dotted #000; padding: 10px; }
在 CSS 中,类选择器以一个点号显示:
.center {text-align: center}
在上面的例子中,全部拥有 center 类的 HTML 元素均为居中。
在下面的 HTML 代码中,h1 和 p 元素都有 center 类。这意味着二者都将遵照 ".center" 选择器中的规则。
<h1 class="center"> This heading will be center-aligned </h1> <p class="center"> This paragraph will also be center-aligned. </p>
注意:类名的第一个字符不能使用数字!它没法在 Mozilla 或 Firefox 中起做用。
和 id 同样,class 也可被用做派生选择器:
.fancy td { color: #f60; background: #666; }
在上面这个例子中,类名为 fancy 的更大的元素内部的表格单元都会以灰色背景显示橙色文字。(名为 fancy 的更大的元素多是一个表格或者一个 div)
元素也能够基于它们的类而被选择:
td.fancy { color: #f60; background: #666; }
在上面的例子中,类名为 fancy 的表格单元将是带有灰色背景的橙色。
<td class="fancy">
你能够将类 fancy 分配给任何一个表格元素任意多的次数。那些以 fancy 标注的单元格都会是带有灰色背景的橙色。那些没有被分配名为 fancy 的类的单元格不会受这条规则的影响。还有一点值得注意,class 为 fancy 的段落也不会是带有灰色背景的橙色,固然,任何其余被标注为 fancy 的元素也不会受这条规则的影响。这都是因为咱们书写这条规则的方式,这个效果被限制于被标注为 fancy 的表格单元(即便用 td 元素来选择 fancy 类)。
对带有指定属性的 HTML 元素设置样式。
能够为拥有指定属性的 HTML 元素设置样式,而不只限于 class 和 id 属性。
注释:只有在规定了 !DOCTYPE 时,IE7 和 IE8 才支持属性选择器。在 IE6 及更低的版本中,不支持属性选择。
下面的例子为带有 title 属性的全部元素设置样式:
[title] { color:red; }
下面的例子为 title="zyy" 的全部元素设置样式:
[title=zyy] { border:5px solid blue; }
下面的例子为包含指定值的 title 属性的全部元素设置样式。适用于由空格分隔的属性值:
[title~=hello] { color:red; }
下面的例子为带有包含指定值的 lang 属性的全部元素设置样式。适用于由连字符分隔的属性值:
[lang|=en] { color:red; }
属性选择器在为不带有 class 或 id 的表单设置样式时特别有用:
input[type="text"] { width:150px; display:block; margin-bottom:10px; background-color:yellow; font-family: Verdana, Arial; } input[type="button"] { width:120px; margin-left:35px; display:block; font-family: Verdana, Arial; }
当读到一个样式表时,浏览器会根据它来格式化 HTML 文档。插入样式表的方法有三种:
当样式须要应用于不少页面时,外部样式表将是理想的选择。在使用外部样式表的状况下,你能够经过改变一个文件来改变整个站点的外观。每一个页面使用 <link> 标签连接到样式表。<link> 标签在(文档的)头部:
<head> <link rel="stylesheet" type="text/css" href="mystyle.css" /> </head>
浏览器会从文件 mystyle.css 中读到样式声明,并根据它来格式文档。
外部样式表能够在任何文本编辑器中进行编辑。文件不能包含任何的 html 标签。样式表应该以 .css 扩展名进行保存。下面是一个样式表文件的例子:
hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");}
不要在属性值与单位之间留有空格。假如你使用 “margin-left: 20 px” 而不是 “margin-left: 20px” ,它仅在 IE 6 中有效,可是在 Mozilla/Firefox 或 Netscape 中却没法正常工做。
当单个文档须要特殊的样式时,就应该使用内部样式表。你可使用 <style> 标签在文档头部定义内部样式表,就像这样:
<head> <style type="text/css"> hr {color: sienna;} p {margin-left: 20px;} body {background-image: url("images/back40.gif");} </style> </head>
因为要将表现和内容混杂在一块儿,内联样式会损失掉样式表的许多优点。请慎用这种方法,例如当样式仅须要在一个元素上应用一次时。
要使用内联样式,你须要在相关的标签内使用样式(style)属性。Style 属性能够包含任何 CSS 属性。本例展现如何改变段落的颜色和左外边距:
<p style="color: sienna; margin-left: 20px"> This is a paragraph </p>
若是某些属性在不一样的样式表中被一样的选择器定义,那么属性值将从更具体的样式表中被继承过来。
例如,外部样式表拥有针对 h3 选择器的三个属性:
h3 { color: red; text-align: left; font-size: 8pt; }
而内部样式表拥有针对 h3 选择器的两个属性:
h3 { text-align: right; font-size: 20pt; }
假如拥有内部样式表的这个页面同时与外部样式表连接,那么 h3 获得的样式是:
color: red; text-align: right; font-size: 20pt;
即颜色属性将被继承于外部样式表,而文字排列(text-alignment)和字体尺寸(font-size)会被内部样式表中的规则取代。
1. CSS 基础语法