我试图创建一个"个人资料"页眉的背景是个人资料照片的模糊版本的页面类型。我无法让叠加层正常工作。
我在这里有一个例子:jsbin
问题在于我无法将背景叠加层停在白色边框线上。 ' .bg img' element获取body元素的高度/宽度,而不是div.profile-header元素的高度/宽度100%。为什么呢?
CSS:
.profile-header {
display: block;
text-align: center;
border-bottom: #fff 1px solid;
.bg {
position: fixed;
z-index: -1;
width: 100%;
height: 100%;
opacity: 0.7;
img {
position: absolute;
height: 100%;
width: 100%;
top: 0;
bottom: 0;
right: 0;
left: 0;
-webkit-filter: blur(15px);
-moz-filter: blur(15px);
-o-filter: blur(15px);
-ms-filter: blur(15px);
filter: blur(15px);
}
}
.profile-content {
z-index: 1;
}
.profile-img {
padding: 30px 5px;
display: block;
img {
max-width: 150px;
margin: 0 auto;
border-radius: 50%;
}
}
}
HTML:
<body>
<div class="profile-header">
<div class="bg"> <img src="http://www.twoorist.com/resources/images/uploads/images/97714346f8b6a5c10d716643eee28a8e.jpg"></div>
<div class="profile-content">
<div class="profile-img">
<img src="http://www.twoorist.com/resources/images/uploads/images/97714346f8b6a5c10d716643eee28a8e.jpg">
</div>
<div class="header-content">
<h2>John Doe</h2>
</div>
</div>
</div>
<p>Some content down here.</p>
</body>
答案 0 :(得分:3)
您可以通过清理position
属性来完成大部分工作。
.profile-header {
position: relative;
}
.profile-header .bg {
position: absolute;
/* this will crop the blurry edge to contain it perfectly above the white line */
overflow: hidden;
}
.bg
div的位置现在将相对于.profile-header
div的位置(与其包含的内容一样高)设置,与之前相对于它设置的位置不同页面的位置(与页面上的所有内容一样高)。
你可以在这里看到一个例子:
答案 1 :(得分:1)
我已经整理了一点定位,而不是使用position:fixed
帮助,但主要的诀窍是使用隐藏在父级上的overflow
。
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
text-align: center;
background: lightgrey;
}
.profile-header {
border: 1px solid grey;
position: relative;
}
.bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
overflow: hidden;
}
.bg img {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: auto;
z-index: -1;
-webkit-filter: blur(10px) sepia(100%) hue-rotate(50deg);
filter: blur(5px) sepia(100%) hue-rotate(50deg);
}
.profile-img img {
border-radius: 50%;
}
<div class="profile-header">
<div class="bg">
<img src="http://www.twoorist.com/resources/images/uploads/images/97714346f8b6a5c10d716643eee28a8e.jpg">
</div>
<div class="profile-content">
<div class="profile-img">
<img src="http://www.twoorist.com/resources/images/uploads/images/97714346f8b6a5c10d716643eee28a8e.jpg">
</div>
<div class="header-content">
<h2>John Doe</h2>
</div>
</div>
</div>