CSS z-index 属性 不起作用
CSS z-index property doesn't work
我正在尝试使用 "filter" 属性 为 div(背景图片)提供悬停效果。但是它对另一个应该结束的div(我的文字)产生了影响。
我应用了 z-index 属性(没有忘记我的 divs 的位置)但它不起作用。你会看到,我的文字也很模糊,这是不应该的。你能告诉我我的代码有什么问题吗?
这是显示我的问题的代码笔:https://codepen.io/Gillian-D/pen/qmqEQy
HTML
<div class="container">
<div class="row">
<div class="col-sm-6 left_part-padding">
<div class="left_part">
<div class="left_part_content">
Left part
</div>
</div>
</div>
</div>
CSS
.container {
margin-right: auto;
margin-left: auto;
}
.left_part {
height: 40vh;
position: relative;
z-index: 0;
background-image: url(img/book2.jpeg);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
background-color: #000;
box-shadow: 0 50px 60px 0 rgba(0,0,0,.35);
border-radius: 10px;
}
.left_part:hover {
-webkit-filter: blur(5px);
filter: blur(5px);
-webkit-transition: .5s ease-in-out;
position: relative;
z-index:0;
}
.left_part_content:hover {
color: #fed136;
position: relative;
z-index: 2;
}
.left_part-padding, .right_part-padding, .bottom_part-padding {
padding-left: 10px;
padding-right: 10px;
}
.left_part_content {
color: white;
font-family: "Raleway", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-size: 1.2rem;
font-weight: 400;
letter-spacing: .300em;
margin-right: -.300em;
text-align: center;
vertical-align: middle;
line-height: 40vh;
position: relative;
z-index: 2;
}
非常感谢!
当您在元素上添加效果时,大多数情况下它们的子元素也会受到影响,因此在这种情况下,您可以为 background-image
使用伪元素
更改了 CSS 条规则
.left_part {
height: 40vh;
position: relative;
background-color: #000;
box-shadow: 0 50px 60px 0 rgba(0,0,0,.35);
border-radius: 10px;
}
.left_part::before {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
background-image: url(http://lorempixel.com/500/200/nature/1/);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
background-color: #000;
border-radius: 10px;
}
.left_part:hover::before {
-webkit-filter: blur(5px);
filter: blur(5px);
}
看这里:
https://codepen.io/anon/pen/EmNPVZ
我把文本部分元素从待模糊的背景中取出来div,现在它们有相同的父元素。接下来我以不同的方式解决了居中,通常的方式(绝对位置,顶部和左侧 50%,transform: translate(-50%, -50%)
。然后我将 pointer-events: none;
应用到文本层,以便它下面的悬停可以文字。我添加了一个影响文本的不同悬停规则 - 请参阅我的代码笔。HTH
我正在尝试使用 "filter" 属性 为 div(背景图片)提供悬停效果。但是它对另一个应该结束的div(我的文字)产生了影响。 我应用了 z-index 属性(没有忘记我的 divs 的位置)但它不起作用。你会看到,我的文字也很模糊,这是不应该的。你能告诉我我的代码有什么问题吗?
这是显示我的问题的代码笔:https://codepen.io/Gillian-D/pen/qmqEQy
HTML
<div class="container">
<div class="row">
<div class="col-sm-6 left_part-padding">
<div class="left_part">
<div class="left_part_content">
Left part
</div>
</div>
</div>
</div>
CSS
.container {
margin-right: auto;
margin-left: auto;
}
.left_part {
height: 40vh;
position: relative;
z-index: 0;
background-image: url(img/book2.jpeg);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
background-color: #000;
box-shadow: 0 50px 60px 0 rgba(0,0,0,.35);
border-radius: 10px;
}
.left_part:hover {
-webkit-filter: blur(5px);
filter: blur(5px);
-webkit-transition: .5s ease-in-out;
position: relative;
z-index:0;
}
.left_part_content:hover {
color: #fed136;
position: relative;
z-index: 2;
}
.left_part-padding, .right_part-padding, .bottom_part-padding {
padding-left: 10px;
padding-right: 10px;
}
.left_part_content {
color: white;
font-family: "Raleway", Helvetica, Arial, sans-serif;
text-transform: uppercase;
font-size: 1.2rem;
font-weight: 400;
letter-spacing: .300em;
margin-right: -.300em;
text-align: center;
vertical-align: middle;
line-height: 40vh;
position: relative;
z-index: 2;
}
非常感谢!
当您在元素上添加效果时,大多数情况下它们的子元素也会受到影响,因此在这种情况下,您可以为 background-image
更改了 CSS 条规则
.left_part {
height: 40vh;
position: relative;
background-color: #000;
box-shadow: 0 50px 60px 0 rgba(0,0,0,.35);
border-radius: 10px;
}
.left_part::before {
content: '';
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
background-image: url(http://lorempixel.com/500/200/nature/1/);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
background-color: #000;
border-radius: 10px;
}
.left_part:hover::before {
-webkit-filter: blur(5px);
filter: blur(5px);
}
看这里:
https://codepen.io/anon/pen/EmNPVZ
我把文本部分元素从待模糊的背景中取出来div,现在它们有相同的父元素。接下来我以不同的方式解决了居中,通常的方式(绝对位置,顶部和左侧 50%,transform: translate(-50%, -50%)
。然后我将 pointer-events: none;
应用到文本层,以便它下面的悬停可以文字。我添加了一个影响文本的不同悬停规则 - 请参阅我的代码笔。HTH