html图片遮住字了,css 内容为何被遮挡住了?

本文探讨了z-index在解决元素层级问题时的常见误区,强调了positioned elements的重要性,并通过实例解析了层叠上下文和元素渲染顺序。同时揭示了overflow属性对内容修剪的影响。

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

z-index

内容被遮挡住,第一反应会是层级关系是不是不对,然后就会拼命增加目标元素的z-index,然后可能就是死活没有用。那就慢慢来理清一下。

z-index 按照最通俗的用法就是解决元素的层级关系问题。

但其实我们用的时候可能经常会觉得很奇怪,为什么它就不起作用了呢。

有一个经常忽略的但是很重要的前提是:

positioned elements(即position属性值是非static的元素)。

默认值为auto,即元素不会建立一个新的本地堆叠上下文。当前堆叠上下文中新生成的元素和父元素堆叠层级相同。

一般遇到的是,代表生成的元素在当前堆叠上下文中的堆叠层级。

先借张图看看:

371c40dbc15b65026832305964bb32de.png

在这个例子中,每个被定位的元素都创建了独自的层叠上下文,因为他们被指定了定位属性和 z-index 属性。层叠上下文的层级如下:

Root

DIV #1

DIV #2

DIV #3

DIV #4

DIV #5

DIV #6

注意 DIV#4,DIV #5 和 DIV #6 是 DIV #3 的子元素,所以它们的层叠完全在 DIV #3 中被处理。一旦 DIV #3 中的层叠和渲染处理完成,DIV #3 元素作为一个整体传递给 root 元素,并相对兄弟元素层叠。

分辨出层叠的元素在 Z 轴上的渲染顺序的一个简单方法是将它们想象成一系列的版本号,子元素是其父元素版本号之下的次要版本。通过这个方法我们可以轻松得看出为什么一个 z-index 为 1 的元素(DIV #5)层叠于一个 z-index 为 2 的元素(DIV #2)之上,而一个 z-index 为 6 的元素(DIV #4)层叠于 z-index 为 5 的元素(DIV #1)之下。在我们的例子中(依照最终渲染次序排列):

● Root

○ DIV #1 - z-index 为 5

○ DIV #2- z-index 为 2

○ DIV #3- z-index 为 4

■ DIV #4- z-index 为 6,在一个 z-index 为 4 的元素内层叠,所以渲染次序为 4.6

■ DIV #5- z-index 为 1,在一个 z-index 为 4 的元素内层叠,所以渲染次序为 4.1

■ DIV #6- z-index 为 3,在一个 z-index 为 4 的元素内层叠,所以渲染次序为 4.3

总结:

给一个 HTML 元素定位和 z-index 赋值创建一个层叠上下文,(opacity 值不为 1 的也是相同)。

层叠上下文可以包含在其他层叠上下文中,并且一起创建一个有层级的层叠上下文。

每个层叠上下文完全独立于它的兄弟元素:当处理层叠时只考虑子元素。

每个层叠上下文是自包含的:当元素的内容发生层叠后,整个该元素将会 在父层叠上下文中 按顺序进行层叠。

overflow

一般在写样式的时候,很随手就写下了overflow: auto,目的是想让滚动条在内容溢出的时候出现,但是也正因为这样,才会遇到很多时候,内容就会被莫名其妙地遮挡住了。如下图所示:

9b0d31d47ff1b21e1b9ef24627cc7a21.png

可能遇到内容被挡住,第一反应是甩锅给z-index,一定是层级不够。emmmmmmm,虽然也会有这样的情况,但是如果排除了z-index之外,第二个应该要考虑的是overflow熟悉了。

属性值如下:

visible 默认值。内容不会被修剪,会呈现在元素框之外

hidden 内容会被修剪,并且其余内容不可见

scroll 内容会被修剪,浏览器会显示滚动条以便查看其余内容

auto 由浏览器定夺,如果内容被修剪,就会显示滚动条

inherit 规定从父元素继承overflow属性的值

其实,换个角度可以这么想,auto / scroll的意思是在滚动条可以滚到的地方,内容是不会被修剪得,可如果内容在滚动条滚不到的地方,那就是被修剪了,得用visible啦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值