2020-12-10清除浮动与定位

本文介绍CSS中的清除浮动和定位技术,详细讲解了多种清除浮动的方法及其优缺点,并深入探讨了相对定位、绝对定位等定位方式的应用场景及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、清除浮动

1.方法1

给父元素设置高度

不推荐理由:不能把高度固定死,不适合做自适应的效果。

.father {
            background-color: purple;
            height: 150px;
        }

2.方法2

父元素添加浮动

不推荐
理由:会影响后面的元素布局。

 .father {
        background-color: purple;
        float: left;
        width: 700px;
    }

3.方法3

添加overflow:hidden

添加overflow:hidden之后,父盒子会拥有BFC属性。
不推荐
优点:简单
缺点:内容比较多的时候,容易造成不换行而导致内容被隐藏。

.father {
        background-color: purple;
        overflow: hidden;
    }

4.方法4

设置父盒子为行内块

不推荐
理由:会影响后面的元素布局。

.father {
        background-color: purple;
        width: 700px;
        display: inline-block;
    }

5.方法5

专门清除浮动的属性:clear (不推荐)

clear:both 不允许左侧和右侧有浮动效果。
clear本质:清理元素(拥有clear属性的元素)的顶部添加足够多的外边距,使清理元素的顶部边缘下降到浮动元素的下面。
不足:
1.浮动元素的父类仍然没有高度,父类塌陷没有解决。
2.清理元素的margin-top会失效,其他三个方向仍然有效。

 .box {
        width: 200px;
        height: 200px;
        background-color: saddlebrown;
        clear: both;
        margin-top: 50px;
    }

6.方法6

设置空标签添加clear:both

优点:简单方便
缺点:会添加一个无意义的空标签,有违结构与表现的分离。在以后的维护过程中会十分麻烦。
不推荐使用。

.clearfix {
        clear: both;
    }

7.方法7

使用伪元素清除浮动(推荐使用)

.father::after {
            content: "";
            clear: both;
            display: block;
        }

8.伪元素

css的伪元素,是指他们不是真正的页面元素。html中并没有对应的结构,但是其用法与表现,行为与真正的页面元素一样。
:before 格式:

选择器::before

:after 格式:

选择器::after

设置伪元素,content是必须添加的。

添加的内容是默认为行内元素的。

.p1::after {
            content: ",八千里路云和月";
        }
        
        .p1::before {
            content: "岳飞:";
            display: block;
        }

9.infont图标

1.使用link标签引入css
eg:

 <link rel="stylesheet" href="https://at.alicdn.com/t/font_2200456_jdy81d52pfi.css">

2.使用span标签,class属性中添加‘iconfont icon-XXX’
xxx为每个图标的专属类名。

 <span class="iconfont icon-icon-"></span>

二、定位

1.基本属性

css中定位属性最常用的三种:绝对定位,相对定位和固定定位。
position 属性用于指定一个元素在文档中的定位方式。

  • position:
    relative 相对定位
    absolute 绝对定位
    fixed 固定定位

    top
    right
    bottom
    left
    偏移量,决定了元素的最终位置。

2.相对定位

相对定位:让元素相对于自己原来的位置,进行位置调整。

  • margin和相对定位的区别:
    1.概念
    margin:用来表示盒子之间的间距。
    相对定位:相对于自己原来的位置,进行位置调整。
    2.影响
    用相对定位只会影响当前元素本身的位置,不会对相邻元素的位置产生影响。
    用margin除了会影响当前元素本身的位置,还会对相邻元素的位置产生影响。

    相对定位不会脱标。原来的位置不会被其他元素占有。

  • 相对定位的用途:
    1.微调位置。
    2.做绝对定位的参考系。(子绝父相)

.box1 {
            background-color: saddlebrown;
            position: relative;
            /*  距离左边有200px的距离 */
            left: 200px;
            top: 200px;
        }

结果示意:在这里插入图片描述

.box1 {
            background-color: saddlebrown;
            margin-left: 200px;
            margin-top: 200px;
        }

结果示意:在这里插入图片描述

3.绝对定位

绝对定位
position:absolute
会定义一个坐标系,按照坐标系进行位移。
设置绝对定位时,一定要设置偏移量。

如果使用top描述,是从参考系的顶部计算位置。
使用right描述,是从参考系的右边计算位置
使用bottom描述,是从参考系的底部计算位置。
使用left描述,是从参考系的左边计算位置。

绝对定位会脱标。
绝对定位的盒子会寻找最近的定位祖先元素,并以它为参考系。

1.最近的祖先元素,不一定非是父元素。
2.不一定是相对定位,也可以绝对定位等。只要包含定位信息。

一般情况下都是设置子绝父相。
父盒子设置相对定位(零偏移),子盒子设置绝对定位。

4.压盖效果

.box {
            position: relative;
        }
.title {
            position: absolute;
            bottom: 5px;
        }

示意图
在这里插入图片描述

5. z-index属性

z-index属性
特性:
1.数值大的位于上面,压盖数值小的。
2.z-index 没有单位,是一个正整数。
3.如果大家都没有设置z-index,或者z-index一样,此时,压盖效果由html的书写顺序决定。
4.定位的元素永远可以压盖没有定位的元素。
5.只有设置了定位的元素,才可以设置z-index值。不管是相对,还是绝对 还是固定。
6.从父现象:拼爹。假如父元素的z-index比较大,就不需要看子元素的z-index值。

.father {
        position: absolute;
        z-index: 4;
    }
.father2 {
        position: absolute;
        z-index: 9;
    }
.box {
        position: absolute;
        top: 0;
        left: 0;
        z-index: 1;
    }
.box2 {
        position: absolute;
        top: 0;
        left: 0;
        z-index: 6;
    }

6.固定定位

固定定位:
相对于浏览器窗口进行定位。无论页面如何滚动,盒子的位置不变。
position:fixed;

  • 用途:
    1.网页小广告
    2.返回顶部
    3.顶部导航

书写顶部导航条时,底部内容会被固定导航条遮盖。可以在body标签中,添加padding-top 高度为顶部导航条的高度即可。

.box {
            width: 100px;
            height: 100px;
            background-color: red;
            position: fixed;
            top: 40%;
        }

7.黏性定位

div {
            background-color: teal;
            position: sticky;
            top: 100px;
        }

8.小圆点

span {
            display: inline-block;
            width: 50px;
            height: 50px;
            border-radius: 50%;
            background-color: teal;
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值