css绝对定位被width 100%的元素挤走

发布于 2022-09-07 22:42:33 字数 1395 浏览 9 评论 0

容器内有三个元素:左右各有一个div position为absolute,中间一个img width:100%,发生问题:

html:

<section class="display">
    <div class="left"><</div>
    <img src="pic1.jpg" title="picture carousel" alt="none" />
    <div class="right">></div>
</section>

css:

.display,.dots{
    position: relative;
    width: 600px;
    top: 50%;
    left: 50%;
    margin: 0 0 0 -300px;
    text-align: center;
}
.display{
    border: 1px solid silver;
    height: 300px;
    margin: -150px 0 0 -300px;
}
.left,.right{
    display: inline-block;
    position: absolute;
    height: 100%;
    width: 100px;
    border: 1px solid steelblue;
    line-height: 300px;
    font-size: 3em;
    opacity: 0;
}
.left:hover,.right:hover{
    cursor: default;
    opacity: 0.5;
    background-color: #eee;
}
.left{
    left: 0;
}
.right{
    right: 0;
}
img{
    height: 100%;
    width: 100%;
}

当img的width是100%时,左边的div(覆盖在图片上的透明div)
图片描述
右边的div:
图片描述
当img的width是99%时,左边的div
图片描述
右边的div:
图片描述
第二张图片好像在说明,position:absolute的元素被width:100%的元素挤走了!
为什么会这样?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

做个少女永远怀春 2022-09-14 22:42:33

绝对定位元素在没有明确给它指定 topleftrightbottom 的情况下,默认会处于当它作为普通块级元素时所在的位置。 建议你把 right div元素的right值先拿掉,看的更明显。

解决方法就是明确给出absolute元素的 topleftrightbottom中的任意两项值。

北恋 2022-09-14 22:42:33
<section class="display">
    <div class="left"><</div>
    <div class="right">></div>
    <img src="pic1.jpg" title="picture carousel" alt="none" />
</section>

换下位置就行了,因为先铺的是图片,所以right的>被img给挤走了

柳若烟 2022-09-14 22:42:33
.right{
    top:0;
    right:0
}

写了绝对定位的情况,一般手动写好left/right/top/bottom值比较靠谱 它们都属于不同的流的按理来说不存在挤出去的问题

屋顶上的小猫咪 2022-09-14 22:42:33

既然定位就要考虑到左右按钮和图片层级:z-index

欢你一世 2022-09-14 22:42:33

img的大小会影响left或者right的位置吗?left和right已经脱离元素流了,不太明白你说的

眼睛会笑 2022-09-14 22:42:33

top: 0;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文