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

标签 javascript html css

我有两个带有背景图像的 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/

相关文章:

javascript - HTML 在点击时显示图像

javascript - 将 json HashMap 加载到 javascript 对象中

javascript - typescript 访问修饰符

javascript - 根据输入表单中输入的内容分别弹出不同的表单

javascript - 是否可以使用 HTML/CSS 设置功能正常的 "contact us"页面?

javascript - 使用jquery的不同颜色的导航菜单

javascript - react / react Hook : Need to run a function onLoad within React Hooks component

html - 如何在图像前面显示菜单项?

HTML5 Canvas 网格不渲染

javascript - 当我需要将来自其他资源的 HTML 代码添加到我的页面时如何防止 CSS 泄漏