gpt4 book ai didi

javascript - css:重叠具有绝对位置的响应图像

转载 作者:行者123 更新时间:2023-11-28 02:45:23 24 4
gpt4 key购买 nike

我有两个带有背景图像的 div,这两个 div 具有相同的图像,但每个具有不同的颜色。图片是波形

假设 div1 的图像是灰色的,div2 的图像是绿色的。

必须做的是在开始时显示带有 image1 的 div。 div2 不可见(宽度设置为 0)。然后页面上会发生一些事情,必须显示进度。然后根据进度用Javascript增加div2的宽度覆盖div1。

因此目标是根据进度,X% 的空间显示绿色图像,其余部分显示灰色图像

因此,两个 div 需要位于相同的位置,当然需要相同的大小。

它应该是什么样子的例子:

enter image description here

我试过这样的:

HTML:

<div class="left" id="container">
<div class="image original" style="background-image: url(/PATH/TO/IMAGE)">
</div>
<div class="image green" style="background-image: url(/PATH/TO/IMAGE_GREEN)">
</div>
</div>

CSS:

.image {
position: absolute;
top: 0;
height: 100%;
width: 100%;
background-repeat: no-repeat;
}



#container{
position: relative;

.original {
width: 100%;
}

.green, .blue{
width: 0%;
}
}

使用 Javascript,我会增加绿色的宽度。这已经可以工作了,但我的问题是现在背景图像比 div 容器大。所以不是整个图像在 div 容器中可见。我必须添加

background-size: 100% auto

到 .image 类,以便整个图像包含在 div 中。

但如果我这样做,图像就会有响应。因此,如果我现在将 div2 的宽度从 0 增加到 100%,则在此过程中,div2 的背景图像将不会与 div1 的背景图像完全重叠,因为整个图像被压缩在较小的 div2 容器中。

然后它看起来像这样:

enter image description here

但他们需要匹配。

我怎样才能实现这样的目标?

最佳答案

听起来您想创建一个进度条,它看起来像一个背景图像,根据进度完成的百分比水平着色。与其使用 2 个 div,不如使用 1 个同时具有背景图像和透明渐变的 div,并像这样设置渐变动画:

HTML:

<div class="progress"></div>

CSS:

.progress {
width:800px;
height:150px;
border:10px solid #555;
background-image:
linear-gradient(
to right,
rgba(0, 255, 0, 0.45),
rgba(0, 255, 0, 0.45) 50%,
rgba(0,0,0,0) 50%,
rgba(0,0,0,0)
),
url('https://placeimg.com/800/150/animals/grayscale');
}

然后您可以使用 JS 为渐变应更改为透明的位置重新分配新值的 background-image 属性。

使用 JS 的完整示例: http://codepen.io/zesposi/pen/apyNGq

关于javascript - css:重叠具有绝对位置的响应图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41838043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com