文章目录
1. 盒子模型
margin、border、padding、content的关系
- margin:外边距(块元素之间的距离)
- border:边框
- padding:内边距(边框跟内容的距离)
- content:内容
样式设置
(1)padding-left:10px; 左内边距
(2)padding-right:10px; 右内边距
(3)padding-top:10px; 上内边距
(4)padding-bottom:10px; 下内边距
(5)padding:10px; 四边统一内边距
(6)padding:10px 20px; 上下、左右内边距
(7)padding:10px 20px 30px; 上、左右、下内边距
(8)padding:10px 20px 30px 40px; 上、右、下、左内边距
2. px、em、rem 设置大小
- 一、px是固定的像素,一旦设置了就无法因为适应页面大小而改变。
- 二、em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局。
em
- 子元素font-size的em,是相对于父元素font-size
- 元素的width/height/padding/margin的em,是相对于该元素的font-size
<div>
父元素div
<p>
子元素p
<span>孙元素span</span>
</p>
</div>
div {
font-size: 40px;
width: 7.5em; /* 7.5 * 40px == 300px */
height: 7.5em;
border: solid 2px black;
}
p {
font-size: 0.5em; /* 0.5 * 40px == 20px */
width: 7.5em; /* 7.5 * 20px == 150px */
height: 7.5em;
border: solid 2px blue ;
color: blue;
}
span {
font-size: 0.5em;
width: 7em;
height: 6em;
border: solid 1px red;
display: block;
color: red;
}
rem
- rem是全部的长度都相对于根元素,根元素是谁?元素。通常做法是给html元素设置一个字体大小,然后其他元素的长度单位就为rem。
<div>
父元素div
<p>
子元素p
<span>孙元素span</span>
</p>
</div>
html {
font-size: 10px;
}
div {
font-size: 4rem; /* 40px */
width: 20rem; /* 200px */
height: 20rem;
border: solid 2px black;
}
p {
font-size: 2rem; /* 20px */
width: 10rem;
height: 10rem;
border: solid 1px blue;
color:blue ;
}
span {
font-size: 1.5rem;
width: 7rem;
height: 6rem;
border: solid 2px red;
display: block;
color: red;
}
3. position 布局
static
:HTML 元素的默认值,即没有定位,遵循正常的文档流对象。静态定位的元素不会受到 top, bottom, left, right影响。fixed
:元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。relative
:相对定位元素的定位是相对其正常位置。absolute
:绝对定位的元素的位置相对于最近的已定位父元素,如果元素没有已定位的父元素,那么它的位置相对于< html >
这里relative与absolute比较抽象,所以这里只对这两者进行说明
- 首先设置正常的文档流
<body>
<div class="div1">第一个div</div>
<div class="div2">第二个div</div>
<div class="div3">第三个div</div>
<div class="div4">第四个div</div>
</body>
区别一:
- relative会占用其原有的位置,并且飘到设定位置
- absoulte不会占用其原有的位置,而是飘到设定的位置
区别二:
- relative是相对于原有的正常位置,移动到指定位置
- absolute是相对于父元素的正常位置,移动到指定位置
区别三
- relative会影响父元素大小
- absolute不会影响父元素大小
4. 文本流与文档流
- 文档流:指的是HTML中元素在计算布局排版。(元素顺序)
- 文本流:简单来说就是元素内部的一系列的字符的排列规则。(文字顺序)
示例:float脱离文档流,但不脱离文本流。absolute脱离文档流与文本流
5. float 浮动
浮动
:浮动以后使元素脱离了文档流,但不脱离文本流。(参考上述第4点)位置
:浮动是碰到(父元素、未脱离元素、浮动元素),就会停止,所以不会重叠方向
:浮动只有左右浮动,没有上下浮动
6. z-index属性如何生效
- 首先将position定义为,absolute、relative或fixed。
【必须position为以上三个属性,z-index才能层级体现出来,才能起作用】- 设置 style 中 z-index:auto
auto可定义为一个值(整数数字),越大代表越置前,如可定义为: z-index:9999。- 若定义为-1,代表为最底层。
如果要让div1不被div2遮挡,则将div1的z-index设置比div2大就可以了。
7. 层级规律
脱离状态:未脱离 < 半脱离 < 全脱离
全脱离元素:相同位置、相同z-index的元素,后面的元素会覆盖前面的元素
z-index:全脱离元素,z-index数值大的元素,覆盖z-index数值小的元素
8. 修改样式的两种方式
直接修改元素的样式
使用类选择器修改元素样式
9. 样式嵌套
规则
示例
总结
1. 未脱离、半脱离、全脱离
1. 位置
- 未脱离:元素按照文档流的顺序,依次排列。
- 半脱离:碰到(父元素、未脱离元素、浮动元素),就会停止。
- 全脱离:按照position各自的特性,移动到指定位置
2. 层级
- 脱离状态:
未脱离 < 半脱离 < 全脱离
- 全脱离元素:
相同位置、相同z-index的元素,后面的元素会覆盖前面的元素
- z-index:
全脱离元素,z-index数值大的元素,覆盖z-index数值小的元素