1、什么是盒模型以及html文件
盒模型
- html文件是由一个个的html标签(元素)组成
- 盒模型:把每一个html元素想象成一个盒子
盒模型的结构
- content(内容):用来显示内容
- padding(内边距):内容与边框之间的距离
- border(边框):元素的边框
- margin(外边距):元素与元素之间的距离(兄弟关系,父子关系)
- 盒子的宽=width + 左右padding + 左右border + 左右margin
- 盒子的高=height + 上下padding + 上下boder + 上下margin
2、margin和padding的写法
1.合写 (以margin为例,padding同理)
- 一个值:代表上 下 左 右 margin都是20px;margin:20px;上下左右
- 两个值:第一个值代表上下margin,第二个值代表左右margin;margin:20px 15px
- 三个值:第一个值表示上,第二个值表示左右,第三个值表示下;margin:20px 15px 10px;
- 四个值:分别代表上 右 下 左(顺时针记)margin:20px 15px 10px 5px
2.分开写 (以margin为例,padding同理)
- 上margin: margin-top:20px; 距离上边界20px;
- 下margin: margin-bottom: 20px; 距离下边界20像素;
- 左margin: margin-left: 20px; 距离左边界20像素;
- 右margin: margin-right: 20px; 距离右边界20像素;
3、margin的坑点
相邻兄弟的元素在竖直方向上margin会出现融合。
- 融合的标准:以较大的为准
解决办法:
- 尽量只给一个元素设置竖直margin
- 给两个元素的任意一个元素设置display:inline-block;
父子关系的元素在竖直方向上margin会出现传递现象;
解决办法:
- 给父级加一个边框
- 给父级加display:inline-block;
- 给父级添加overflow:hidden;(溢出隐藏)
- 用父级的padding代替子集的margin。
4、盒模型练习之margin写法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒模型6层练习</title>
<style type="text/css">
/* *{
margin: 0;
padding: 0;
} */
#div1{
width: 590px;
height: 590px;
border: 5px dashed #000;
margin: auto;
margin-top: 50px;
}
#div2{
width: 490px;
height: 490px;
border: 5px solid lightblue;
margin: 45px;
}
#div3{
width: 400px;
height: 400px;
background-color: purple;
margin: 45px;
overflow: hidden;
}
#div4{
width: 300px;
height: 300px;
border: 5px dashed white;
margin: 45px;
}
#div5{
width: 200px;
height: 200px;
border: 5px dashed white;
margin: 45px;
}
#div6{
width: 100px;
height: 100px;
border: 5px solid yellow;
margin: 45px;
background-color: greenyellow;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2">
<div id="div3">
<div id="div4">
<div id="div5">
<div id="div6"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
5、盒模型练习之padding写法
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>盒模型之padding的用法</title>
<style type="text/css">
#div6{
width: 100px;
height: 100px;
border: 5px solid yellow;
background-color: greenyellow;
}
#div5{
width: 110px;
height: 110px;
border: 5px dashed #000;
padding: 45px;
}
#div4{
width: 210px;
width: 210px;
border: 5px dashed #000;
padding: 45px;
}
#div3{
width: 310px;
height: 310px;
padding: 45px;
background-color: purple;
}
#div2{
width: 400px;
height: 400px;
border: 5px solid royalblue;
background-color: lightgrey;
padding: 45px;
}
#div1{
width: 500px;
height: 500px;
border: 5px dashed black;
padding: 45px;
margin: auto;
margin-top: 50px;
}
</style>
</head>
<body>
<div id="div1">
<div id="div2">
<div id="div3">
<div id="div4">
<div id="div5">
<div id="div6"></div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>
6、背景样式
1.背景色
- background-color
2.背景图片
- background-image
3.背景尺寸:background-size
- 百分比 分别相对于容器的宽和高
- px值
- cover
- contain
1. cover和contain都是按比例缩放图片
2. cover要保证按比例铺满整个容器,有可能造成图片无法显示完全。
3. contain只要宽或者高一个方向铺满容器,就停止缩放,有可能造成内容留白。
4.背景图平铺 background-repeat
- repeat 水平竖直方向都平铺(默认)
- repeat-x 水平方向平铺
- repeat-y 竖直方向平铺
- no-repeat 不平铺
5.背景图片是否跟随网页滚动
- background-attachment
- scroll 跟随网页滚动
- fixed 不跟随网页滚动
背景图位置:background-position:x y
- x:水平方向位置
- y:竖直方向位置
写法:
1) 直接写px数值
- x方向:正值-> 负值<-
- y方向:正值(往下) 负值(往上)
2)使用方位单词
- x方向:left center right
- y方向:top center bottom
7、盒模型-auto
- auto是一个值,可以帮助我们灵活地进行块级元素的布局
在盒模型中,我们一般可以把width,margin设置为auto - 1.如果width,margin-left,margin-right三个样式有一个auto,其余两个值必须是定值。
- 2.如果width,margin-left,margin-right三个样式都为定值且发生了冲突,系统会强制修改margin-right的值;
- 3.如果margin-left,margin-right两个值都为auto,那么宽必须为定值。
8、添加的样式
-
cursor:pointer;变成小手
-
test-decoration 文本修饰
- underline
- overline
- line-through
- none
-
list-style 列表样式修饰
- none 去掉黑点
- circle 变成空心圆
- square 变成实心正方形
9、浮动
什么时文档流?
- 默认状态下文档中元素所处的位置。
什么是浮动?
- 设置了浮动的元素,元素会脱离文档流
- 浮动是一个样式:float
- 值1:left:向左浮动;值2:right:向右浮动;
浮动的特点
- 浮动只有左浮动和右浮动
- 设置了浮动的元素,其大小默认由内容撑出
- 设置了浮动的元素,可以设置宽高(行和块都可以)
- 设置了浮动的元素,水平浮动,直到遇到父级的边框或者另外一个浮动元素,停止浮动
- 设置了浮动的元素,脱离文档流,会影响到后面的元素,但是当后面的元素有图片或者文字的时候,图片和文字不受影响。
- 设置了浮动的元素,自动margin失效
清除浮动造成的影响
- 方法:给受浮动影响的元素添加clear样式
- left 清除左浮动造成的影响
- right 清除右浮动造成的影响
- both 清除左右浮动造成的影响
浮动造成的问题
- 如果父级不设置高度,那么父级的高度由其内容不设置浮动的元素撑出,但是如果其内部所有的元素都设置了浮动,则父级无法撑出高度,该现象称之为“内容塌陷”
如何解决
- 给父级设置一个高度
- 给父级添加overflow:hidden;
- 在父级里所有浮动的元素的后面,添加一个空元素,并设置clear:both;空元素的类型必须是块元素或者行级块元素。
10、阴影
盒模型 box-shadow
文字阴影 test-shadow
取值:
- x方向偏移量:若是正值,阴影向右方;若是负值,阴影向左移动
- y方向偏移量:若是正值,阴影向下;若是负值,阴影向上移动
- 阴影的发散度:值越小,阴影越实,值越大,阴影越虚幻
- 阴影宽度:值越大,阴影越宽,值越小,阴影越细。
- 阴影颜色:一般是暗色系列
- 内阴影:(不必填,若不填,默认为外阴影) inset;
11、伪类选择器
:link{}
- 该选择器能找到所有定义了超链接,且没有被访问过的元素,适用于a标签
:visited{}
- 该选择器能找到所有的定义了超链接且已经被访问过的元素,适用于a标签
:hover{}
- 该选择器能找到鼠标移动到其上面的元素
:active{}
- 该选择器能找到鼠标在其上面按下并不松开的元素
注意:
如果我们在同一个文件里,给同一类元素设置了伪类时,需要使用到link visited hover active这四个中的多个时,需要按照如下顺序书写:LoVe HAte(爱恨法则)。