在图像叠加层上填充 CSS

Padding on image overlay CSS

我想在图像上创建一个叠加层,但它需要有一个 20 像素的插图。唯一的问题是我在叠加层上使用了宽度:100% 和高度:100%,因此 20 像素的填充不起作用。我接下来尝试的是:

<div class="projectwrapper">
<div class="projectOverlayInset">
    <div class="projectOverlay"></div>
</div>
    <img class="projectImage" src="http://upload.wikimedia.org/wikipedia/commons/6/66/Tower_Bridge_opening_at_night_for_a_ferry.jpg" style="display:block" />
</div>

和 CSS:

.projectwrapper {
position: relative;
padding-bottom: 75%;
height: 0;
overflow: hidden;
}

.projectwrapper img {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
}

img {
max-width: 100%;
margin-left: auto;
margin-right: auto;
border: 0;
}

.projectOverlay {
position: absolute;
z-index: 20;
width: 100%;
height:100%;
top:0;
left:0;
background-color: rgba(0,0,0,0.6);
box-sizing: border-box;
}

.projectOverlayInset {
box-sizing: border-box;
padding: 20px;
}

JSFIDDLE

但我无法让它工作。即使没有使用框大小技巧。

我觉得这个问题真的很简单哈哈

提前致谢。

问候,

沃特

您可以将 absolute 定位更改为叠加层中的容器 projectOverlayInset,填充对您不起作用,因为叠加层不符合 absolute 的流程:

.projectwrapper {
  position: relative;
  padding-bottom: 75%;
  height: 0;
  overflow: hidden;
}
.projectwrapper img {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}
img {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  border: 0;
}
.projectOverlay {
  height: 100%;
  background-color: rgba(255, 0, 0, 0.6);
  box-sizing: border-box;
}
.projectOverlayInset {
  position: absolute;
  z-index: 20;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  box-sizing: border-box;
  padding: 20px;
}
<div class="projectwrapper">
  <div class="projectOverlayInset">
    <div class="projectOverlay"></div>
  </div>
  <img class="projectImage" src="http://upload.wikimedia.org/wikipedia/commons/6/66/Tower_Bridge_opening_at_night_for_a_ferry.jpg" style="display:block" />
</div>

如果我理解正确的话,你根本不需要 inset div。

可以使用 calc :_

定位叠加层并调整尺寸

.projectwrapper {
  position: relative;
  padding-bottom: 75%;
  height: 0;
  overflow: hidden;
}
.projectwrapper img {
  width: 100%;
  height: 100%;
  position: absolute;
  top: 0;
  left: 0;
}
img {
  max-width: 100%;
  margin-left: auto;
  margin-right: auto;
  border: 0;
}
.projectOverlay {
  position: absolute;
  z-index: 20;
  width: calc(100% - 40px);
  height: calc(100% - 40px);
  top: 20px;
  left: 20px;
  background-color: rgba(255, 0, 0, 0.6);
  box-sizing: border-box;
}
<div class="projectwrapper">
  <div class="projectOverlay"></div>
  <img class="projectImage" src="http://upload.wikimedia.org/wikipedia/commons/6/66/Tower_Bridge_opening_at_night_for_a_ferry.jpg" style="display:block" />
</div>