1、定位
(1)相对定位 position: relative
- 当开启了元素相对定位之后而不设置边偏移量时,元素不会发生任何变化
- 相对定位是相对于元素在文档流中原来的位置进行定位
- 相对定位的元素不会脱离文档流,但会提升一个层级
(2)绝对定位 position: absolute
- 开启绝对定位以后,如果不设置偏移量时,元素不会发生任何改变
- 开启绝对定位以后,会使元素脱离文档流
- 绝对定位是相对于离他最近的开启了定位的祖先元素进行定位的,如果所有的祖先元素都没有设置定位,则元素就会相对于浏览器窗口进行定位
(3)固定定位 position:fixed
生成绝对定位的元素,相对于浏览器窗口进行定位
(4)默认值position:static
默认值。没有定位,元素出现在正常的流中
(5)position:inherit
规定应该从父元素继承 position 属性的值。
2、过渡动画
鼠标覆盖图片对图片进行放大,外边框不变:
<style type="text/css">
div {
height: 125px;
width: 270px;
border: 2px solid red;
overflow: hidden;
}
img {
height: 125px;
width: 270px;
transition: all 0.5s;
}
div:hover img {
transform: scale(1.2);
}
</style>
<div>
<img src="img/1.jpg" />
</div>
3、弹性盒子(重点!!!)
通过设置 display:flex 可以定义弹性盒子,弹性盒子由弹性容器和弹性子元素组成,它描述了弹性子元素在弹性容器内部的沿主轴和侧轴的排列方式。它有6大属性:
(1)flex-direction: 定义伸缩方向
取值:row:横向排列(默认值)
column:纵向排列
(2)flex-wrap: 定义伸缩容器里是单行显示还是多行显示
取值:nowrap:单行显示(默认值)
wrap:多行显示
(3)flex-flow: flex-direction和flex-wrap属性的复合属性
(4)justify-content : 定义主轴对齐方式
取值:flex-start:居左排列(默认值)
flex-end:居右排列
center:居中排列
space-between:两端对齐,空隙平分
space-around:每个项目两侧的间隙相等
(5)align-items: 定义侧轴对齐方式
取值:flex-start:排列在上方(默认值)
flex-end:排列在结尾
center:垂直居中排列
(6)align-content : 定义伸缩行在伸缩容器里的侧轴对齐方式
取值:flex-start:排列在上方(默认值)
flex-end:排列在结尾
center:垂直居中排列
在伸缩子元素中我们可以设置flex:1按照比例来划分容器的宽高
4、垂直水平居中
(1)文本垂直水平居中
line-height:盒子的高度;
text-align: center;
(2)盒子垂直水平居中
方法一:弹性盒子
/* 父元素设置 */
.box1{
display:flex;
justify-content: center;
align-items: center;
}
方法二:定位(宽度和高度已知),父元素设置相对定位,子元素设置绝对定位
/* 子元素设置 */
.box2{
position: absolute;
left: 50%;
margin-left: -子元素宽度的一半;
top: 50%;
margin-top: -子元素高度的一半
}
方法三:定位(宽度和高度未知),父元素设置相对定位,子元素设置绝对定位
/* 子元素设置 */
.box2 {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
}
方法四:定位+平移+transform
/* 子元素设置 */
.box2 {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
方法五:弹性盒子+margin(宽度和高度未知)(父元素设置display:flex,子元素设置margin:auto)
<style type="text/css">
.box {
width: 500px;
height: 500px;
background-color: pink;
display: flex;
}
.one {
width: 300px;
height: 300px;
background-color: yellow;
margin: auto;
}
</style>
<div class="box">
<div class="one"></div>
</div>
方法六:margin: 0 auto 只能设置水平居中(只有块级元素block设置该属性才生效)
5、去除默认间隙
(1)去除ul中li距离左边的间隙
* {
margin: 0;
padding: 0;
}
(2)去除li与li之间的间隙
- 设置ul中的font-size: 0;
- 设置ul中的letter-spacing: -4px;li中的letter-spacing: normal;
- 设置li中的float:left
(3)去除行内块元素在同一行显示时有默认空隙(产生间隙的原因:浏览器的默认行为是元素间的空格换行渲染成一个空格,空格占用一个字符的宽度8px)
- 给行内块元素的父元素设置:font-size:0px,自己再重新设置font-size(最推荐)
- 在html中将行内块元素在同一行显示
- 在父元素上设置word-spacing的值为合适的负值
- 将行内元素设置为浮动状态,可能会有打乱页面布局