CSS(层叠样式表)

CSS 的语法

1.基本语法规则
CSS 的语法规则比较简单,由 3 部分组成:选择器、属性和值,写法如下:

selector {property: value}

其中选择器规定了样式的影响范围,属性是希望更改的外观项目,值为该项目可以选 择的值,如样式 body { color : red }的含义是将 body 元素中的文本颜色变为红色。
样式的属性和值都放在一对花括号内,如果有多对属性和值,中间用英文分号分隔。 CSS 对属性和值的大小写不敏感,CSS 中的注释为“/注释内容/”格式。
2.样式的引用方式
有多种方式将样式定义引入至 HTML 页面中,最常见的做法是将所有的样式保存在扩 展名为.css 的文件中,然后在<head>元素中通过<link>元素引入,这样可以让多个 HTML 页面引用同一个 CSS 样式,如下面代码所示:

<link rel="stylesheet"type="text/css" href="样式文件地址" >

也可以在<style>元素中通过@import 指令引用 CSS 文件,但部分浏览器不支持这种写法:

<style>
@import : url('样式文件地址')
</style>

如果样式规则不需要被多个页面重用,也可以直接写在<style>元素中,称之为页面内 样式,如下所示:

<style>
    body { color : red }
</style>

如果样式规则只对某元素生效,也可以将样式规则写在该元素的 style 属性中,称之为 内联样式。大量使用内联样式会混淆 CSS 代码与 HTML 代码,并不推荐,如下所示:

<p style="font-size : 14pt; color : red">红色的文本</p>

如果多种样式之间存在冲突,其优先级是:内联样式→页面内样式→@import 引入的样式→<link>引入的样式。
3.选择器分类
按照影响的范围不同,CSS 选择器可以划分为以下几种。

  • HTML 选择器:HTML 选择器的名称为 HTML 的元素名,会影响页面中所有的同名元素(不区分大小写)。如希望页面中所有的段落文本为红色,可以定义p { color : red }样式。
  • 类选择器:类选择器的名称以符号“.”开头,会影响页面中所有 class 属性值相同的元素。
  • ID 选择器:ID 选择器的名称以符号“#”开头,会影响页面中 id 属性值相同的元素 (区分大小写,且 id 属性值应该是唯一的)。
  • HTML + 类选择器:HTML + 类选择器的名称格式为“元素名.类选择器名”,如选 择器“p.header”的影响范围为所有的<p class="header">元素,而不是所有的<p> 元素或 class 属性值为 header 的元素。
  • 上下文选择器:上下文选择器指多个选择器之间用空格分隔,用于根据上下文元素 准确地描述影响范围,比如上下文选择器“li span”的影响范围是出现在<li>元素中 的<span>元素,而不是所有的<span>元素。
  • 组选择器:如果页面多处希望采用相同的样式规则,可以定义组选择器,即多个选 择器之间用英文逗号分隔,这些选择器均会使用同一样式。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CSS 选择器</title>
<style>
p { color : red }
p.c1 {
    font-size:1.5em
}
p.c2 {
    font-size:0.5em
}
#special {
    font-style:italic
}
ul li p {
    text-decoration:underline
}
</style>
</head>
<body>
<p class="c1">应用类选择器c1选择器的段落</p> 
<p class="c2">应用类选择器c2选择器的段落</p> 
<p>普通段落</p>
<p id="special">id属性为special的段落</p>
<ul>
      <li><p>列表段落</p></li>
      <li class="c2"><p>列表段落</p></li>
</ul>
</body>
</html>
  • 伪类:伪类是一系列特殊的选择器,可用来描述超链接的不同状态,常见的伪类如下。
     a:link:用于修饰尚未单击过的超链接。
     a:visited:用于修饰单击过的超链接。
     a:hover:用于修饰鼠标置于其上的超链接。
     a:active:用于修饰鼠标获取焦点的超链接。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>伪类</title>
<style>
a:link {
   text-decoration:none; /*不加下画线*/ 
}
a:visited {
    text-decoration:line-through; /*添加删除线*/ 
}
a:hover {
    font-size:1.5em;
}
a:active {
    color:red; 
}
</style>
</head>
<body>
/*字体放大 1.5 倍*/
<a href="01_x.html">普通超链接</a>
<a href="01_2.html">浏览过的超链接</a> 
<a href="01_3.html">鼠标移上的超链接</a>
</body>
</html>

4.选择器的命名规则
选择器的命名规则如下:

  • 不要包含特殊符号,如+、-、'、"、/、*、\等。
  • HTML 选择器命名和 HTML 标签名称一样,最好全部使用小写字母。
  • 类选择器命名采用英文单词组合的方法,单词首字母小写;使用功能而不是外观来描述,比如要显示学生的姓名,采用红色字体,选择器应该叫“.studentName”,而不是”.redFont”。
  • 无论采用什么命名风格,都需要坚持到底,不能在一个样式文件中存在多种命名风格。
    5.样式的继承
    理论上讲,嵌套在父元素内的子元素会继承父元素的样式,如存在样式 body {color: red },则<body>元素内的所有子元素中的文本均应显示为红色,但各种浏览器对样式的继 承支持并不一致,为了令代码在各种浏览器下均能正常显示,适当定义一些冗余规则是必 要的。如下例所示,对 body 指定的样式并未被 input 元素继承:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>CSS 选择器</title>
<style>
body {
    color : red 
}
</style>
</head>
<body>
<p>普通段落</p>
<input type="button" value="普通按钮"/> 
<table>
  <tbody>
        <tr>
              <td>普通单元格</td>
        </tr>
    </tbody>
</table>
</body>
</html>

利用组选择器,将样式改为 body,input { color : red }可以解决此问题。

常用 CSS 属性介绍

1.字体属性

屏幕快照 2017-02-28 下午1.37.12.png
屏幕快照 2017-02-28 下午1.38.07.png

2.背景属性

屏幕快照 2017-02-28 下午1.41.15.png
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>背景</title>
<style>
body {
    background-image: url(02_5.png);
    background-repeat: no-repeat;
    background-position: right top;
}
.bg {
    background-image: url(05_4.png);
}
</style>
</head>
<body>
<table width="400" border="1" class="bg">
    <caption>
            背景重复的表格
    </caption>
    <tbody>
        <tr>
            <td>aaaa</td><td>bbbb</td><td>cccc</td> 
        </tr>
        <tr>  
            <td>aaaa</td><td>bbbb</td><td>cccc</td> 
        </tr>
        <tr>
            <td>aaaa</td><td>bbbb</td><td>cccc</td>
        </tr>
      </tbody>
</table>
</body>
</html>

3.区块属性

屏幕快照 2017-02-28 下午1.48.11.png

下例演示了使用 vertical-align 属性代替标签实现脚注、尾注的效果:
例 05_5.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>区块</title>
<style>
p.exp {
    text-indent:50px;
    font-size:2.0em;
}
p.header {
    text-align:center;
}
p.power {
    vertical-align:super;
    font-size:0.5em;
}
p.foot {
    vertical-align:sub;
    font-size:0.5em;
}
</style>
</head>
<body>
<p class="header">区块属性演示</p>
<p class="exp">X<span class="power">2</span> + Y<span class="foot">3</span>= 32</p>
</body>
</html>

4.方框属性
浏览器通过 BOX 模型(盒子模型)来确定元素中间距、边框、边距等的位置,其中边 框称为 border,边距(边框与周围元素的距离)称为 margin,间距(边框与元素内部内容 的距离)称为 padding,如图 5-12 所示。

屏幕快照 2017-02-28 下午1.58.51.png

图 5-13 所示为 IE 8 中的盒子模型。

屏幕快照 2017-02-28 下午1.59.51.png
屏幕快照 2017-02-28 下午2.02.17.png
屏幕快照 2017-02-28 下午2.03.39.png

下例演示了使用 float 等属性进行排版的效果:
例 05_6.html

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>方框</title>
<style>
p.first {
    font-size:13px;
    text-indent:2em;                /*缩进 2 个字的距离*/
    padding-left:50px;
    padding-right:50px;
}
p.first img {
float : left;
    width:64px;
}
p.second {
    font-size:13px;

 padding-left:50px;
        padding-right:50px;
    }
    p.second span {
        float:left;
        font-size:3.0em;
    }
hr {margin:25px; }
</style>
</head>
<body>
<p class="first">![](02_5.png)文字紧密围绕在msn水晶小人的周围。文字紧密 围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周 围。文字紧密围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周围。文字紧密围绕在 msn 水晶小人的周围。</p>
<hr/>
<p class="second"><span>今</span>日最重要的新闻是这样的,今日最重要的新闻是这样的,今 日最重要的新闻是这样的,今日最重要的新闻是这样的,今日最重要的新闻是这样的,今日最重要的新闻是这 样的,今日最重要的新闻是这样的,今日最重要的新闻是这样的,今日最重要的新闻是这样的。
    </body>
    </html>

5.边框属性
大部分可见的 HTML 元素都可以拥有边框,CSS 可以对上、下、左、右 4 个方向的边框样式进行修饰,


屏幕快照 2017-02-28 下午2.19.54.png
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>边框</title>
<style>
table {
    border-collapse:collapse;
    border : solid 1px black;
}
caption {
    font-size:2em;
    font-weight:bold;
}
th {background-color:#aaa; }
td,th {
    border : solid 1px black;
    padding : 5px;
}
</style>
</head>
<body>
<table width="400" border="1">
<caption>
标准的细线表格
    </caption>
    <thead>
        <tr>
              <th>AAA</th><th>BBB</th><th>CCC</th>
        </tr>
    </thead>
<tbody>
<tr><td>aaa</td><td>bbb</td><td>ccc</td> </tr>
<tr><td>aaa</td><td>bbb</td><td>ccc</td> </tr>
<tr><td>aaa</td><td>bbb</td><td>ccc</td> </tr>
<tr><td>aaa</td><td>bbb</td><td>ccc</td></tr>
   </tbody>
</table>
</body>
</html>

6.列表属性
顾名思义,列表相关的属性专门用于修饰无序列表<ul>与有序列表<ol>

屏幕快照 2017-02-28 下午2.28.18.png
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>列表</title>
<style>
ul {
        list-style-image:url(05_8.gif); 
}
</style>
</head>
<body>
<ul>
     <li>最新的新闻</li> 
     <li>最新的新闻</li> 
     <li>最新的新闻</li>
</ul>
</body>
</html>

7.定位属性
HTML 元素的位置与显示方式均由定位属性决定。默认情况下,HTML 元素采用自左向右、从上到下的布局显示方法,元素会根据内容自动决定元素大小


屏幕快照 2017-02-28 下午2.37.57.png
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>定位</title>
<style>
#d1 {
    position:absolute;
    left:50px;
    top:50px;
    width:300px;
    height:300px;
    background-color:#eee;
}
#d2 {
    position:absolute;
    right:0px;
    bottom:0px;
    width:200px;
    height:200px;
    background-color:#aaa;
}
#d3 {
    position:absolute;
    right:0px;
    bottom:0px;
    width:100px;
    height:100px;
    z-index:10;
    overflow:auto
}
</style>
</head>
<body>
<div id="d1">
    <div id="d3">![](02_11 (4).jpg)</div>
    <div id="d2"></div>
</div>
</body>
</html>

8.扩展属性

屏幕快照 2017-02-28 下午2.46.57.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,319评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,801评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,567评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,156评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,019评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,090评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,500评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,192评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,474评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,566评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,338评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,212评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,572评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,890评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,169评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,478评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,661评论 2 335

推荐阅读更多精彩内容

  • CSS全称为“层叠样式表 (Cascading Style Sheets)”,它主要是用于定义HTML内容在浏览器...
    百作不死的学习阅读 1,142评论 0 7
  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,703评论 1 92
  • CSS基础 本文包括CSS基础知识选择器(重要!!!)继承、特殊性、层叠、重要性CSS格式化排版单位和值盒模型浮动...
    廖少少阅读 3,043评论 0 40
  • 层叠样式表(cascading style sheet) 1 认识标签语义化 赋予标签意义,使每个标签各有各自的含...
    Jianshu9527阅读 423评论 0 0
  • 学习CSS的最佳网站没有之一 http://www.w3school.com.cn/tags/index.asp ...
    Amyyy_阅读 1,002评论 0 1