CSS教程
Table of Contents
什么是CSS
CSS是一门语言, 该语言指定了文档该如何呈现给用户.
emacs doc1.html
:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Sample document</title> </head> <body> <p> <strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets </p> </body> </html>
这边还没有用到CSS, 下面开始使用CSS来指定样式.
为何使用CSS
CSS帮助我们将文档信息的内容和如何展现它的细节相分离. 这样可以:
- 避免重复
- 易于维护
我们的网站可能有成千上万的页面外观相似. 使用CSS, 可以将样式信息存储在公共的文件中以供所有的页面共用.
当用户显示页面时, 用户的浏览器将样式信息和页面内容一同加载.
当用户打印页面时, 可以提供不同的样式信息, 以便于打印出来的页面更易于阅读.
在与 doc1.html
相同的目录中, 新建另一个文件, 作为样式表.
emacs style.css
:
strong {color: red;}
为了将HTML与CSS相连, 修改HTML中的文件, 在 <title> 和 </head> 中间, 插入一行:
<title>Sample document</title> <link rel="stylesheet" href="style.css"> </head>
CSS如何工作
浏览器在展现一个文档的时候, 必须要把文档内容和相应的样式信息结合起来展示. 这个处理过程一般分两个阶段:
- 浏览器先将标记语言和CSS转换成DOM(文档对象模型)结构. 这时DOM就代表了电脑内存中的相应文档, 因为它已经融合了文档内容和相应的样式表.
- 最后浏览器把DOM的内容展示出来.
层叠和继承
对于层叠来说, 共有三种主要的样式来源:
- 浏览器对HTML定义的默认样式.
- 用户定义的样式.
- 开发者定义的样式, 可以有三种形式: 定义在外部文件(外链样式); 在页面的头部定义(内联样式), 通过这种形式定义的样式只在本页面内生效; 定义在特定的元素身上(行内样式).
网页开发者定义的样式会覆盖用户样式, 用户定义的样式表会覆盖浏览器定义的默认样式.
而继承, 以 doc1.html
为例, <strong> 作为 <p> 的子元素, 继承了 <p> 的样式, 同样的, <p> 也从 <body> 中继承了许多样式.
编辑 style.css
, 在头部加上如下代码:
p {color:blue; text-decoration:underline;}
<strong> 会继承 <p> 的样式, 然后重复的样式, <strong> 的优先级会更高, 覆盖上层样式.
选择器
规则以选择器开始, 由一系列键值对组成. 如下面这段就是一条规则:
strong { color: red; }
这边, strong是选择器.
除了标签名称, 还可以在选择器中使用属性值. 其中, class
和 id
两个属性是比较重要的.
通过设置元素的 class
属性, 可以为元素指定类名, 类名可自定义, 文档中多个元素可以拥有同一个类名. 写样式表时, 类选择器以.开头.
通过设置元素的 id
属性, 可以为元素制定ID, ID可自定义, 每个ID在文档中必须是唯一的. 写样式表时, ID选择器以#开头.
如, 有以下HTML语句:
<p class="key" id="principal">
在CSS样式表中, 如下规则可以让所有class属性等于key的元素文字颜色呈现绿色, 让id等于principal的元素文字变粗:
.key{ color: green; } #principal{ font-weight: bolder; }
伪类选择器(pseudo-classes selectors)
CSS伪类加在选择器后面, 用来指定元素状态的关键字. 如, :hover
会在鼠标悬停在选中元素上时应用相应的样式.
语法规则:
selector:pseudo-class { property: value; }
练习
使用类选择器和ID选择器
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Sample document</title> <link rel="stylesheet" href="style1.css"> </head> <body> <p id="first"> <strong class="carrot">C</strong>ascading <strong class="spinach">S</strong>tyle <strong class="spinach">S</strong>heets </p> <p id="second"> <strong>C</strong>ascading <strong>S</strong>tyle <strong>S</strong>heets </p> </body> </html>
style1.css:
strong { color: red; } .carrot { color: orange; } .spinach { color: green; } #first { font-style: italic; }
可以发现优先级: ID选择器 > 类选择器 > 标签选择器
伪类选择器
<!doctype html> <html> <head> <meta charset="UTF-8"> <title>Sample document</title> <link rel="stylesheet" href="style1.css"> </head> <body> <p>Go to our <a class="homepage" href="http://www.example.com/" title="Home page">Home page</a>.</p> </body> </html>
编辑CSS:
a.homepage:link, a.homepage:visited { padding: 1px 10px 1px 10px; color: #fff; background: #555; border-radius: 3px; border: 1px outset rgba(50,50,50,.5); font-family: georgia, serif; font-size: 14px; font-style: italic; text-decoration: none; } a.homepage:hover, a.homepage:focus, a.homepage:active { background-color: #666; }
运行后可将鼠标放在链接上查看效果.
文本样式 颜色
关于文本样式和颜色, 直接查看 CSS参考手册.
内容
CSS的一个重要优势是它可以帮助你将文档内容和其样式分离. 但是有时候在样式而非文档中定义一些内容也是很有用的.
在样式中可以定义文本内容和图片内容, 当内容与文档结构紧密相关的时候, 可以在样式表中指定内容.
文本内容
CSS可以在标签的前后插入文本, 在标签对应的选择器的后面加上 ::before
或者 ::after
, 在声明中, 指定 content
属性, 设置文本内容.
.ref::before { font-weight: bold; color: navy; content: "Reference: "; }
在所有类名包含ref的元素前面加上 Reference:
.
图片内容
可以通过 content
属性值设置为某个图片的URL, 可以将图片插到元素的前面或后面.
可以通过 background
属性值设为图片的URL, 这样图片就成了该标签的背景图.
Generated by Emacs 25.x(Org mode 8.x)
Copyright © 2014 - Pinvon - Powered by EGO