如何使叠加效果响应图像

时间:2016-05-11 07:08:45

标签: javascript html css media-queries

Responsive Image

enter image description here

你好! 我使上面的图像响应320x767像素屏幕分辨率。我的代码工作正常。

但是,我有一个问题,在图像上创建的阴影效果不是响应性的。我想要的是随着我的图像变小,阴影也应该随图像高度变小。或者它应该表现得很敏感 我该怎么做?

HTML

<body>
<div  class=" background-img">
    <img src="img/learning.jpg" class="img-responsive">
    <div class="overlay">
    </div>
    </div>
</body>

的CSS

.background-img{
    max-width: 100%;
    height: auto;

}

.overlay{
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 10;
    background-color: black;
    opacity: 0.5;
}
@media only screen and (min-width:320px) and (max-width:767px){

  .background-img{
        width: 426px !important;
        height: 320px !important ;
    }
    .overlay{
    position:fixed;
    top: 0;
    left: 0;
    width: 30% !important;
    height: 25%!important;
    z-index: 10;
    position: absolute;
    background-color: black;
    opacity: 0.5;
}

5 个答案:

答案 0 :(得分:2)

您可以尝试使用此代码,而不需要查询以使其响应: https://jsfiddle.net/52ms14gf/1/

.background-img .overlay{
    position: absolute;
    overflow: hidden;
    top: 0;
    left: 0;
}

.background-img .overlay {
    opacity: 1;
    width: 100%;
    height: 100%;
    background-color: rgba(255, 51, 51, 0.5);
}
.container{position:relative;
  }

.container img{width:100%;
 display:block;
 }

答案 1 :(得分:1)

尝试使用此CSS:

.background-img {
    max-width: 100%;
    height: auto;
    position: relative;
}

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    bottom: 0;
    right: 0;
    z-index: 10;
    background-color: black;
    opacity: 0.5;
}

@media only screen and (min-width:320px) and (max-width:767px) {
    .background-img{
        width: 426px !important;
        height: 320px !important ;
    }
}

答案 2 :(得分:1)

我们通常使用略高的值(当你使用10时)将一个z-index声明应用于popout div,以及一个位置:relative;声明导致应用z-index值。 如果你按照我理解的方式改变了代码:

 @media only screen and (min-width:320px) and (max-width:767px){

 .background-img{
    position:relative;
    max-width: 100%;
    height: auto;
 }
 .overlay {
   position: relative;
   top: 0;
   left: 0;
   width: 100% !important;
   height: 100% !important;
   z-index: 10;
   background-color:black;
   opacity: 0.5;
}

答案 3 :(得分:0)

因为您在叠加的高度和宽度上使用%

px

中指定固定的高度和宽度
.overlay{
    position:fixed;
    top: 0;
    left: 0;
    width: 100px !important; // set accordinly
    height: 100px !important;// set accordinly
    z-index: 10;
    position: absolute;
    background-color: black;
    opacity: 0.5;
}
  

%中声明的宽度和高度将根据父级的高度和宽度工作。如果您不希望孩子改变其高度和宽度,只需在px中为所有屏幕定义它。

答案 4 :(得分:0)

我像这样使用 CSS 网格:

.container {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: 1fr;
}

.img-responsive {
    grid-column: 1/2;
    grid-row: 1/2;
    width: 100%;
}

.overlay {
    grid-column: 1/2;
    grid-row: 1/2;
    width: 100%;
}

这在所有屏幕宽度上都运行良好。