一、CSS简介
1. 什么是CSS
CSS:Cascading Style Sheet 层叠样式表
是一组样式设置规则,用于控制页面的外观样式
2. CSS作用
- 页面外观美化
- 布局和定位
二、基本用法
1.CSS语法
<head>
<style type="text/css">
选择器{
属性名:属性值;
属性名:属性值;
}
</style>
</head>
- 选择器:要修饰的对象(东西)
- 属性名:修饰对象的哪个属性(样式)
- 属性值:属性的取值
2. CSS应用方式
也称为CSS引用方式,有三种方式:内部样式、行内样式、外部样式
2.1 内部样式
也称为内嵌样式,在页面头部通过style标签定义
对当前页面所有符合样式选择器的标签都起作用
2.2 行内样式
也称为嵌入样式,使用HTML标签的style属性定义
只对设置style属性的标签起作用
2.3 外部样式
使用单独的 css
文件定义,然后在页面头部中使用link标签引入外部样式表
<link rel="stylesheet" href="css样式文件的路径" type="text/css">
所有引入样式表文件的页面都起作用
步骤:
- 新建一个css目录,目录下建一个
.css
文件 - 在html文件的头部使用link标签引入外部样式表
.css
文件:
span{
color:green;
text-decoration: underline;
}
.html
文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--内部样式-->
<style>
p{
color:red;
font-size:50px;
}
</style>
<!--引用外部样式文件-->
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<p>welcome</p>
<!--行内样式-->
<div style="color: blue; font-weight: bold;">to</div>
<p>css</p>
<span>哈哈</span>
</body>
</html>
3. CSS注释
CSS的注释形式:/**内容**/
注意:千万不要在style标签中写html的注释,如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*正确注释*/
<!--错误注释-->
p{
color:red;
font-size:50px;
}
</style>
</body>
</html>
三、选择器
1. 基础选择器
1.1 标签选择器
也称为元素选择器,使用HTML标签作为选择器名称
以标签名作为样式应用依据
1.2 类选择器
使用自定义名称,以.
作为前缀,然后通过HTML标签的class属性调用类选择器
以标签的class属性值作为样式应用依据
注意:
-
调用时不能添加
.
号 -
同时调用多个类选择器时以空格隔开
-
类选择器名称不能以数字开头
1.3 ID选择器
使用自定义名称,以
#
作为前缀,然后通过HTML标签的id属性进行名称自动匹配 以标签的id属性值作为样式应用依据,一对一的关系
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*标签选择器*/
p{
color: red;
}
/*类选择器*/
.hello{
color: blue;
}
.world{
text-decoration: line-through;
}
/*ID选择器*/
#aaa{
background: #ccc;
}
</style>
</head>
<body>
<!--引用ID选择器-->
<p id="aaa">嘿嘿</p>
<div>哈哈</div>
<span>嘻嘻</span>
<p>吼吼</p>
<div class="hello">YY</div>
<!--同时调用多个类选择器-->
<ul>
<li class="hello world">Java开发</li>
</ul>
</body>
</html>
2. 复杂选择器
2.1 复合选择器
标签选择器和类选择器、标签选择器和ID选择器,一起使用
必须同时满足两个条件才能应用样式
2.2 组合选择器
也称为集体声明
将多个具有相同样式的选择器放在一起声明,使用逗号,
隔开
2.3 嵌套选择器
在某个选择器内再设置选择器,通过空格隔开
只有满足层次关系最里层的选择器所对应的标签才会应用样式
注:使用空格
时不区分父子还是后代,使用>
时必须是父子关系才行
2.4 伪类选择器
根据不同的状态显示不同的样式,一般多用于a标签,即超链接
四种状态:
:link 未访问的链接
:visited 已访问的链接
:hover 鼠标移动到链接上,即悬浮在链接上
:active 选定的链接,被激活
要注意四种状态的书写顺序: link——> visited——>hover——>active
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
/*复合选择器:标签选择器和类选择器*/
p.hello{
color: red;
}
/*复合选择器:标签选择器和ID选择器*/
div#world{
color: blue;
}
/*组合选择器,也称为集体声明*/
.hello{
text-decoration: underline;
}
.world{
text-decoration: line-through;
}
div.abc{
text-decoration: overline;
}
.hello,.world,div.abc{
font-size: 20px;
font-weight: bold;
background: #cccccc;
}
/*嵌套选择器*/
div span{
font-style: italic;
}
/*伪类选择器*/
/*只能按照这种顺序书写,不能随便换顺序*/
a:link{
font-size: 12px;
color: red;
text-decoration: none;
}
a:visited{
font-size: 20px;
color: yellow;
text-decoration: none;
}
a:hover{
font-size: 30px;
color: blue;
text-decoration: none;
}
a:active{
font-size: 40px;
color: green;
text-decoration: none;
}
</style>
</head>
<body>
<p class="hello">welcome</p>
<div id="world" class="abc">to</div>
<span class="hello">css</span>
<p>hello</p>
<div>
<span>嘿嘿</span>
</div>
<!--如果上面嵌套选择器写的是div>span,那只有父子关系可以应用,下面这种不能应用-->
<div>
<p>
<span>嘻嘻</span>
</p>
</div>
<a href="test02.html">打开test02页面</a>
</body>
</html>
3. 选择器优先级
3.1 优先级
行内样式 > ID选择器 > 类选择器 > 标签选择器
原因:首先加载标签选择器,再加载类选择器,然后加载ID选择器,最后加载行内样式
后加载的会覆盖先加载的同名样式
注:当样式不冲突时会全部加载,样式冲突时按选择器的优先级加载
3.2 内外部样式加载顺序
就近原则
原因:按照书写顺序依次加载,在同优先级的前提下,后加载的会覆盖先加载的同名样式,所以离的越近越优先
3.3 !important
可以使用!important
使某个样式属性具有最高的优先级
<style>
p{
color: red;
text-decoration: underline!important;
}
</style>
四、常用CSS属性
1. 字体属性
定义字体相关的样式
属性 | 含义 | 说明 |
---|---|---|
font-size | 大小、尺寸 | 所有CSS属性的默认值都为inherit(继承父容器的大小) |
font-weight | 粗细 | 取值:normal、bold(粗体) |
font-family | 字体 | 取值:黑体、楷体等 |
font-style | 样式 | 取值:normal、italic(斜体) |
2. 文本属性
属性 | 含义 | 解释 |
---|---|---|
color | 颜色 | 使用英文单词、16进制的RGB值,特定情况下可以缩写,如#FFFFFF > #FFF |
line-height | 行高 | 行内容的高度,也可以简单的理解为行之间的距离 |
text-align | 水平对齐方式 | 取值:left、center、right |
vertica-lalign | 垂直对齐方式 | 取值:top、middle、bottom,可用于图片和文字的对齐方式 |
textdecoration | 文本修饰 | 取值:underline、overline、linethrough、none |
3. 背景属性
属性 | 含义 | 解释 |
---|---|---|
background-color | 背景颜色 | |
background-image | 背景图片 | 必须使用url(路径) |
background-repeat | 背景图片的重复方式 | 取值:repeat(默认)、repeat-x、repeat-y、no-repeat |
backgroundposition | 背景图片的显示位置 | 取值:关键字(top、bottom、left、right、center)、坐标 |
background | 简写 | 一般顺序:颜色 图片 重复方式 显示位置 |
<style>
p{
background-color: #ccc;
background-image: url(image/qq.jpg);
background-repeat: no-repeat;
background-position: center center;
background-position: 150px 50px;
background: #ccc url(image/qq.jpg) no-repeat 150px 50px;
}
</style>
4. 列表属性
使用liststyle属性设置列表项前的标记
5. 浮动属性
通过float属性实现元素的浮动,取值:
- left 左浮动
- right 右浮动
- none 不浮动,默认值
6. 元素的显示和隐藏
通过display属性设置元素是否显示,以及是否独占一行
常用取值:
- none 不显示
- inline 将块级元素变为行级元素,不再独占一行
- block 将行级元素变为块级元素,独占一行
- inline-block 在inline的基础上允许设置宽和高
注:行级元素默认无法设置宽和高,可以为行级元素设置display:inline-block,然后就可以设置宽和高
五、盒子模型
1. 概念
盒子模型是网页布局的基础,将页面中所有的元素都看作成一个盒子,盒子都包含以下几个属性:
- width 宽度
- height 高度
- border 边框
- padding 内边距
- margin 外边距
2. 盒子属性
2.1 border
表示盒子的边框
分为四个方向:上top、右right、下bottom、左left
每个边都包含三种样式:颜色color、粗细width、样式style
border-style的取值:solid实线、dashed虚线、dotted点状线、double双线等
简写,三种方式:
-
按方向简写
border-top、border-right、border-bottom、border-left
书写顺序,border-方向 : width style color
-
按样式简写
border-color、border-width、border-style、border-radius圆角
书写顺序,border-样式 : top right bottom left
必须按顺时针方向书写,即:上、右、下、左的顺序,同时可以缩写
border-width : 2px ——> 四个边的宽度都为2px
border-width : 2px 4px
border-width : 2px 3px 4px
注: 如果省略, 则认为上下一样、 左右一样
-
终极简写
如果四个边都一样,border : width style color
2.2 padding
表示盒子的内边距,即内容与边框之间的距离
同样也分为四个方向,也可以简写(按顺时针方向、默认上下一样,左右一样)
2.3 margin
表示盒子的外边距,即盒子与盒子之间的距离
同样也分为四个方向,也可以简写(按顺时针方向、默认上下一样,左右一样)
3. 元素所占空间
页面中的元素实际所占空间:
- 宽=width+左右padding+左右border+左右margin
- 高=height+上下padding+上下border+上下margin
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
p{
width: 250px;
background: #cccccc;
}
.first{
border-top-width: 1px;
border-top-color: red;
border-top-style: solid;
/*简写*/
border-bottom: 4px dashed blue;
/*border-radius圆角,值为圆角的半径,举例:设置右下角*/
border-bottom-right-radius: 5px;
}
.second{
padding-left: 10px;
}
.third{
margin-top: 50px;
}
body{
border: 1px solid blue;
width: 260px;
}
</style>
</head>
<body>
<p class="first">welcome to css</p>
<p class="second">welcome to css</p>
<p class="third">welcome to css</p>
</body>
</html>
六、定位方式
1. 简介
通过position属性实现对元素的定位,有四种定位方式
常用取值:
取值 | 含义 | 解释 |
---|---|---|
static | 默认值 | 按照常规文档流进行显示 |
relative | 相对定位 | 相对于标签原来位置进行的定位 |
absolute | 绝对定位 | 相对于第一个非static定位的父标签的定位 |
fixed | 固定定位 | 相对于浏览器窗口进行定位 |
设置定位方式后,还需要设置定位属性(偏移量):top、bottom、left、right
注:z-index 优先级属性,默认值为0,当两个元素有重叠时,优先级高的元素覆盖优先级低的元素,z-index属性只有对非static的元素设置才生效
2. 相对定位
先设置元素的position属性为relative,然后再设置偏移量
3. 绝对定位
先设置父标签为非static定位,然后设置元素的position属性为absolute,最后再设置偏移量
注意事项:
- 一般来说都会设置父标签为非static定位
- 如果父标签不是非static定位,则会相对于浏览器窗口进行定位
- 设置元素为绝对定位后,元素会浮在页面上方
4. 固定定位
先设置元素的position属性为fixed,然后再设置偏移量
注意事项:
- 固定定位相当于没有找到非static定位的父标签的绝对定位
- 设置元素为固定定位后,元素会浮在页面上方
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#wrapper{
width: 800px;
border: 1px solid #ccc;
position: relative;
}
.d1,.d2,.d3{
width: 100px;
height: 100px;
}
.d1{
background: red;
position: relative; /*相对定位*/
top: 20px;
left: 50px;
z-index: 1;
}
.d2{
background: blue;
position: absolute;
top: 50px;
}
.d3{
background: green;
position: fixed;
top: 100px;
right: 50px;
}
</style>
</head>
<body>
<div id="wrapper">
<div class="d1">div1</div>
<div class="d2">div2</div>
<div class="d3">div3</div>
</div>
</body>
</html>