浮动与定位float&position

本文介绍了浮动在网页布局中的应用,包括左浮动和右浮动的使用规范,以及如何通过BFC来控制浮动元素。重点讲解了如何创建BFC、防止margin塌陷和清除浮动的不同方法,如overflow、clear属性和常见的解决技巧。
摘要由CSDN通过智能技术生成

浮动

功能:实现并排

使用规范

左浮动

float: left;

右浮动

float: right;

1)同级盒子要同时浮动
2)父盒子要有足够的宽度,否则子盒子会掉下去
3)顺序贴靠:子盒子按顺序贴靠;若无足够空间,则会寻找再前一个兄弟元素
4)浮动/定位后,行内元素转换成块级元素

BFC

Box Formatting Context块级格式化上下文
是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然

现象:盒子不设置height,当内容子元素都浮动时,无法撑起自身
这个盒子没有形成BFC

创建BFC

方法1:float的值不是none
方法2:position的值不是static或者relative(常用)
方法3:display的值是inline-block、flex或者inline-flex
方法4:overflow:hidden;溢出盒子边框的内容被隐藏(常用)

作用

阻止margin塌陷
阻止浮动元素覆盖元素

无实战意义(因为要求都浮动)

 .s1 {
     float: left;
     width: 300px;
     height: 300px;
     background-color: red;
 }
 .s2 {
     overflow: hidden;
     width: 300px;
     height: 300px;
     background-color: blue;
}

清除浮动

添加浮动,子盒子脱离了文档流,导致父盒子高度折叠,无法展示

方法1:父盒子创建BFC

使用overflow:hidden方法
关住内部的浮动

p {
     float: left;
     width: 100px;
     height: 100px;
     background-color: orange;
     margin-right: 20px;
 }
div {
     overflow: hidden;
     margin-bottom: 10px;
 }
 <div>
     <p></p>
     <p></p>
 </div>
 <div>
     <p></p>
     <p></p>
 </div>

方法2:后面盒子的父盒子设置clear:both

clear清除浮动的影响
both左右浮动都清除

p {
     float: left;
     width: 100px;
     height: 100px;
     background-color: orange;
     margin-right: 20px;
 }
.box2 {
      clear:both;
 }
<div>
    <p></p>
    <p></p>
</div>
<div class='box2'> 
     <p></p>
     <p></p>
</div>

方法3:伪元素添加子盒子,该盒子设置clear:both

p {
   float: left;
   width: 100px;
   height: 100px;
   background-color: orange;
   margin-right: 20px;
}
.clearfix::after {
    content: '';
	clear: both;
    /* ::after:和:before是行内元素 */
	display: block;
}
<div class="clearfix">
    <p></p>
    <p></p>
</div>
<div class="clearfix">
    <p></p>
    <p></p>
</div>

方法4:两父盒子“隔墙”,墙盒子设置clear:both

 p {
     float: left;
     width: 100px;
     height: 100px;
     background-color: orange;
     margin-right: 20px;
 }
 /* 公共类 */
 .h20 {
     height: 20px;
 }
 .cl {
     clear: both;
 }
 <div>
     <p></p>
     <p></p>
 </div>
 <div class="cl h20"></div>
 <div>
     <p></p>
     <p></p>
 </div>

定位

相对定位

盒子相对原来的位置进行调整

position: relative;
top: 100px;
left: 100px;

位置描述词:
left向右移动;right向左移动;top向下移动;bottom向上移动
值可以为负数,即往规定方向相反移动

性质-老家留坑

本质仍在原位置,渲染在新位置
渲染的图形比喻成“影子”,不会对页面其他元素产生影响

用途

微调元素位置
相对定位的元素当做绝对定位的参考

nav ul li a {
    display: block;
    width: 120px;
    height: 40px;
    background-color: orange;
    color: white;
    text-decoration: none;
}
nav ul li a:hover {
    border-top: 3px solid red;
    /* 加上边框盒子掉下,相对定位进行微调 */
    position: relative;
    top: -3px;
}
<nav>
    <ul>
        <li><a href="">登录</a></li>
    </ul>
</nav>

绝对定位

在浏览器中以坐标精准描述位置

position: absolute;
top: 100px;
left: 100px;

性质-子绝父相

参考盒子(基准点):
1)默认是浏览器
2)最近的拥有定位属性(一般是相对定位)的祖先盒子

用途

制作“压盖”、“遮罩”效果
盒子的垂直居中

position: absolute;
top: 50%;
margin-top: -自己高度一半;

固定定位

不管页面如何卷动,永远固定

position: fixed;
top: 100px;
left: 100px;

性质-基准点是页面

用途

“返回顶部"、“楼层导航"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值