一、定位
1.网页常见布局方式
标准流
块级元素独占一行——垂直布局
行内元素/行内块元素一行显示多个——水平布局
浮动
可以让原本垂直布局的块级元素变成水平布局
定位
可以让元素自由的摆放在网页的任意位置
一般用于盒子之间的层叠情况
2.使用定位的步骤
设置定位方式
属性名:position
常见属性值如下:
定位方式 | 属性值 |
静态定位 | static |
相对定位 | relative |
绝对定位 | absolute |
固定定位 | fixed |
设置偏移值
偏移值设置分为两个方向,水平和垂直方向各选一个使用即可
选取的原则一般是就近原则(离哪边近用哪个)
方向 | 属性名 | 属性值 | 含义 |
水平 | left | 数字+px | 距离左边的距离 |
水平 | right | 数字+px | 距离右边的距离 |
垂直 | top | 数字+px | 距离上边的距离 |
垂直 | bottom | 数字+px | 距离下边的距离 |
注意:如果left和right都有,以left为准;top和bottom都有以top为准
3.相对定位
介绍:自恋型定位,相对于自己之前的位置进行移动
代码:position:relative
特点:
需要配合方位属性实现移动
相对于自己原来位置进行移动
在页面中占有原来的位置——没有脱标
仍然具有标签原有的显示模式特点
应用场景:
配合绝对定位组CP(子绝父相)
用于小范围的移动
<style>
.box{
position: relative;
left: 100px;
top: 200px;
}
</style>
|
|
4.绝对定位
介绍:拼爹型定位,相对于非静态定位的父元素进行定位移动
代码:position:absolute
特点:
需要配合方位属性实现移动
默认相对于浏览器可视区域进行移动
在页面中不占位置——已经脱标
改变标签的显示模式特点:具有行内块特点(在一行共存,宽高生效。如果没有宽度也没有内容,盒子的宽度尺寸就是0)
应用场景:
配合绝对定位组CP(子绝父相)
注意:绝对定位,先找已经定位的父级(就近找定位的父级,逐层找),如果有这样的父级就以这个父级为参照物进行定位
有父级,但父级没有定位,以浏览器窗口为参照进行定位
例1:父级没有定位
.box{
/* 绝对定位,先找已经定位的父级,如果有这样的父级就以这个父级为参照物进行定位
有父级,但父级没有定位,以浏览器窗口为参照进行定位*/
position: absolute;
left:0;
top: 0;
}
|
|
例2:子绝父相
<style>
.father{
width: 400px;
height: 400px;
background-color: pink;
}
.son{
/* 父相 */
position: relative;
width: 300px;
height: 300px;
background-color:skyblue;
}
.sun{
/* 父相 */
position: absolute;
right: 20px;
bottom: 50px;
width: 200px;
height: 200px;
background-color: rgb(193, 248, 193);
}
</style>
<body>
<div class="father">
<div class="son">
<div class="sun"></div>
</div>
</div>
</body>
|
|
5.定位—居中
.box{
position: absolute;
margin: 0 auto; /*标准流*/
width: 300px;
height: 300px;
background-color: pink;
}
绝对定位的盒子不能使用左右margin auto居中
.box{
position: absolute;
/* left: 50% 整个盒子移动到浏览器中间偏右位置 */
left: 50%;
/* 把盒子向左侧移动:自己宽度的一半 */
margin-left: -150px;
top: 50%;
margin-top: -150px;
width: 300px;
height: 300px;
background-color: pink;
}
注:省去计算、修改数据的繁琐 transform:translate(-50%,-50%);
6.固定定位
介绍:死心眼型定位,相对于浏览器进行定位移动
代码:position:fixed
特点:
需要配合方位属性实现移动
相对于浏览器可视区域进行移动
在页面中不占位置——已经脱标
具备行内块特点
应用场景:让盒子固定在屏幕中的某个位置
.box{
position: fixed;
left: 0;
top:0;
}
7.元素的层级关系
不同布局方式元素的层级关系:
标准流<浮动<定位
不同定位之间的层级关系:
相对、绝对、固定默认层级相同
此时HTML中写在下面的元素层级更高,会覆盖上面的元素
默认情况下,定位盒子 后来者居上(后压前)
z-index:整数;取值越大,显示顺序越靠上;z-index默认值为0
<style>
div{
width: 200px;
height: 200px;
}
.one{
position: absolute;
left: 20px;
top: 50px;
z-index: 1;
background-color: pink;
}
.two{
position: absolute;
left: 50px;
top: 100px;
background-color: skyblue;
}
</style>
<body>
<div class="one">one</div>
<div class="two">two</div>
<!-- 默认情况下,定位盒子 后来者居上(后压前) -->
</body>
二、装饰
认识基线
文字对齐问题
场景:解决行内/行内块元素垂直对齐问题
问题:当图片和文字在一行中显示时,其实底部不是对齐的
垂直对齐方式
浏览器把行内和行内块标签当做文字处理,默认基线对齐(也可以设置display:block来处理问题)
属性名:vertical-align
属性值:
属性值 | 效果 |
baseline | 默认,基线对齐 |
top | 顶部对齐 |
middle | 中部对齐 |
bottom | 底部对齐 |
让图片垂直居中
.father{
width:600px;
height:600px;
line-height:600px;
text-align:center; /*水平居中把img理解成文字 */
}
.img{
vertical-align:middle;
}
光标类型
场景:设置鼠标光标在元素上时显示的样式
属性名:cursor
常见属性值:
属性值 | 效果 |
default | 默认值,通常是箭头 |
pointer | 小手效果,提示用户可以点击 |
text | 工字型,提示用户可以选择文字 |
move | 十字光标,提示用户可以移动 |
边框圆角
场景:让盒子四个角变得圆润,增加页面细节,提升用户体验
属性名:border-radius
常见取值:数字+px、百分比
赋值规则:从左上角开始赋值,然后顺时针赋值,没有赋值的看对角
应用
画一个正圆(头像)
盒子必须是正方形
设置边框圆角为盒子宽高的一半——border-radius:50%
胶囊按钮
盒子必须是长方形
设置——border-radius:盒子高度的一半
overflow溢出部分显示效果
溢出部分:指的是盒子 内容部分 所超出盒子范围的区域
场景:控制内容溢出部分的显示效果,如:显示、隐藏、滚动条......
属性名:overflow
常见属性值:
属性值 | 效果 |
visible | 默认值,溢出部分可见 |
hidden | 溢出部分隐藏 |
scroll | 无论是否溢出,都显示滚动条 |
auto | 根据是否溢出,自动显示或隐藏滚动条 |
元素本身隐藏
场景:让某元素本身在屏幕中不可见。如:鼠标:hover之后元素隐藏
常见熟悉:
visibility:hidden(不常用) 占位隐藏
display:none 不占位隐藏
导航中鼠标悬停a 显示二维码图片
.nav li a:hover img{
display:block;
}
元素整体透明度
场景:让某元素整体(包括内容)一起变透明
属性名:opacity
属性值:0~1之间的数字
1:表示完全不透明
0:表示完全透明