CSS简介
CSS是用来做什么的呢?我们知道HTML用来展现页面的内容,那么CSS就用来负责页面的美化。
CSS全称是Cascading Style Sheets,即层叠样式表,它规定了网页的样式和布局,将多个样式层叠地统一储存在样式表(外部的.css文件)中,再根据需要调用,这样可以极大提高工作效率。
CSS语法
CSS规则由两个主要部分构成:选择器、一条或多条声明
选择器 {
属性名: 属性值;
属性名: 属性值;
}
我们来看一条简单的css语句
h4{
color: red;
font-size: 12px;
}
- 选择器:指需要改变的HTML元素,在这个例子中就是
h4
,也就是会改变所有的h4标签的样式 - 声明:每条声明由
属性: 值
构成,在这个例子中有两条声明,分别规定了颜色和字体尺寸
选择器
用来选择要设置样式的元素,CSS常用的选择器有三种,分别是元素选择器,id选择器和类选择器。
元素(标签)选择器
为某个标签的所有元素设置先沟通的样式,比如上面例子中的h4元素选择器。但是元素选择器容易重名造成污染。
id选择器
为标有特定id的HTML元素设置特定的样式,id选择器的优先级最高。在和HTML中以id属性表示,在CSS中用#
来定义,复合id名中间用下划线_
,比如
#idSelector{
color: blue;
}
<p id="idSelector">ID选择器</p>
要注意的是,id属性不可以数字开头,且不可有同名id,只能在一个元素中使用。
类选择器
是最常用的选择器,可以在多个元素中使用。在HTML中用class属性表示,在CSS中用.
来定义,复合类名中间用中横线-
。如果使用多个类选择器,可以使用空格分开。比如
.classSelector{
font-size: 12px;
}
.purple{
color: purple;
}
<p class="classSelector purple">类选择器</p>
通配符选择器
适用于页面中所有的元素,用*
定义,不常用。
<style type="text/css">
*{
margin: 0;
}
</style>
属性选择器
适用于所有带有该属性的标签,用[属性]
定义,常用在表单中。
<head>
<style type="text/css">
[type="text"]{
width: 200px;
}
[type="password"]{
width: 300px;
}
</style>
</head>
<body>
<input type="text" />
<input type="password" />
</body>
优先级
!important > id > 类 | 属性 > 标签 > 通配符 当class选择器和属性选择器同时存在时,哪个在后面用哪个
层级关系/派生/越级选择器
样式表中也有层级关系,父级中的子级可区别于其他同类名的其他元素,比如:
.child{
color: brown;
}
.parent{
.child{
color: grey;
}
}
<!-- 层级关系 -->
<div class="parent">
<div class="child">父级中的子级可区别于同类名的其他元素</div>
</div>
<div class="child">同类名的其他元素</div>
当然,不止类和类可以进行嵌套,标签和标签、类和标签、类和id、标签和id都可以进行嵌套,但id和id不可以进行嵌套。浏览器在进行匹配的时候,是从下至上从右至左匹配的。
插入样式表
我们定义好样式表后,应该如何使用它呢?浏览器在读到样式表时,会将样式表插入html文档并格式化。插入样式表的方法有三种:外部样式表,内部样式表和内联样式表。
外部样式表 External style sheet
新建一个css文件夹,在里面添加css文件。在html文档头部的head
标签中插入link
标签来链接到css样式表,这样样式表就可以应用在整个页面中,适用许多网页都要使用样式表的情况,也是我们主要使用的情况。
<head>
<title>CSS</title>
<link rel="stylesheet" type="text/css" href="css/mystyle.css">
</head>
内部样式表 Internal style sheet
当我们需要对单个文档应用特殊的样式时,就应该使用内部样式表。在head
标签的最底下中添加style
标签,里面添加要使用的样式:
<head>
<meta charset="UTF-8">
<title>CSS</title>
<style type="text/css">
div{
width: 100px;
height: 100px;
background-color: #000;
}
</style>
</head>
内联样式表 Inline style
也称为内部样式表,如果样式只需要在一个元素中使用一次,将会使用内联样式,因为会把样式和内容混杂在一起,所以不能体现样式表的很多优势。在需要使用样式的标签中使用style
属性:
<p style="color: sienna; margin-left: 20px">这是一个段落。</p>
混合使用
如果同时拥有内部样式和外部样式,则颜色属性继承外部样式表,文字排列和字体尺寸继承内部样式表。但是如果外部样式放在内部样式之后,则外部样式将覆盖内部样式。总的优先级排列如下:内联样式 > 内部样式 > 外部样式 > 浏览器默认样式
CSS权重
CSS中,不同的元素有不同的权重,是256进制的,下面是表格:
元素 | 权重 |
---|---|
* | 0 |
标签,伪元素 | 1 |
class,属性,伪类 | 10 |
id | 100 |
内联样式 | 1000 |
!important | 正无穷 |
如果遇到一段文字属于多个标签、类、id揉在一起不知道选哪种样式,就可以进行计算来判断。
练习
现在我们已经掌握了基本的匹配规则了,来思考一下如何让实现下面的要求吧!
我们想得到四个盒子,前两个小盒子的尺寸是100px,颜色分别是绿色和蓝色;后两个大盒子的尺寸是200px,颜色分别是紫色和红色
<head>
<style type="text/css">
.box{
width: 100px;
height: 100px;
}
.big-box{
width: 200px;
height: 200px;
}
.box.box1{
background-color: green;
}
.box.box2{
background-color: blue;
}
.big-box.box1{
background-color: purple;
}
.big-box.box2{
background-color: red;
}
</style>
</head>
<body>
<div class="box box1">box box1</div>
<div class="box box2">box box2</div>
<div class="big-box box1">big-box box1</div>
<div class="big-box box2">big-box box2</div>
</body>
实现一个文本样式提示类
所有的文本都是粗体
1、 success 成功的提示 green
2、 warning 警告的提示 orange
3、 danger 失败的提示 red
<head>
<style type="text/css">
.tip{
font-weight: bold;
}
.tip.tip-success{
color: green;
}
.tip.tip-warning{
color: orange;
}
.tip.tip-danger{
color:red;
}
</style>
</head>
<body>
<p class="tip tip-success">success 成功的提示</p>
<p class="tip tip-warning">warning 警告的提示</p>
<p class="tip tip-danger">danger 失败的提示</p>
</body>