【发布时间】:2019-12-04 00:44:21
【问题描述】:
我有一个 DIV 用作“分隔符”。
要求:
- 该分隔符应放在标题的底部。
- 我需要该分隔符跨越整个视口宽度。
- 我需要使用
box-shadow对其进行样式设置。
问题:
- 我有一个外部布局 DIV,它将所有内容限制为
max-width = 500px; - 我的标题不是
fixed(它很粘,所以滚动后才变成fixed)。它以relative开头,所以我可以absolute定位分隔符。 - 我不得不用
position: absolute和width: 100vw来制作分隔符DIV,所以让它跨越整个视口。
问题
- 如果我使用
border-bottom属性,它会按预期工作。它跨越视口的整个宽度(第一个 sn-p)。 - 但它不适用于
box-shadow(不显示任何内容。第二个 sn-p)。为什么?在这种情况下是否可以使用box-shadow?
SNIPPET:与border-bottom
.layout {
width: 100%;
max-width: 500px;
margin: auto;
}
.header {
height: 120px;
background-color: lightblue;
position: relative;
}
.separator {
position: absolute;
width: 100vw;
height: 3px;
top: 100%;
border-bottom: 1px solid black;
/*box-shadow: 0 4px 3px -3px black;*/
left: 50%;
transform: translate(-50%, -50%);
}
.main {
height: 150px;
background-color: lightgreen;
}
<div class="layout">
<div class="header">
Header
<div class="separator"></div>
</div>
<div class="main">
Main
</div>
</div>
SNIPPET:不适用于box-shadow
.layout {
width: 100%;
max-width: 500px;
margin: auto;
}
.header {
height: 120px;
background-color: lightblue;
position: relative;
}
.separator {
position: absolute;
width: 100vw;
height: 3px;
top: 100%;
/*border-bottom: 1px solid black;*/
box-shadow: 0 4px 3px -3px black;
left: 50%;
transform: translate(-50%, -50%);
}
.main {
height: 150px;
background-color: lightgreen;
}
<div class="layout">
<div class="header">
Header
<div class="separator"></div>
</div>
<div class="main">
Main
</div>
</div>
【问题讨论】:
-
我可以在
header上自行设置 box-shadon。这就是我在需要“粘性”标题之前所做的事情。但是现在我的标题以static / relative开头,并且在滚动之后才变成fixed。当它在fixed“阶段”时,就没有什么神秘之处了。它肯定会跨越整个视口。但是当它是static / relative时,我的外部布局 div 会限制它的宽度。我的计划 B 是摆脱 Layout div 并将max-width属性传递给它的孩子。但我喜欢在一个地方控制我网站的max-width的想法。