我想在页面上设置一个方形div(红色框)默认情况下。当用户将鼠标悬停在其上时,第二个div应显示为半透明的黑色背景和一些文本/内容。我试图在他的网站上模仿Devon Stank's project section。
我现在的代码增加了默认方形红框的高度,第二个div没有覆盖整个红框。代码有什么问题?
.project-box {
position: relative;
width: 30%;
padding-top: 30%;
overflow: hidden;
margin-right: 20px;
margin-bottom: 15px;
display: inline-block;
}
.default-box {
background-color: red;
}
.hover-content {
position: relative;
width: 100%;
height: 100%;
padding-top: 30%;
overflow: hidden;
display: inline-block;
}
.default-hover {
opacity: 0;
-webkit-transition: 0.5s;
-moz-transition: 0.5s;
-o-transition: 0.5s;
-ms-transition: 0.5s;
transition: 0.5s;
background-color: rgba(0, 0, 0, 0.5);
}
.default-box:hover .default-hover {
opacity: 1;
}

<div class="default-box project-box">
<div class="default-hover hover-content">hello</div>
</div>
&#13;
答案 0 :(得分:0)
height: 100%;
, height
将不会对该元素起作用
此外,如果您坚持position: relative
并在父级上加padding
,则无法完全覆盖。
如果您想覆盖所有.project-box
(父级),无论其padding
值是什么,
我建议你对孩子使用absolute
定位:
(我是通过添加新课程.veil
完成的,但可以在现有课程中完成)
.project-box {
position: relative; /* ADDED so that the absolute positioning refers to this parent */
width: 30%;
padding-top: 30%;
overflow: hidden;
margin-right: 20px;
margin-bottom: 15px;
display: inline-block;
}
.default-box {
background-color: red;
}
.hover-content {
/* REMOVED position and sizes */
padding-top: 30%;
overflow: hidden;
display: inline-block;
}
.default-hover {
opacity: 0;
transition: 0.5s;
background-color: rgba(0, 0, 0, 0.5);
}
.default-box:hover .default-hover {
opacity: 1;
}
/* ADDED this class */
.veil {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
<div class="default-box project-box">
<!-- Added a class for the child here -->
<div class="default-hover hover-content veil">hello</div>
</div>
希望它有所帮助。
答案 1 :(得分:0)
这是因为您在主容器上定义了padding-top
,因为主容器没有指定高度,内部元素上的height:100%
也不起作用。
您可以将填充保留在内部元素内和/或增加它:
.project-box {
width: 30%;
margin-right: 20px;
margin-bottom: 15px;
display: inline-block;
}
.default-box {
background-color: red;
text-align:center;
}
.hover-content {
padding-top: 30%;
padding-bottom: 30%;
}
.default-hover {
opacity: 0;
transition: 0.5s;
background-color: rgba(0, 0, 0, 0.5);
}
.default-box:hover .default-hover {
opacity: 1;
}
&#13;
<div class="default-box project-box">
<div class="default-hover hover-content">hello</div>
</div>
&#13;
答案 2 :(得分:-1)
在这里,它可以帮到你,尝试一下。
.project-box {
position: relative;
width: 30%;
height:100%
}
.default-box {
background-color: red;
}
.hover-content {
position: relative;
width: 100%;
height: 100%;
text-align:center;
padding-top: 30%;
}