清除浮动,定位,伪元素

浮动和定位都可以将行内元素转换为块元素
当在同一个元素中同时使用浮动和定位时,会有以下两种情况:(尽量不要这么做)

1.当定位为absolute或fixed时,float会失效
2.若定位不是absolute和fixed时,两个同时起作用,则float的优先级更高。

浮动元素父类塌陷

当所有的子元素都浮动(脱标)时,父元素若没有设置高度,高度会为0;
在这里插入图片描述

小知识:用定位子绝父相,实现这种页面,也会出现父元素高度塌陷,没有css直接办法

如果你真的想实现绝对定位还能撑开父元素,只能通过JavaScript实现:获取到绝对定位的子元素的高度,再设置给父元素。

方法1:给父元素设置高度

不推荐理由:不能把高度固定死,不适合做自适应的效果。
在这里插入图片描述

方法2:父元素添加浮动

不推荐
理由:会影响后面的元素布局。
在这里插入图片描述

方法3:添加overflow:hidden(溢出隐藏)

添加overflow:hidden之后,父盒子会拥有BFC属性。(暂不解释)

不推荐
优点:简单
缺点:内容比较多的时候,容易造成内容被隐藏。

在这里插入图片描述

方法4:设置父盒子为行内块

不推荐
理由:会影响后面的元素布局。
行内块(可以和其他行内,行内块元素并排使用)
在这里插入图片描述
也可以将浮动的父元素转为块。此时父元素如果不设会没有宽高

方法5 专门清除浮动的属性:

clear (不推荐)

clear:both 不允许左侧和右侧有浮动效果。

clear本质:清理元素(拥有clear属性的元素)的顶部添加足够多的外边距,使清理元素的顶部边缘下降到浮动元素的下面。

不足:
1.浮动元素的父类仍然没有高度,父类塌陷没有解决。
2.清理元素的margin-top会失效,其他三个方向仍然有效。
在这里插入图片描述

方法6:设置空标签添加clear:both

优点:简单方便,解决了父类塌陷
缺点:会添加一个无意义的空标签,有违结构与表现的分离。在以后的维护过程中会十分麻烦。

不推荐使用。
在这里插入图片描述

方法7:使用伪元素清除浮动(推荐使用)

在这里插入图片描述

伪元素介绍

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

:before
格式:
选择器::before
在标签内部的前面添加内容
:after
格式:
选择器::after
在标签内部的后面添加内容

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

添加的内容是默认为行内元素的。
在这里插入图片描述用伪元素插入背景图片,基础

<style>
    .son:before {
        content: "";
        display: block;
        width: 300px;
        height: 200px;
        background-image: url(./weitu.jpeg);
        background-size: 100% 100%;
    }
    .son {
        width: 300px;
        height: 200px;
        color: teal;
    }
</style>
<body>
    <div class="son">使用伪元素插入图片使用伪元素插入图片使用伪元素插入图片
    使用伪元素插入图片使用伪元素插入图片使用伪元素插入图片</div>
</body>

在这里插入图片描述
上面例子,背景图片没有在文字下面,需要调整如下

<style>
    .son::after {
        content: '';
        position: absolute;
        top: 0;
        left: 0;
        z-index: -1;
        width: 300px;
        height: 200px;
        background-image: url(./weitu.jpeg);
        background-size: 100% 100%;

    }
    .son {
        width: 270px;
        height: 200px;
        color: #fff;
    }
</style>

<body> 
    <div class="son">使用伪元素插入图片使用伪元素插入图片使用伪元素插入图片
    使用伪元素插入图片使用伪元素插入图片使用伪元素插入图片</div>
</body>

在这里插入图片描述
这里的定位参考的父元素是浏览器,如果需要美观实用,用一个div包裹son的元素
然后给父元素设置相对定位

<div class="father"> <div class="son"></div> </div>

定位

  • css定位

属性最常用的三种:绝对定位,相对定位和固定定位。

position 属性用于指定一个元素在文档中的定位方式。
position:
relative 相对定位
absolute 绝对定位
fixed 固定定位

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

相对定位relative

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

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

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

相对定位的用途:
1.微调位置。
2.做绝对定位的参考系。(子绝父相)
在这里插入图片描述

绝对定位absolute

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

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

绝对定位的盒子会寻找最近的定位祖先元素,并以它为参考系。
1.最近的祖先元素,不一定非是父元素。
2.不一定是相对定位,也可以绝对定位等。只要包含定位信息。

一般情况下都是设置子绝父相。
父盒子设置相对定位(零偏移),子盒子设置绝对定位。
在这里插入图片描述

粘性定位sticky

1.粘性定位不脱标。
2.与fixed(固定)不同,left等属性不是设置位置的。
3.left right等属性与浏览器的最小边界值。

解释:不脱离文档流,当滚动到这个位置时就一直距离浏览器顶部100px在这里插入图片描述

固定定位fixed

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

固定定位会脱标。

position:fixed;

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

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

静态定位static(不常用)

position :static

静态定位/常规定位/自然定位

作用:使元素定位于常规流/自然流中

特点:

忽视top、bottom、left、right、z-index,是这些关键字作用失效

案例:

<style>
.box{
	height: 100px;
	width: 100px;
	border: 2px solid;
	text-align: center;
	line-height: 100px;
	position: relative;
	top: 10px;
}
</style>
<body>
        <div class="box">box</div>
        <div class="box">box</div>
        <div class="box">box</div>
</body>

效果:每一个div都偏移10px
在这里插入图片描述

.box:nth-child(2){
	position: static;
	border-color: red;
}

加上这个属性后:第二个盒子就回到了原来的位置
在这里插入图片描述

去除鼠标事件

pointer-events: none 

pointer-events: none;理解:你可以看的到某个元素,但是你无法摸的着,点击不到,点击会穿透触发到下层的元素
display:none; 是你摸不着,但是你也看不见。

最简单的使用场景是:给某个box1盒子设置样式和内容,然后定位遮住在另一个box2上,点击box1会触发点击box2的事件。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值