一、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、样式styleborder-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>