CSS3基础&选择符
CSS基础知识
- CSS是Cascading Style Sheet(层叠样式表)的缩写 是用于增强控制网页样式并允许将样式信息与网页内容分离的一种标记性语言
- 使用CSS样式可以有效地对页面进行布局,对页面字体,颜色,背景和其它效果实现精确描述。可以支持多种设备,如手机,PDA,打印机,电视机,游戏机等
- 目的:将表现与结构分离
CSS语法结构
- CSS语法由三部分构成:选择符、属性和值,每个属性有一个值,属性和值被冒号分开
<style type="text/css">
body { background-color:#cccccc;}
</style>
将CSS应用到网页中
- 将CSS应用到网页中有:3种方式 尽量使用外部样式表这种方式 目的是让我们的
html
结构与css
表现形式分开
1.行内样式表:内联样式表是指将CSS样式写在HTML标签中
<body style="background-color:#ccccc;"></body>
<h1 style="font-size:12px; color:#ff0000;">这是一个标题</h1>
2.内部样式表:内部样式表作为页面中的一个单独部分
<head>
<style type="text/css">
body {
background-color:#cccccc;
}
</style>
</head>
3.外部样式表:外部样式表是CSS应用中应用最多的形式,它将CSS样式代码单独放在一个外部文件中, 再由网页进行调用
style.css
body { background-color:#cccccc;}
<head>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
CSS选择符
- 元素选择符
- 关系选择符
- 伪类选择符
- 属性选择符
- 伪对象选择符
- 元素选择符
名称 | 描述 |
---|---|
通配选择符 | * |
类型选择符 | body |
群组选择符 | body ,p ,span |
ID选择符 | #id |
CLASS选择符 | .class |
- 通配选择符
* 号表示所有的元素
*{ color:blue; margin:0; padding:0;}
- 类型选择符
类型选择符就是将html标签作为选择符的一种
body {} h1 {} p {}
- 群组选择符
除了可以对单个标签进行样式指定外,还可以对组合标签进行相同的样式定义
使用逗号对选择符进行分隔。对页面中需要使用相同样式的地方,只需写一次样式
h1,h2, h3, p { font-size:12px; font-family:arial;}
- ID选择符
id 及 class 均是css提供由用户给定义标签名称的选择符
id 选择器可以为标有特定 id 的 HTML 元素指定特定的样式
id 选择器以 "#" 来定义
<style>
#p1 { font-size:12px; font-weight:bold;}
</style>
<p id="p1"> 这是一个段落 </p>
- CLASS选择符
在网页中,每个id名称中只能使用一次,不得重复。
与id 不同,class允许重复使用
比如页面中的多个元素,都可以使用同一个样式定义.
<style>
.p1 { font-size:12px; font-weight:bold;}
</style>
<p class="p1"> 这是一个段落 </p>
- 关系选择符
名称 | 描述 |
---|---|
包含选择符(所有被E元素包含的F元素) | E F |
子选择符(所有作为E元素的子元素F) | E>F |
相邻选择符(紧贴在E元素之后F元素) | E+F |
兄弟选择符(E元素所有兄弟元素F) | E~F |
<style>
/* 包含选择符 */
.son1 a { color:red;}
/* 子选择符 */
.son1>a { color:red;}
/* 相邻选择符 */
.son1+div { color:green;}
/* 兄弟选择符*/
.son1~div { color:yellow;}
</style>
<div class="father">
<div class="son1">
<a href="#">son1</a>
<div class="grandson">
<a href="#">grandson</a>
</div>
</div>
<div class="son2">son2</div>
<div class="son3">son3</div>
</div>
- 伪类选择符
名称 | 版本 | 描述 |
---|---|---|
E:link | CSS1 | 链接未被访问前的样式 |
E:visited | CSS1 | 链接已被访问过的样式 |
E:hover | CSS1/2 | 鼠标在链接上的样式 |
E:active | CSS1/2 | 鼠标点击激活状态的样式(点击瞬间) |
E:focus | CSS1/2 | 元素在产生输入焦点时的样式 |
E:first-child | CSS2 | 匹配父元素的第一个子元素 |
E:last-child | CSS3 | 匹配父元素的最后一个子元素 |
E:nth-child(n) | CSS3 | 匹配父元素的第n个子元素 |
E:nth-last-child(n) | CSS3 | 匹配父元素的倒数第n个子元素 |
E:nth-child(odd) | CSS3 | 匹配奇数元素 |
E:nth-child(even) | CSS3 | 匹配偶数元素 |
E:checked | CSS3 | 匹配处于选中状态的元素(用于type为radio与checkbox) |
/* link 未访问的链接 */
a:link {color: #FF0000; text-decoration: none}
/* visited 已访问的链接 */
a:visited {color: #00FF00; text-decoration: none}
/* hover 鼠标在链接上 */
a:hover {color: #FF00FF; text-decoration: underline}
/* active 激活链接 */
a:active {color: #0000FF; text-decoration: underline}
/* focus 元素在产生输入焦点时的样式 */
input[type="text"]:focus {background: #f6f6f6;}
/* first-child 匹配父元素的第一个子元素 */
li:first-child {color: #f00;}
/* last-child 匹配父元素的最后一个子元素 */
li:last-child {color: #f00;}
/* 奇数 */
ul li:nth-child(odd){background-color:#ccc;}
ul li:nth-child(2n+1){border-left:2px solid red;}
/* 偶数 */
ul li:nth-child(even){background-color:#0F7CCF;}
ul li:nth-child(2n){border-left:2px solid black;}
/* 3的倍数 */
ul li:nth-child(3n){color:red;font-weight:bold;}
<div class="test">
<div>我是一个div元素</div>
<p>我是一个p元素</p>
<p>我是一个p元素</p>
</div>
/* checked 匹配用户界面上处于选中状态的元素(用于type为radio与checkbox) */
input[name="love[]"]:checked+label{color:blue;background-color:red;}
<input type="checkbox" name="love[]" id="book" value="book">
<label for="book">书</label>
<br>
<input type="checkbox" name="love[]" id="music" value="music">
<label for="music">音乐</label>
<br>
<input type="checkbox" name="love[]" id="movie" value="movie">
<label for=“movie”>电影</label>
<br>
- 属性选择符
选择符 | 版本 | 描述 |
---|---|---|
E[att] |
CSS2 | 具有att属性的元素 |
E[att="val" ] |
CSS2 | 具有att属性且属性值等于val的元素 |
<style>
p[class]{color:green;}
p[class="qq"]{color:red;}
</style>
<p class="a">测试数据1</p>
<p class="qq">测试数据2</p>
- 伪对象选择符
选择符 | 版本 | 描述 |
---|---|---|
E:before / E::before | CSS2/3 | 设置在对象前追加内容。用来和content属性一起使用 |
E:after / E::after | CSS2/3 | 设置在对象后追加内容。用来和content属性一起使用 |
before after
<style>
.t2::before{content:'123';}
.t2::after{content:'123';}
</style>
<p class="t2">test</p>
选择符优先权
!important > 行内样式 >ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
CSS样式的层级越深执行的权限就越大