了解CSS
CSS是层叠样式表的简称,属于一种标记语言,用于设计html页面的文本、图片、版面等等的布局和外观显示样式,通俗点说,美化html。
构成方式:选择器+一条或多条声明,举例:
h1{ color:red; fontsize: 25px;}
(记得加分号)
css语言写在head标签内,归属于style标签。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> p{ color:red; } </style> </head> <body> <p>这是一句红色的字体</p> </body> </html>
|
css代码风格:
①紧凑格式:
1
| h1{color: deeppink;font-size: 20px}
|
②展开格式:(多采用这种格式书写)
1 2 3 4
| h1 { color: pink; font-size: 12px; }
|
基础选择器
选择器就是根据不同需求把不同的标签选出来。
标签选择器
以标签名作为选择器。
语法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> p { color: red; } div { color: blue; } </style> </head>
<body> <p>这是一句红色的字体</p> <div>这是一句蓝色的字体</div> <span>这是一句黑色的字体</span> </body>
</html>
|
类选择器
(开发最常用)单独选一个或者某几个标签。
语法:在类名前面加点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .red { color: red; } .violet-color { color: violet; } </style> </head>
<body> <p>这是一句黑色的字体</p> <div class="red">这是一句红色的字体</div> <span>这是一句黑色的字体</span> <h1 class="red">我也想变成红色</h1> <span class="violet-color">这是粉色的字体</span> </body>
</html>
|
不要使用纯数字和中文等命名,尽量使用英文字符。
有色盒子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .red { background-color: red; width: 200px; height: 100px; } .green { background-color: green; width: 200px; height: 100px; } </style> </head>
<body> <div class="red">我是一个红色的黑字盒子</div> <div class="green">我是一个绿色的黑字盒子</div> </body>
</html>
|
多类名
我们可以给一个标签指定多个类名,从而达到更多的选择目的,还可以减少代码复用,统一修改比较方便。
创建多类名时,不同的类名用空格隔开。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> .box { width: 200px; height: 100px; } .red { background-color: red; } .green { background-color: green; } .font { font-size: 25px; } </style> </head>
<body> <div class="box red font">我是一个红色的黑字盒子,字体还很大</div> <div class="box green">我是一个绿色的黑字盒子</div> <div class="box font">我是一个字体很大的无色盒子</div> </body>
</html>
|
ID选择器
id选择器可以选择带有特定id的html元素,只能调用一次,一般和js搭配使用。
语法:在类名钱加井字号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> #name { font-size: 30px; } </style> </head>
<body> <div id="name">我的名字叫小亮</div> </body>
</html>
|
通配符选择器
能选取页面中所有的元素,只用星星,不需要类名。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> * { color: blue; } </style> </head>
<body> <h1>我们都是蓝色字体</h1> <p>我们都是蓝色字体</p> <span>我们都是蓝色字体</span> <div>我们都是蓝色字体</div> </body>
</html>
|
CSS字体属性
字体系列
属性:font-family
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <!DOCTYPE html> <html lang="en">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> p { font-family: "微软雅黑"; } h2 { font-family: "宋体"; } </style> </head>
<body> <h2>这里是宋体</h2> <p>我是微软雅黑</p> </body>
</html>
|
如果存在多个字体,使用逗号分隔,这里的意思是如果用户电脑没有第一种字体,就执行第二种字体,以此类推。
1 2 3
| h2 { font-family: '宋体',Arial, Helvetica, sans-serif; }
|
字体大小
属性:font-size
px(像素)是最常用的单位。
可以给body标签指定整个页面文字的大小。
字体粗细
属性:font-weight
常用参数:normal(正常),bold(粗体),bolder(特粗体),lighter(细体)
文字样式
属性:font-style
参数:normal,italic(斜体)
复合属性
1 2 3 4
| 类名 { font: font-style font-weight font-size/line-height font-family; }
|
不能更改顺序,直接修改对应位置改为对应参数即可。
文本颜色
属性:color
表示方法 |
属性值 |
预设的颜色值 |
red,green,blue…… |
十六进制颜色码 |
#FF0000,#FF6600,#2E2134 |
RGB代码 |
rgb(255,0,0)或者rgb(100%,0%,0%) |
文本对齐
属性:text-align
只能设定水平对齐方式:left,right,center
装饰文本
属性:text-decoration
添加文本修饰,常用的属性值:
none(无),underline(下划线,链接a默认带下划线),overline(上划线),line-through(删除线)
可以使用这种方法去掉超链接的默认下划线。
文本缩进
属性:text-indent
指定将段落的首行缩进,单位为像素(px)。
或者使用相对单位em,一个em相当于当前元素(font-size)1个文字的大小,我们可以使用2em来缩进两个字。
行间距
属性:line-height
可以控制文字行与行之间的距离。
文本有上间距和下间距之分,这里有转换关系:
上间距=下间距=(line-height - font-size)/2
CSS引入方式
按照书写位置,我们可以把CSS样式表分为三类:
行内样式表(行内式)
内部样式表(嵌入式)
外部样式表(链接式)
三种样式表有优先级:行内优先于内部,内部优先于外部。
内部样式表
写到html页面内部,单独放在style标签内。
理论上可以把style标签放在html文档任何地方,不过一般会放在head中。
行内样式表
直接在标签内部style属性中设置css样式,适用于较为简单的修改:
1 2 3 4 5 6 7
| <body> <p>我是一只可爱的小羊</p> <p style="color: green;">我是一只绿色的小羊</p> <p>我是一只可爱的小羊</p> <p>我是一只可爱的小羊</p> <p>我是一只可爱的小羊</p> </body>
|
我是一只绿色的小羊
外部样式表
适用于样式非常多的情况,方法是:样式单独写到css文件里,然后把css引入到html页面中,实际开发中最为常用。
引入方法:
1.新建一个后缀为 .css 的样式文件,把所有的css代码都放在这个文件里。
2.在html里使用link标签引入这个文件。
使用例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <link rel="stylesheet" href="1.css"> </head> <body> <h1>我是一只可爱的小羊</h1> <h2>我是一只可爱的小羊</h2> <h3>我是一只可爱的小羊</h3> <div>我是一只可爱的小羊</div> <span>我是一只可爱的小羊</span> </body> </html>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| h1 { color: green; }
h2 { font-size: 50px; }
h3 { color: yellow; }
div { font-weight: bolder; }
span { font-style: italic; }
|
实例1:新闻页面
页面预览:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>案例1 - 新闻页面</title> <link rel="stylesheet" href="1.css"> </head> <body> <div id="top">热到膨胀!北方高温明日达鼎盛,京津冀局地地表温度将超60℃</div> <div id="info">2019-07-03 16:31:47 来源:<a id="weather" herf="http://www.weather.com.cn/">中国天气网 </a><input type="text" placeholder="请输入查询条件" > <input id="search" value='搜索' type="button" /></div> <hr> <p>中国天气网讯 今天(3日),华北、黄淮多地出现高温天气,截至下午2点,北京、天津、郑州等地气温突破35℃。预报显示,今后三天(3-5日),这一带的高温天气将继续发酵,高温范围以及强度将在4日达到鼎盛,预计北京、天津、石家庄、济南等地明天的最高气温有望突破38℃,其中北京和石家庄的最高气温还有望创今年以来的新高。</p> <h3>气温41.4℃!地表温度66.5℃!北京强势迎七月首个高温日</h3> <p>今天,华北、黄淮一带的高温持续发酵,截至今天下午2点,陕西北部、山西西南部、河北南部、北京、天津、山东西部、河南北部最高气温已普遍超过35℃。大城市中,北京、天津、郑州均迎来高温日。</p> <div class="pic1"><img src="https://pics5.baidu.com/feed/f31fbe096b63f624afcf7dac87ebf9fd184ca3c7.jpeg@f_auto?token=417435c75068f79625faa8e567e8bf19&s=39B71A9A5A307E8686BB0DE80300F02B" /></div> <p>今天,北京地区迎来今年七月份的首个高温日。监测显示,截至今天下午3点,城区气温普遍在36到39℃之间,古观象台、大观园、回龙观等地气温超过40℃,气温最高的站点出现在昌平区流村,达到41.4℃。</p> <p>在阳光暴晒下,地表温度也逐渐走高。今天下午2点,华北黄淮大部地区的地表温度都在50℃以上,部分地区地表温度甚至超过60℃。其中,河北衡水地表温度高达68.3℃,天津站和北京站附近的地表温度分别高达66.6℃和66.5℃。</p> <h3>明日热度再升级!京津冀携手冲击38℃+</h3> <p>中国天气网气象分析师王伟跃介绍,明天(4日),华北、黄淮地区35℃以上的高温天气还将继续升级,并进入鼎盛阶段,高温强度和范围都将发展到最强。明天,北京南部、天津大部、河北中部和南部、山东中部和西部、山西南部局地、河南北部、东北部分地区的最高气温都将达到或超过35℃。</p> <p>不过,专家提醒,济南被雨水天气完美绕开,因此未来一周,当地的高温还会天天上岗。在此提醒当地居民注意防暑降温,防范持续高温带来的各种不利影响。(文/张慧 数据支持/王伟跃 胡啸 审核/刘文静 张方丽)</p> <span>来源:中国天气网 责任编辑:刘京</span> </body> </html>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #top { text-align: center; font-size: 33px; font-weight: 450; line-height: 80px; }
#weather { text-decoration: none; color: blue; }
#info { color: gray; text-align: center; }
#search { font-weight: bold; }
.pic1 { text-align: center; }
p { text-indent: 2em; }
span { color: gray; font-size: 13px; text-indent: 2em; }
* { font-family: 'Microsoft YaHei'; }
|
Emmet语法
Emmet语法可以通过缩写等方法来进一步提高html和css的编写速度,在VScode里已经集成了该语法。
快速生成HTML
之前学到的使用叹号生成html骨架就属于一种Emmet语法。
常用语法操作:
输入标签名后按Tab键或者回车等都可以自动生成一对标签。
打出标签名后加星号+数字可以快速输入一组标签:
1 2 3 4 5 6 7 8 9 10 11
| <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div> <div></div>
|
要写父子结构的标签可以借助大于号:
1 2 3 4 5 6
| <ul> <li></li> </ul>
<div><span></span></div>
|
并列的标签我们可以借助加号:
如果生成的div带有特定的class或者id,我们可以按照css的语法直接生成:
1 2 3 4
| <div class="banner"></div>
<div id="footer"></div>
|
当然,我们如果不想生成div,想生成点别的标签,我们可以在前面加点约束:
1 2 3 4 5 6 7 8
| <p class="one"></p>
<span id="gray"></span>
<ul> <li id="two"></li> </ul>
|
如果我们想生成同样的命名但是带有序号的标签,我们可以使用 $ 号:
1 2 3 4 5 6 7
| <div class="img1"></div> <div class="img2"></div> <div class="img3"></div> <div class="img4"></div> <div class="img5"></div> <div class="img6"></div>
|
如果我们需要在生成的标签带有相同的文字内容,我们可以使用大括号:
1 2 3 4 5 6 7 8 9
| <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div> <div>我是一只可爱的小羊</div>
|
不同的标签混搭着用都是没问题的,我们也可以生成有顺序的数字:
1 2 3 4 5 6 7 8 9 10 11
| <div class="num1">1</div> <div class="num2">2</div> <div class="num3">3</div> <div class="num4">4</div> <div class="num5">5</div> <div class="num6">6</div> <div class="num7">7</div> <div class="num8">8</div> <div class="num9">9</div> <div class="num10">10</div>
|
快速生成css
对于属性和属性值的英文字母,我们可以使用每个单词首字母连拼后按Tab键或者回车可以直接获得这个属性值:
比如我们需要生成一个text-align: center;
,我们可以采用首字母:
1 2 3 4
| .num1 { text-align: center; }
|
其他的也是同样的道理:
1 2 3 4 5 6 7 8 9 10
| .num2 { width: 100px; height: 200px; text-indent: 2em; text-decoration: none; }
|
复合选择器
css中我们可以把选择器根据类型分为基础选择器和复合选择器,复合选择器是建立在基础选择器之上,对基础选择器进行组合而成的。
常用的复合选择器包括:后代选择器,子选择器,并集选择器,伪类选择器等。
后代选择器
如果这里存在有序列表和无序列表,我们需要单独给ol的li修改css:
1 2 3 4 5 6
| <ol> <li></li> </ol> <ul> <li></li> </ul>
|
这里我们就需要使用后代选择器:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <head> <style> ol li { color: red; } </style> </head>
<body> <ol> <li>红色</li> </ol> <ul> <li>黑色</li> </ul> </body>
|
注意事项:两个元素之间用空格隔开,元素1为父级,元素2为子级,这样写最终选择的是元素2。
元素2可以为儿子,可以为孙子,只要是元素1的后代即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <head> <style> ol li { color: red; } ol li a { color: green; } </style> </head>
<body> <ol> <li>红色</li> <li><a href="#">绿色</a></li> </ol> <ul> <li>黑色</li> <li><a href="#">不会变色</a></li> </ul> </body>
|
如果在多个相同的父子结构里我们需要选择其中一个,我们可以给父级加class:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <head> <style> .nav li a { color: red; } </style> </head>
<body> <ul> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> </ul> <ul class="nav"> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> <li><a href="#">我是红色</a></li> <li>我要变色</li> </ul> <ul> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> <li>我要变色</li> </ul> </body>
|
注意到这里如果我们需要选择子代的a标签,子代的子代还有a标签,我们再使用后代选择器就行不通了,它会把我们要的所有a标签都选中:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <head> <style> div a { color: red; } </style> </head>
<body> <div> <a href="#">我是红色</a> <p> <a href="#">我怎么也变红了</a> </p> </div> </body>
|
如果我们只想选子代的a,不需要其他代的a,我们这里就需要使用子选择器。
子选择器
子选择器只能选择作为某元素最近的一级子元素:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <head> <title>Document</title> <style> div>a { color: red; } </style> </head>
<body> <div> <a href="#">我是红色</a> <p> <a href="#">我没变色</a> </p> </div> </body>
|
元素1和元素2用大于号分隔开,元素2必须为子代。
并集选择器
并集选择器可以选择多组标签,同时为它们定义相同的样式,使用方法是用逗号分隔:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <head> <style> div, p { color: red; } </style> </head>
<body> <div>我是红色</div> <p>我是红色</p> <span>我是黑色</span> <ul> <li>我是黑色</li> <li>我是黑色</li> <li>我是黑色</li> </ul> </body>
|
和其他选择器共用也是ok的,任何其他类型的选择器都可以作为并集选择器的一部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <head> <style> div, p, .nav li a { color: red; } </style> </head>
<body> <div>我是红色</div> <p>我是红色</p> <span>我是黑色</span> <ul class="nav"> <li>我是黑色</li> <li><a href="#">我是红色</a></li> <li>我是黑色</li> </ul> </body>
|
伪类选择器
伪类选择器用于向某些选择器添加特殊的效果,比如给链接添加特殊效果,或选择第一个、第n个元素。
书写时用冒号表示。
链接伪类选择器
样式 |
说明 |
a:link |
选择所有未被访问的链接 |
a:visited |
选择所有已被访问的链接 |
a:hover |
选择鼠标指针位于其上的链接 |
a:active |
选择鼠标按下未弹起的链接 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <head> <style> a:link { color: black; } a:visited { color: yellow; } a:hover { color: skyblue; } a:active { color: green; } </style> </head>
<body> <a href="#">链接</a> </body>
|
这里一定要注意对于链接的伪类选择器按照lvha的顺序写:link在前,然后是visited,然后是hover,然后是active,否则不起作用。
开发时常用写法举例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <head> <style> a { color: black; text-decoration: none; } a:hover { color: skyblue; text-decoration: underline; } </style> </head>
<body> <a href="#">链接</a> </body>
|
focus伪类选择器
focus伪类选择器用于选取获得焦点的表单元素。
1 2 3 4 5 6 7 8 9 10 11 12
| <head> <style> input:focus { background-color: skyblue; } </style> </head>
<body> <input type="text"><input type="text"><input type="text"> </body>
|
CSS元素显示模式
网页的标签非常多,了解它们的特点可以更好地布局网页。
元素显示模式就是指元素以什么方式进行显示,比如div自己占据一行,一行放多个span。
HTML元素分为块元素和行内元素。
块元素
常见的块元素标签有h1~h6、p、div、ul、ol、li等,div为最典型的块元素。
特点:
自己独占一行,可以设计高度宽度、外边距和内边距。
默认宽度为父级宽度的100%(比如div的父级为body即为占据横向网页),为一个容器或者盒子,可以放行内或者块级元素。
文字类的元素不能再加入子级块元素,例如:p标签里面不能放div。
常见的文字类元素:p、h1~h6
行内元素
常见的行内元素:a、strong、em、i、del、s、ins、u、span等等,span为最典型的行内元素。
特点:
相邻行内元素在一行上,一行可以显示多个。
高宽直接设置是无效的,默认宽度为其内容本身的宽度。
行内元素内只能容纳文本或者其他行内元素。
注意链接里面不能再放链接,特殊情况下链接a里面可以放块级元素。
行内块元素
在行内元素中有几个特殊的标签,如img、input、td。它们同时有块元素和行内元素的特点,叫做行内块元素。
特点:
和相邻行内(行内块)元素在一行上,一行可以显示多个。
默认宽度为本身内容的宽度。高度,行高,内外边距都可以控制。
显示模式的转换
特殊情况下,我们需要对元素的模式进行转换,比如想要增加a元素的触发范围:
例如这里,我们只是给a设置宽高是无效的:
1 2 3 4 5 6 7 8 9 10 11 12 13
| <head> <style> a { width: 100px; height: 150px; background-color: pink; } </style> </head>
<body> <a href="#">链接</a> </body>
|
但是,如果这里我们添加一个新的属性display,使其拥有块元素的性质,我们就可以给它增加宽高背景之类的了,点击这个块即可实现超链接:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <head> <style> a { width: 100px; height: 150px; background-color: pink; display: block; } </style> </head>
<body> <a href="#">链接</a> </body>
|
如果我们想实现一行多个,可以转化为行内元素:display: inline;
转化为行内块元素:display: inline-block;
实例2:小米侧边栏
预览效果:
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| <!DOCTYPE html> <html lang="zh-CN">
<head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> a { width: 200px; height: 50px; line-height: 50px; background-color: rgb(70, 70, 70); display: block; text-indent: 2em; text-decoration: none; color: white; } a:hover { background-color: rgb(255, 136, 0); } </style> </head>
<body> <a href="#">手机 电话卡</a> <a href="#">电视 盒子</a> <a href="#">笔记本 平板</a> <a href="#">出行 穿戴</a> <a href="#">智能 路由器</a> <a href="#">健康 儿童</a> <a href="#">耳机 音响</a> </body>
</html>
|
字体垂直居中原理:
行高等于盒子高度,上下空隙把文字挤到居中位置。
CSS背景属性
背景颜色
属性:background-color
默认值:transparent(透明的)
后面可跟十六进制颜色码、RGB、预设颜色等等。
背景图片
属性:background-image
优点是便于控制位置。
默认值为none。
后跟url(图片地址,可为网图、绝对地址或者相对地址):
1 2 3
| div { background-image: url(xxxxxx); }
|
背景平铺
平铺是指用完全相同的图进行图片重复,填满盒子。在html中图片背景是默认平铺的。
属性:background-repeat
属性值:repeat、no-repeat、repeat-x、repeat-y
背景平铺在背景颜色图层之上,如果图片背景为透明,那么盒子背景色也是能显示的。
背景图片位置
属性:background-position
默认为位于左上角。
参数可以使用x坐标和y坐标、或者使用方位名词或者精确单位:
1 2 3 4
| div { background-position: center top; }
|
注意:两个值如果都为方位词那么前后顺序无关。
如果只指定一个方位名词,另一个省略,那么第二个值默认居中对齐。
对于精确到像素的位置设置,如果只指定一个数值,那么一定为x坐标,另一个默认为垂直居中。
如果为混合单位(像素+方位词),那么第一个指x坐标,第二个指y坐标。
背景固定
属性:background-attachment
这个属性可以设置背景图像是否固定或随着页面其余部分滚动。
属性值:scroll(滚动),fixed(固定)
复合属性
属性:background
简写时没有固定的顺序,约定俗成的顺序为:颜色,图片地址,平铺,滚动,位置。
背景色半透明
1 2
| background: rgba(0, 0, 0, 0.3);
|
a为alpha,可以修改透明度,取值在0和1之间,0为全透明,1为不透明。
CSS三大特性
CSS有三大特性:层叠性、继承性、优先级。
层叠性
层叠性主要解决样式冲突的问题,如果样式冲突,采取就近原则,哪个样式离结构近就执行哪个样式,后来者居上。
如果属性不冲突,那么不会被覆盖,都会执行。
1 2 3 4 5 6 7 8
| div { color: black; font-size: 18px; } div { color: red; }
|
原理就是代码从上往下解析,重复出现的就把之前已解析的覆盖掉了。
继承性
子标签会继承父标签的某些样式,如文本颜色和字号,在控制台样式中会显示:继承自xxx(父元素)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <head> <style> div { color: blue; font-size: 18px; } </style> </head>
<body> <div> 我是蓝色 <p>我也是蓝色</p> </div> </body>
|
行高的继承性
行高的继承取决于实际的字体大小:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <head> <style> body { color: blue; font: 18px/1.5; } div { font-size: 24px; } </style> </head>
<body> <div>我是蓝色</div> </body>
|
行高可以跟单位也可以不跟单位。
优先级
当相同的一个元素被多个选择器指定,那么就会产生优先级:
如果选择器类型相同,那么执行层叠性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| <head> <style> div { color: red; } .text { color: blue; } </style> </head>
<body> <div class="text">我是蓝色</div> </body>
|
选择器类型不同,那么按照选择器权重进行:
权重分级:
权重等级 |
选择器 |
最低 |
继承性或者 * |
第二 |
标签选择器 |
第三 |
类选择器 伪类选择器 |
第四 |
ID选择器 |
第五 |
行内style |
无穷大 |
!important |
下面是对比:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <head> <style> * { color: yellow; } div { color: red; } .text { color: blue; } #res { color: gray; } </style> </head>
<body> <div class="text" id="res" style="color: purple">我是紫色</div> </body>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <head> <style> * { color: yellow; } div { color: red !important; } .text { color: blue; } #res { color: gray; } </style> </head>
<body> <div class="text" id="res" style="color: purple">我是红色</div> </body>
|
注意:继承的权重为0。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <head> <style> #res { color: red; } p { color: green; } </style> </head>
<body> <div id="res"> <p>你以为我是红色,其实我是绿色</p> </div> </body>
|