使边框覆盖最大宽度

时间:2016-06-07 13:25:55

标签: jquery html css twitter-bootstrap css3

我有一个带def f(n): if n>0: print(1/n) else: raise Exception try: f(0) except Exception: print("Error!") 的正文和导航栏。导航栏有一个max-width: 1200px;。向下滚动时导航栏本身消失,向上滚动时再次出现。我刚被要求让顶部边框延伸到完整视口宽度,从而覆盖其包含div的border-top: 1em solid blue;。如果我向主体添加顶部边框并调整导航栏填充以覆盖顶部导航栏,则向上滚动时会因添加的填充而产生间隙。该网站已经上线,我不想打破所有其他样式。有没有办法扩展导航栏的顶部边框而不必更改任何其他内容?

2 个答案:

答案 0 :(得分:2)

正如@Hungerstar所提到的,伪元素在这里是最佳的。

我更喜欢一个涉及100vw宽度伪元素的CSS3解决方案,然后用transform翻译回来。

这消除了身体上overflow的需要。

ul, li {
  margin: 0;
  padding: 0;
  display: inline-block;
}
body {
  margin: 5px 0 0;
}
header {
  position: relative;
  margin: 0 auto;
  max-width: 400px;
  border: 1px dashed #6DA76D;
}
header:after {
  content: ' ';
  position: absolute;
  top: 0;
  left: 50%;
  height: 5px;
  
  transform:translate(-50%,-100%);
  width:100vw;

  background: pink;
}
<header>
  <nav>
    <ul>
      <li>Nav One</li>
      <li>Nav Two</li>
    </ul>
  </nav>
</header>

答案 1 :(得分:0)

您可以使用伪元素并将其拉伸到父元素之外。

<header>
  <nav>
    <ul>
      <li>Nav One</li>
      <li>Nav Two</li>
    </ul>
  </nav>
</header>
ul, li {
  margin: 0;
  padding: 0;
  display: inline-block;
}
body {
  margin: 5px 0 0;
  overflow: hidden;
}
header {
  position: relative;
  margin: 0 auto;
  max-width: 400px;
  border: 1px dashed #6DA76D;
}
header:after {
  content: ' ';
  position: absolute;
  top: -5px;
  right: -99em;
  left: -99em;
  border-top: 5px solid skyblue;
}

这里我们将伪元素绝对定位到父元素。我们通过应用负边距将其拉出父母之外。这些负边距非常大,会导致水平滚动条。你必须使用overflow: hidden;来摆脱它。我在我的示例中的<body>上执行了此操作。

演示JSFiddle