在图像叠加层上填充 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;
}
但我无法让它工作。即使没有使用框大小技巧。
我觉得这个问题真的很简单哈哈
提前致谢。
问候,
沃特
您可以将 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>
我想在图像上创建一个叠加层,但它需要有一个 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;
}
但我无法让它工作。即使没有使用框大小技巧。
我觉得这个问题真的很简单哈哈
提前致谢。
问候,
沃特
您可以将 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>