css是对网页进行的一种渲染
1.内嵌式优先级最高
<p style='color:red'>wkx</p>
2.嵌入式
<style>
css的代码
</style>
3.外部引用
<link rel="stylesheet" href="css代码链接">
内联式:少用
维护难,重复多
不会产生额外的请求
嵌入式:
代码复用不方便,适合单页面引用
不会产生额外的请求
外部式:
方便维护
可以重复使用
会产生额外的请求(技术的更新不影响)
优先级:
与先后顺序有关
内联式 > 嵌入式 > 外部式
嵌入式 > 外部式 link 是写在style 上面还是下面
<link rel="stylesheet" href="index.css">
<style type="text/css">
p{
color: red;
}
</style>
那么 style 就会覆盖 link 标签的样式
如果 link 在下面,就会覆盖style的样式
css的选择器
签基本选择器
根据标签名字进行的选择
可以控制全部的选中的标签
1.标签选择器
div {
css代码
}
<div>内容</div> 标签名
2.id选择器
#i1 {
css代码
}
<div id="i1">内容</div> 标签内部的id值
3.class选择器
.c1{
css代码
}
<div class="c1">内容</div>
4.通配符选择器
*代表通配符,整个页面的全部标签
*{
css代码
}
<div>内容</div>
....
....
类选择器与id选择器
<span id='span'></span>
<div class='active'></div>
#span{ # id选择器
color: blue;
}
选择网站中独有的特性的标签 id 就像身份证号一样,全网页只能出现一个独特的存在
.active{ # 类选择器
color: gray;
}
组合选择器
后代和子代选择器
针对多层嵌套标签进行选择
1.后代选择器
<span id='span'></span>
<div class='active'>
<div>
111
</div>
</div>
.active div{
// 当前active 标签下的div全部都会赋予当前样式
}
2.子代选择器(会更加准确)
<div class="c1">
<div class="c2">
</div>
.c1 > .c2{ // 找到c1父级的c2子级进行选择
css代码
}
与或选择器
1.与选择器
div.c1{ 当两个class都是c1,使用与选择器指定c1是什么
css代码
}
<div class="c1"> item1</div>
<p class="c1">item2</p>
<div> item3</div>
2.或选择器
div.c1,#i1{ 根据条件可以选择class 和id 选中标签
css代码
}
<div class="c1" > item1</div>
<p class="c1" id="i1">item2</p>
<div> item3</div>
兄弟选择器
1.毗邻兄弟选择器
.c2+.c3{ 根据条件找到标签的下一个兄弟发生变化 c3变化
css代码
}
<div class="c1"> item1 </div>
<div class="c2"> item2 </div>
<div class="c3"> item3 </div>
<div class="c4"> item4 </div>
<div class="c5"> item5 </div>
2.普通兄弟选择器
根据条件,除了选中的标签的下面兄弟发生变化 c2不发生变化 一下的发生变化
.c2 ~ .c5{
css代码
}
<div class="c1"> item1 </div>
<div class="c2"> item2 </div>
<div class="c3"> item3 </div>
<div class="c4"> item4 </div>
<div class="c5"> item5 </div>
组合选择器交际选择器
1.组合选择器
<span>测试</span>
<span>测试吧</span>
<h3>6666</h3>
span,h3{ // 标签名称使用逗号隔开,是标签使用同一个样式
color: blue;
}
2.交集选择器
就是将两个样式重合的部分
a{
color: blue;
}
p{
color: blue;
}
可以写成
ap{
color: blue;
}
属性选择器
根据标签的属性进行选择
1.属性选择器
[type]{ 根据标签的所带属性进行选择
css代码
}
<input type="text">
<input type="password">
2.带名属性选择器
input[type="text"]{ 根据标签的所带属性和标签的名字进行选择(更准确)
css代码
}
<input type="text">
<input type="password">
3.模糊匹配选择器(和正则re差不多)
^= 以什么开头查询
$= 以什么形式结尾
*= 包含全部的值
[href$=".png"]{ 以.png结尾全部选中
css代码
}
<a href="1.png">click1</a>
<a href="2.png">click2</a>
伪类选择器
设置鼠标在点击,悬浮,进入的标签颜色状态
1.设置标签本身的颜色
a:link{
color: red;
}
2.设置访问标签后的颜色
a:visited{
color: red;
}
3.设置鼠标悬浮时标签的颜色
a:hover{
color: red;
}
4.设置鼠标点击时标签的颜色
a:active{
color: red;
}
<a href="">文本</a>
添加标签块级标签和内联标签
1.添加一个块级标签
#i1:after{
content: "这是一个伪类构造的块级标签";
display: block;
}
display设置block时就是块级标签
content: 设置标签的文本
2.添加一个内联标签
#i1:before{
content: "这是一个伪类构造的内联标签";
display: inline;
}
display设置inline时就是内联标签
content: 设置标签的文本
<div id="i1">aiv标签</div>
样式继承与选择器优先级
指当父标签下面的子标签没有设置颜色时,父标签设置颜色,子标签也会继承父标签设置的颜色。
不是全部的都会继承,只有一部分继承。
选择器的优先级
!important > 行内样式>ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
1 内联样式表的权值最高 style="" 1000;
2 统计选择符中的ID属性个数。 #id 100
3 统计选择符中的CLASS属性个数。 .class 10
4 统计选择符中的HTML标签名个数。 标签名
注意事项:
1、有!important声明的规则高于一切。
2、如果!important声明冲突,则比较优先权。
3、如果优先权一样,则按照在源码中出现的顺序决定,后来者居上。
4、由继承而得到的样式没有specificity的计算,它低于一切其它规则(比如全局选择符*定义的规则)。
5、用数字表示只是说明思想,一万个class也不如一个id权值高
文本操作
1.设置字体倾斜
font-style:italic;
font-style:oblique;
2.设置文字的粗细
font-weight: bolder; 100-900 设置数值
3.设置字体大小em为单位1em=16像素px
px 是页面的绝对单位
em 是页面的相对单位 如果字体为10px 那么 1em=10px默认字体大小16px
font-size: 1em;
4.设置字体族(字体样式)确认电脑中是否安装了这个字体
font-family:sans-serif ;
5.设置字体的颜色
color:颜色;
color:rgb(255,255,255) # rgb设置
rgba(255,255,255,0.4) # 将透明程度调整0.4 可以调整透明程度
color:#fff; # 16进制设置
6.文本在区域内居中
text-align: center 居中对齐
text-align: right; 右对齐
text-align: justify; 两端对齐
text-align: left; 左对齐
7.文本属性上下线
文本默认 text-decoration: none;
text-decoration: line-through; 对字体设置中间线
text-decoration: overline; 对字体设置上划线
text-decoration: underline; 对字体设置下划线
a标签一般会将下划线进行设置取消
text-decoration: none; 使用这个属性可以实现取消
8.文本的缩进
假如 文本为16px 那么1em = 16px
text-indent: 2em;
9.文本的行高(文本自动垂直居中)
无论设置多少的行高,文本永远在垂直居中的位置
字体的大小一定要小于行高,不然就会溢出
line-height: 60px; 设置行高60px、
10.文本字间距
letter-spacing: 5px; 只对字符和中文有效果 h间距e间距l间距l间距o
word-spacing: 100px; 设置文字距离,对英文单字的距离 hello 间距 word
清除某些html元素的默认样式
1.body 标签默认是存在一个外边距样式
默认margin:8px; 的样式
margin: 0; 将8px清楚为0
2.p 标签默认存在外边距样式
margin:16px;
margin: 0; 将16px清楚为0
3.ul ol dl 都是存在默认样式
margin:0;
padding:0;
list-style:none; # 清楚默认样式的.
4.input默认样式 自带边框样式与外线样式
border:none;
outline:none;
5.a标签去除下划线样式
text-decoration:none;
标签背景设置
.c1{
background-image: url(图片路径);
background-repeat:图片背景参数;
background-position:图片背景的起始位置
}
<div class="c1">文本</div>
background-repeat属性参数
repeat-x 背景图像将在水平方向重复。
repeat-y 背景图像将在垂直方向重复。
no-repeat 背景图像将仅显示一次。取消默认填充
background-position属性设置
x%
y%
默认参数0,0
center center 居中设置
background-size 属性
length
如果只设置一个值,则第二个值会被设置为 "auto"。
20px 30px 第一个值设置宽度,第二个值设置高度
percentage
以父元素的百分比来设置背景图像的宽度和高度。
第一个值设置宽度,第二个值设置高度。
如果只设置一个值,则第二个值会被设置为 "auto"。
contain
把背景图像扩展至足够大,以使背景图像完全覆盖背景区域。
背景图像的某些部分也许无法显示在背景定位区域中。
cover
把图像图像扩展至最大尺寸,以使其宽度和高度完全适应内容区域。
body{
height: 100%;
width: 100%;
background-image:url('./R\ -\ 副本.jfif') ;
background-repeat:no-repeat;
background-size:cover;
}
补充属性
列表(默认格式取消)
ul {
list-style-type: none; 设置将列表的默认格式取消
}
<ul>
<li>内容</li>
</ul>
设置属性设置一个元素的垂直对齐方式
img{
vertical-align: 修改进行对齐底部;
}
<img src="" alt="" class="c1">
标签悬浮小手
cursor: pointer; 文本标签在鼠标悬浮时是一条杠 使用这个属性可以变为小手与a标签相似
display属性
修改标签的属性
文本标签
h1-h6
p
strong
em
a
span
img
排版标签
br/hr
ul/ol/dl
li
div
input
table
select
form
option
块级元素
div ul ol p h table form
特点
1.独占一行
2.可以设置宽高,如果不设置宽度那么就是父级元素的100%
行内元素
a span em strong label
特点
1.在一行内显示
2.不能设置宽高,默认的宽高为文本内容占据的宽高(文本就是撑起标签的宽高)
行内块
input img
特点 既有行内元素也有块级元素的特性
1.在一行内显示
2.可以设置宽高
可以进行标签的属性转换
display中对块/行/行内块的对应竖向
控制元素的显示特性
display:block; # 显示块级元素
display:inline; # 显示行内元素
display:inline-block; # 显示行内块元素
display: none; # 隐藏当前标签(设置元素的隐藏)
使用的最多的 是行内转为行内块
盒模型
盒子模型是什么:
css model 属于用来设计和布局时使用的
所有的html元素可以看做一个盒子
他包括 外边距 边框 内填充 和实际内容
实际内容: 文本 图片 或者其他标签
例如:
将月饼盒 与 月饼的距离 : 内填充 padding
月饼盒1 与 月饼盒2的距离 : 外边距 margin
月饼盒外面的一圈 : 边框 border
块级元素都具备盒子模型的特征
属性
1.padding : 内边距 盒子边框到内容的的距离
作用:设置盒子与内容之间的距离
padding: 上下左右 4个方向
padding-bottom:下;
padding-top:上;
padding-left:左;
padding-right:右;
例如:
内边距的 50px 上下左右 实际300px * 300px
height:200px
width:200px
padding: 50px;
如果还是想要200*200的盒子那么就需要进行计算,真正的内容设置为100*100
height:100px
width:100px
padding: 50px;
2.border: 盒子的边框
border: none; /*清楚标签的默认边框*/
outline: none; /*清除外线默认样式*/
边框3要素:粗细(width) 样式(style) 颜色(color)
border-width:10px ;
border-style: solid ; solid实线 dotted点线 double双线 deshed虚线
border-color: red;
例如:
边框宽度3px 实线 颜色为green
border: 3px solid green;
3.margin: 盒子与盒子之间的外边距
margin-right: 10px; # 盒子外边距左 水平方向
margin-left: 10px; # 盒子外边距右 水平方向
margin-top: 10px; # 盒子上方10px 垂直方向
margin-bottom: 10px; # 盒子外边距下方10px 垂直方向
在垂直方向上 会出现外边距合并的现象,小的会被大的合并 外边距塌陷
尽量只设置一个方向的距离,防止外边距塌陷
注意:设置height 与 width 宽高是内容的宽高,而不是盒子模型的宽高
可以使用padding 来填充行内元素 只要填充的高度 = 设置的行高就可以
盒子剧中
*{
padding: 0;
margin: 0;
}
.class{
width: 100%;
height: 40px;
background-color: black;
}
.content{
width: 1200px;
height: 100%;
background-color: antiquewhite;
/* 只显示左右居中,上下不显示 */
margin: 0 auto;
}
</style>
</head>
<body>
<div class="class">
<div class="content"></div>
</div>
</body>
</html>
浮动属性
介绍
1.正常文档流 从上到下,用左到右逐一加载
块级元素,随着浏览器读取文档的顺序,自上而下垂直分布,一行一个形式
行内元素,晦涩者浏览器文档的顺序,从左往右水平分布,一行多个形式占据页面的位置,行内元素满一行才会
接着排列
2.浮动文档流
浮动元素的特性
1. 任何申明为float 的元素都会自动被设置为一个行内块状元素,具有行内块状元素的特性。
2. 假如某个元素A是浮动的,如果A元素上一个元素也是浮动的,那么A元素会跟随在上一个元素的后边(如果一行放不下这两个元素,那么A元素会被挤到下一行);如果A元素上一个元素是标准流中的元素,那么A的相对垂直位置不会改变,也就是说A的顶部总是和上一个元素的底部对齐。
3. 在标准浏览器中如果浮动元素a脱离了文档流,那么排在浮动元素a后的元素将会往回排列占据浮动元素a本来所处的位置,使页面布局产生变化。
4. 如果水平方向上没有足够的空间容纳浮动元素,则转向下一行。
5. 字围效果:文字内容会围绕在浮动元素周围。
6. 浮动元素只能浮动至左侧或者右侧。
7. 浮动元素只能影响排在其后面元素的布局,却无法影响出现在浮动元素之前的元素。
css提供的浮动特性float属性
浮动就是漂浮的意思,当设置浮动是就漂浮在上空。
假设有三个元素ABC
1.当A未设置浮动,B设置浮动,C未设置浮动。
呈现的效果就是A第一行,C在第二行,B在C上面漂浮进行覆盖
2.当A设置浮动,B未设置浮动,C设置浮动。
A在第一行浮动,B在第一行,A覆盖B,B占据了第一行。C在第二行浮动
格式
浮动的属性:
float:none; 不浮动 默认情况下
left 左浮动
right 右浮动
inherit 继承父元素的浮动效果
实现多列的排版布局
字围
float浮动的字围效果
在设置浮动是,不会对文本进行覆盖(图片浮动,文字不会被覆盖,会被围到,)
环绕图片显示
只需要对图片进行设置浮动,那么文字就会围绕着图片
因为当浮动时,会出现盒子收缩的现象
img{
float:left;
}
.div{
height: 500px;
width: 500px;
}
<div class="div">
<img> 图片
<p>文字p>
</div>
浮动元素现象
正常网页属于流式网页,从左往右,从上往下 被称为标准文档流
当盒子设置了float 浮动时,那么这个盒子就脱离了标准的文档流。
浮动的现象:
1.脱离标准的文档流
2.浮动元素的互相贴靠
3.浮动的盒子有收缩现象
要浮动就一起浮动,要是不浮动那么就浮动
浮动具有破坏性:父级塌陷的情况
父级元素内的子元素浮动,子元素无法撑起父级元素
浮动脱离了标准文档流,浮动的元素会飘在文档流之上
父级塌陷
float浮动的父级塌陷
1.在设置父级是没有设置宽和高,
2.使用子级的宽和高撑起来了父级的高度
3.当子级使用float浮动特性是,子级浮在空中,父恢复原先的状态,没有高度和长度
4.当其他父设定内容是,就会和上一层父贴合,浮空的子级覆盖其他父的高宽
塌陷的解决方式
1.给父盒子设置固定高度
缺点:不灵活,后期不好维护
应用:网页中的固定高度区域,比如固定的导航栏
2.内墙法
在浮动的div下设置一个div 设置属性
clear:both
<div style='float:left'></div>
<div style="clear:both"></div>
规则就是在最后一个浮动元素后面加上一个空的块级元素,并且设置该属性clear:both
缺点:结构冗余
3.伪元素(选择器)清除法
标签/类/id::after 是一个伪元素:主要作用创建一个伪元素,作为选中的元素内的最后一个子元素
主要内部的属性就是一个content:'对应创建的文本内容'
父类标签::after{
结合内墙法
content: ''; # 设置一个元素空的
display: block; # 块级标签
clear: both; # 设置clear 属性清除浮动,将设置浮动的元素当做没有设置浮动元素来看待
}
.div::after{
content: '';
display: block;
clear: both;
}
<div class='div'>
<div style='float:left'></div>
</div>
4.overflow:
overflow: visible; 默认属性 超出的部分进行可见
overflow: hidden; 超出部分隐藏
overflow: scroll; 超出的部分 用滚动条进行显示
overflow: auto; 超出部分由浏览器进行决定
overflow: inherit; 继承父级的overflow
在存在浮动的的父标签属性中 设置overflow: hidden;形成bfc
<div class="div" style="overflow: hidden">
<div class="div1" style='float: left;'></div>
</div>
清除塌陷的最好方式:给浮动元素的父标签设置高度
解决父级塌陷的代码实例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
.top_bar{
border: 1px solid red;
/*方式1的属性清除浮动,给父设置相同的高度*/
/*height: 200px;*/
/*方式4 overflow
存在一个规则:计算bfc(块级盒子)的高度时,浮动的元素也会计算在内
形成bfc条件:除了overflow:visitable的属性 其他的都会形成bfc区域
*/
overflow: hidden;
}
.child1 {
background-color: #747070;
float:left;
height: 200px;
width: 200px;
}
.child2 {
/*width: 300px;*/
background-color: red;
float:right;
height: 200px;
width: 200px;
}
.her{
height: 40px;
width: 1800px;
background-color: #111515;
}
.clear{
/*方式2的属性*/
/*clear: both;*/
}
/*.top_bar::after{*/
/* !*方式3 设置伪元素,结合内墙法清除浮动效果*!*/
/* content: '';*/
/* display: block;*/
/* clear: both;*/
/* overflow: inherit;*/
/*}*/
</style>
<body>
<div class="top_bar">
<div class="child1">左盒子</div>
<div class="child2">右盒子</div>
<!--方式2 内墙法-->
<!-- <div class="clear"></div>-->
</div>
<div class="her">
</div>
</body>
</html>
清除浮动
清除悬浮属性
设置的float的属性,只会影响自己块状元素,不会影响其他块状元素
clear: left;左边不能有浮动元素
clear: right;右边不能有浮动元素
clear: both; 两边都不能有浮动元素
position定位
position属性(重要)
1. 相对定位
参数 relative,position: relative;
相对定位,在正常的的文档流中,可以使用正常的left、right、top、bottom 进行调整
相对定位:
按照自己的位置进行偏移,下面的元素不会进行补位(只会空出来)
2.绝对定位
参数 absolute,position: absolute;
绝对定位,脱离正常文档流,可以使用正常的left、right、top、bottom 进行调整,只能根据最近的父级模块 进行绝对的定位调整
父级相对定位,子级绝对定位,两个模块进行覆盖
绝对定位:
它会按照自己的父级定位进行移动,如果父级没有定位,那么他就会按照body进行移动,并且,下面的元素块会进行补(占据原先它的位置)
3.固定定位
参数 fixed,position: fixed;
完全脱离文档流,参照物窗口
固定定位与绝对定位有点相似,但是固定定位是使用left、right、top、bottom属性相对于整个浏览器的窗口进行定位,而不再相对于某个HTML页面元素了,所以当元素使用了固定定位以后,就算页面的滚动条滚动了,固定定位的元素也不会变化位置。也就是说固定定位是相对于窗口的定位,不受文档流的影响了。
固定定位:
按照窗口进行定位,根据上下左右设置与窗口的距离.(固定不动)
相对定位
设置了position:relative
可以使用top left right bottom 对盒子进行移动
简单微调元素的位置
1.不脱离标准文档流,可以调整元素
2.移动的参考点,是当前盒子原来的位置进行参考进行移动(自己原来的位置)
重点:移动的位置按照原位置最为参照 进行top left...
案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
div {
width: 200px;
height: 200px;
}
.x1{
background-color: #747070;
position: relative;
left: 100px;
bottom:100px;
}
.x2{
background-color: red;
}
.x3{
background-color: blue;
}
</style>
<body>
<div class="x1">1</div>
<div class="x2">2</div>
<div class="x3">3</div>
</body>
</html>
绝对定位
position:absolute
可以使用top left right bottom 对盒子进行移动
特定:
1.脱离了标准的文档流,不在页面上占位置,与float类似,没有文本环绕的效果
2.存在压盖现象,层级提高,覆盖其他盒子
参考点:
单独给盒子设置绝对定位,会根据跟body元素为参考点
以父盒子位置为参考点
相对定位于最近的static祖先元素定位,如果没有非static祖先元素,那么以跟页面元素左上角进行定位
按照子绝对定位,父相对定位(不脱离文档流),让子元素根据父元素进行调整
重点:
1.脱离标准文档流 与浮动相似
2.使用top left的标准按照 当前绝对定位的父盒子作为标准(如果没有父盒子就会以body作为top0移动)
子绝对 父相对 可以实现盒子的剧中垂直显示
子绝对 父相对 案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
form {
width: 500px;
height: 50px;
/*父相对定位*/
position: relative;
background-color: #111515;
}
input{
height: 100%;
width: 100%;
}
div .wb{
/*子绝对定位*/
position: absolute;
top: 16px;
right: 45px;
}
div .wb .span1{
background-color: blue;
}
div .wb .span2{
background-color: red;
}
div .wb span:hover{
cursor: pointer;
background-color: #111515;
}
</style>
<body>
<div>
<form action="">
<input type="text">
<div class="wb">
<span class="span1">小米9</span>
<span class="span2">小米10</span>
</div>
</form>
</div>
</body>
</html>
固定定位
position:fixed
可以使用top left right bottom 对盒子进行移动
特点:
1.脱离固定文档流
2.一旦设置固定定位,在页面中进行滚动,位置永远不会变化
参考点:
按照浏览器的左上角范围为参考点,也可以理解为按照html(跟参考点
例如: 这个盒子就永远不会变化
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
div{
background-color: red;
width: 100px;
height: 100px;
position: fixed;
top: 0;
right: 0;
}
</style>
<body>
<div>我就固定在这里不动了</div>
</body>
</html>
侧边栏固定案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>固定导航栏</title>
<style>
*{
margin: 0;
padding: 0;
list-style: none;
}
.site-ber ul li{
height: 50px;
width: 50px;
padding-bottom: 5px;
}
img{
height: 100%;
width: 100%;
}
.site-ber{
position: fixed;
width: 50px;
border: 1px solid red;
bottom: 150px;
right: 0;
margin-right: 10px;
}
</style>
</head>
<body style="height: 2000px">
<div class="site-ber">
<ul>
<li>
<a href="">
<img src="" alt="">
</a>
</li>
<li>
<a href="">
<img src="" alt="">
</a>
</li>
<li>
<a href="">
<img src="" alt="">
</a>
</li>
<li>
<a href="">
<img src="" alt="">
</a>
</li>
<li>
<a href="">
<img src="" alt="">
</a>
</li>
</ul>
</div>
</body>
</html>
浮动和定位对行内元素的影响
对行内元素设置了浮动,是可以设置宽高的,当前行内元素就脱离的标准文档流
与 display: block; 还是有区别的 这个是设置变为块级元素
设置定位
position:absolute; 绝对定位
position:fixed; 固定定位
脱离了标准文档流,可以设置宽高
z-index层级 属性
默认出现压盖现象时
z-index:auto; 只能用于定位元素上,可以进行设置值越大就会压盖越小的
z-index:正整数 越大就会压盖越小的
z-idnex 比较的是父级,父级牛逼 儿子就牛逼,不管儿子大小
注意:
1.z-index只能使用在定位上面
2.如果父级存在z-index 就会按照父级的进行对比,不管内部子级是否存在这个属性
以父级的为基准
实例代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
.a {
position: relative;
height: 100px;
width: 100px;
background-color: #747070;
border: 1px solid aliceblue;
z-index: 1;
}
.b {
position: relative;
height: 100px;
width: 100px;
background-color: red;
border: 1px solid aliceblue;
top: -30px;
left: 50px;
z-index: 10;
}
.c {
position: relative;
height: 100px;
width: 100px;
background-color: peru;
border: 1px solid aliceblue;
top: -50px;
left: 100px;
z-index: 20;
}
</style>
<body>
<div style="position:relative;z-index: 30">
<div class="a">1</div>
</div>
<div style="position:relative;z-index: 10">
<div class="b">2</div>
</div>
<div style="position:relative;z-index: 5;">
<div class="c">3</div>
</div>
</body>
</html>
css背景属性
最常用的背景属性
background-color
可以按照直接设置颜色 yellow
可以按照RGB模式 rgb(255,0,0)
可以按照16进制设置 #00ff00
可以按照RGBA模式 rgba(255,255,255,0.5) # 最后一个参数为颜色的透明程度0.1(100%透明)-1(不透明)
设置背景图片 默认使用平铺状态
background-image: url("图片路径")
background-repeat: repeat; 默认情况下 平铺方式
background-repeat: no-repeat; # 设置不平铺
background-repeat: repeat-x; 横向平铺 左右
background-repeat: repeat-y; 纵向平铺 上下
背景图片定位
background-position: 500px 0;
对应的关键字
center 中间 top 上 left 左 right 右 bottom 下
将背景图片至于中间的位置
background-position: center center
百分比
0% 50% 100%
background-position:50% 50%
还可以使用px
水平百分比计算:
容器的百分比-背景图片的百分比
控制背景图的缩放比例
1.宽度
2.高度
background-size: 24px 597px;
background-image背景图案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<STYLE>
.bg{
background-image: url("788899989..webp");
height: 1125px;
width:100%;
background-repeat: no-repeat;
background-position: center top;
}
</STYLE>
</head>
<body>
<div class="bg">1</div>
</body>
</html>
css sprite 雪碧图技术
是什么:
他是一种图像的拼接合并技术
将多个小图标和背景图片合并在一张图片上
利用css的背景定位来显示需要显示的图片部分
1.静态图片,不随用户信息变化而变化
2.小图片, 图片比较小(2-3kb)
3.加载比较大
优点:
1.有效减少http请求数量
因为之请求了一张大的图片,从大的图片中切割小的图片
2.加速内容的显示
通过css 背景图属性的background-position 来控制雪碧图的显示
好多小图片整合到一张大图中,从大图中进行裁剪下来需要的小图
案例:
根据一整张大图进行 x y 进行切割
x 就是 当前图片的顶部位置
y 就是 当前图片的下面的位置
也就是使用 background-position 将位置裁剪出来,而显示的内容就是当前选选中图片的大小
在一张大图中,切割小图进行显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<STYLE>
.bg1{
background-image: url("雪碧图.png");
height: 40px;
width: 24px;
background-repeat: no-repeat;
background-position: 0 0; 就是第一张图
}
.bg2{
background-image: url("雪碧图.png");
height: 40px;
width: 24px;
background-repeat: no-repeat;
background-position: 0 -40px; 就是第二张图片
}
.bg3{
background-image: url("雪碧图.png");
height: 40px;
width: 24px;
background-repeat: no-repeat;
background-position: 0 -80px;
}
.bg4{
background-image: url("雪碧图.png");
height: 40px;
width: 24px;
background-repeat: no-repeat;
background-position: 0 -120px;
}
</STYLE>
</head>
<body>
<div class="bg1"></div>
<div class="bg2"></div>
<div class="bg3"></div>
<div class="bg4"></div>
</body>
</html>
淘包列表导航案例
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
* {
list-style: none;
padding: 0;
margin: 0;
text-decoration: none;
}
.tobao_list {
float: left;
border-top: 1px solid #f4f4f4;
}
.tobao_list ul {
width: 292px;
overflow: hidden;
}
.tobao_list ul li {
float: left;
width: 71px;
height: 75px;
border: 1px solid #f4f4f4;
/*清除覆盖的线的颜色,设置为透明色 transparent*/
border-top-color: transparent;
border-left-color: transparent;
}
.tobao_list ul li a {
text-align: center;
display: block;
/*设置字体粗细*/
font-weight: 75;
/*设置字体大小*/
font-size: 12px;
/*line-height: 75px;*/
color: #888;
}
.tobao_list ul li span {
width: 24px;
height: 24px;
background-image: url("雪碧图1.png");
background-position: 0 0;
background-repeat: no-repeat;
display: inline-block;
margin-top: 12px;
}
.tobao_list ul li .span1 {
background-position: 0 0;
}
.tobao_list ul li .span2 {
background-position: 0 -44px;
}
.tobao_list ul li .span3 {
background-position: 0 -88px;
}
/*只需要进行修改 background-position 进行切图就行*/
</style>
</head>
<body>
<div class="tobao_list">
<ul>
<li style="border-left:none">
<a href="">
<span class="span1"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span2"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span3"></span>
<p>充话费</p>
</a>
</li>
<li style="border-right:none">
<a href="">
<span class="span4"></span>
<p>充话费</p>
</a>
</li>
<li style="border-left:none">
<a href="">
<span class="span5"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span6"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span7"></span>
<p>充话费</p>
</a>
</li>
<li style="border-right:none">
<a href="">
<span class="span8"></span>
<p>充话费</p>
</a>
</li>
<li style="border-left:none">
<a href="">
<span class="span9"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span10"></span>
<p>充话费</p>
</a>
</li>
<li>
<a href="">
<span class="span11"></span>
<p>充话费</p>
</a>
</li>
<li style="border-right:none">
<a href="">
<span class="span12"></span>
<p>充话费</p>
</a>
</li>
</ul>
</div>
</body>
</html>
页面上制作圆的效果盒子角弧度效果
使用属性
radius : 中文弧形
border-radius:20px; 将盒子的4个脚全部设置为20px的弧度
border-radius:10px 50px ; 对角设置弧度 10px负责第一个脚 50px 第二个脚
border-radius:10px 50px 80px 100px; 分别设置4个脚不一样的弧度
网页中阴影效果
/*
单位为px
第一个值是水平偏移方向
正值水平方向的正方向 右
负值水平方向的负方向 左
负 --------- 正
第二个值垂直偏移方向
上 负值
下 正值
这两个值主要作用调整阴影的角度和位置
第三个值是阴影的模糊程度
第4个值 是阴影的颜色
第5个值 设置内射阴影,阴影在内部,凹凸 inset
*/
box-shadow: 10px 10px 5px #5f5a5a;
可以实现一个效果,当鼠标悬浮时,会出现一个向上移动并且出现阴影的悬浮效果
案例:鼠标悬浮 盒子移动出现阴影效果 和小米商城的相似
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<STYLE>
.y{
/*相对定位*/
position: relative;
height: 200px;
width: 200px;
background-color: #888888;
/*box-shadow: 10px 10px 5px #5f5a5a;*/
}
.y:hover{
top: -3px;
z-index: 2;
box-shadow: 0 10px 5px #e0e0e0;
-webkit-transition: all .3s linear; /*渐变*/
transition: all .3s linear; /*过度效果*/
/*transform: translate3d(0, -2px, 0); !*语法 translate3d(tx, ty, tz)*!*/
/*
translate3d css 函数
3d效果
tx
其 <length> (en-US) 代表平移向量的橫坐標。
ty
其 <length> (en-US) 代表平移向量的縱坐標
tz
其 <length> (en-US) 代表平移向量的 z 分量
*/
}
</STYLE>
</head>
<body>
<div class="y"></div>
</body>
</html>
布局
单列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
html,body{
margin: 0;
height: 100%;
}
/*头部 主体 脚部 的主要显示内容并且居中显示 父级标签占据页面的100% 子级只占用1200 并且居中*/
.container{
width: 1200px; /*宽度1200px*/
margin: 0 auto; /*居中显示*/
}
.header{
width: 100%; /*占据整个网站的100%宽度*/
height: 60px; /*固定显示60 高度*/
line-height: 60px;
text-align: center;
background-color: #000;
}
.header .container{ /*头部的显示内容 设置高度与父级高度一致 设置背景颜色*/
height: 60px;
background-color: orange;
}
.wrap{
width: 100%;
height: 100%;
}
.wrap .container{
height: 100%;
background-color: red;
}
.footer{
width: 100%;
}
.footer .container{
height: 100px;
background-color: #888888;
}
</style>
</head>
<body>
<!--头部-->
<div class="header">
<div class="container">头部主要显示内容</div>
</div>
<!--主体内容-->
<div class="wrap">
<div class="container">主体主要显示内容</div>
</div>
<!--脚部内容-->
<div class="footer">
<div class="container">脚注主要显示内容</div>
</div>
</body>
</html>
多列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
html,body{
margin: 0;
height: 100%;
}
/*头部 主体 脚部 的主要显示内容并且居中显示 父级标签占据页面的100% 子级只占用1200 并且居中*/
.container{
width: 1200px; /*宽度1200px*/
margin: 0 auto; /*居中显示*/
}
.header{
width: 100%; /*占据整个网站的100%宽度*/
height: 60px; /*固定显示60 高度*/
line-height: 60px;
text-align: center;
background-color: #000;
}
.header .container{ /*头部的显示内容 设置高度与父级高度一致 设置背景颜色*/
height: 60px;
background-color: orange;
}
.wrap{
width: 100%;
height: 100%;
}
.wrap .container{
height: 100%;
background-color: red;
}
.footer{
width: 100%;
}
.footer .container{
height: 100px;
background-color: #888888;
}
/*多列布局主要是在主体内容上面进行多个块区域*/
/*左区域*/
.wrap .container .left{
width: 15%;
height: 100%;
float: left; /*因为父类存在高度,就不存在父级塌陷问题 不需要设置清除浮动问题*/
background-color: blue;
}
.wrap .container .right{
width: 15%;
height: 100%;
float: right;
background-color: rebeccapurple;
}
.wrap .container .center{
height: 100%;
background-color: lavender;
/*与左右存在一点距离*/
margin: 0 190px;
}
</style>
</head>
<body>
<!--头部-->
<div class="header">
<div class="container">头部主要显示内容</div>
</div>
<!--主体内容-->
<div class="wrap">
<div class="container">
<div class="left">左</div>
<div class="right">右</div>
<div class="center">中</div>
</div>
</div>
<!--脚部内容-->
<div class="footer">
<div class="container">脚注主要显示内容</div>
</div>
</body>
</html>
网站注意事项
1.命名规范
http://www.divcss5.com/jiqiao/j4.shtml#no3
2.目录规范
项目名
css 样式文件
fonts 第三方图标
images 图片
js js脚本文件
index.html 出口文件
3.确定错误的位置
网页元素中的居中问题
行内元素居中
方式1
设置 text-align: center; 使文本进行水平居中
设置 行高 line-height = 盒子的高度 使用文本垂直居中
两个组合就是水平垂直居中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
width: 200px;
height: 200px;
background-color: red;
color: #e0e0e0;
text-align: center; /*水平居中*/
line-height: 200px; /*如果进行垂直居中,需要设置行高等于盒子的高度 达到垂直居中*/
}
</style>
</head>
<body>
<div class="box">
<span>123</span>
</div>
</body>
</html>
方式2
将元素设置为 display: table-cell; 表格
在使用 属性vertical-align: middle; 设置垂直居中
这是一个表格元素属性 默认table 的vertical-align: middle
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
width: 200px;
height: 200px;
background-color: red;
color: #e0e0e0;
/*单元格默认时垂直居中的状态*/
display: table-cell; /*将标签设置为一个单元格*/
vertical-align: middle; /*设置属性 变为垂直居中 */
text-align: center; /*水平居中*/
}
</style>
</head>
<body>
<div class="box">
<span>123</span>
</div>
</body>
</html>
块级元素水平居中显示
水平居中 margin: auto;
1.使用子绝对 父相对 + margin 进行水平垂直居中显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
background-color: black;
height: 200px;
width: 200px;
position: relative;
}
.child{
position: absolute;
background-color: #888888;
height: 100px;
width: 100px;
margin: auto;
将上下左右 4个属性设置为0 系统自动计算
top: 0;
bottom: 0;
left: 0;
right: 0;
}
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
方式2
将父的属性设置为 table-cell table单元格标签类型
在设置独有的属性 vertical-align: middle; 达到垂直居中
将子元素设置为 行内块元素 可以使用text-align: center; 就可以达到水平居中
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
background-color: black;
height: 200px;
width: 200px;
/*内部的盒子垂直居中显示*/
display: table-cell;
vertical-align: middle;
/*设置行内内容居中,必须是行内元素,所以需要将子设置为行内块*/
text-align: center;
}
.child{
/*如果单纯设置行内元素 高度和宽度不起作用 所以使用行内块元素*/
display: inline-block;
height: 100px;
width: 100px;
background-color: #888888;
}
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
3.使用子绝父相 纯计算
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
.box{
background-color: black;
height: 200px;
width: 200px;
position: relative;
}
.child{
position: absolute;
height: 100px;
width: 100px;
background-color: #888888;
top: 50%;
left: 50%;
margin-left: -50px;
margin-top: -50px;
}
/*纯计算*/
</style>
</head>
<body>
<div class="box">
<div class="child"></div>
</div>
</body>
</html>
补充
overflow: hidden; /*超出内容隐藏*/
white-space: nowrap; /*超出字体不让换行*/
text-overflow: ellipsis; /*字体超出部分省略号显示*/
/*清除浮动属性*/
.clearfix::after {
content: '';
clear: both;
display: block;
}
/*清除样式*/
*{
padding: 0;
margin: 0;
text-decoration:none;
list-style: none;
}
input{
border: none;
outline: none;
}
图标库
https://www.iconfont.cn/home/index?spm=a313x.7781069.1998910419.2
清除塌陷和间距调整没效果的最好方式就是 给设置高度,哪里存在浮动,那么就对那个位置的父设置高度