【问题标题】:Fixed Positioned Div is extending outside of HTML & Body固定定位的 div 扩展到 HTML 和正文之外
【发布时间】:2013-02-10 23:56:19
【问题描述】:

我正在开发一个响应式网站,当您的宽度低于 800 像素时,菜单将固定在顶部,并带有一个切换下拉菜单。

发生的事情是 div 延伸到 HTML 和 Body 区域之外并添加了一个横向滚动条。我不确定如何解决这个问题。

任何帮助将不胜感激!

这是我的代码

HTML:

<div class="navMobile">
<div class="menuBox">
<div class="navMobileBtn"><img src="<?php echo get_template_directory_uri(); ?>/img/menuBtn.png" /></div>
<ul class="navMobileBox">
  <li><a class="location" href="#">Location</a></li>
  <li><a class="building" href="#">Building</a></li>
  <li><a class="space" href="#">Space</a></li>
  <li><a class="links" href="#">Links</a></li>
  <li><a class="contact" href="#">Contact</a></li>
</ul>
</div>
</div>

CSS:

.navMobile {display:block;}

.navMobile {
    height:auto;
}

.navMobile .menuBox {
    height:auto;
    min-height:40px;
    width:100%;
    display:inline-block;
    position:fixed;
    top:0;
    left:0;
    right:0;
    background:#fff;
    z-index:99999;
}

.navMobile .menuBox ul {
    display:block;
    clear:both;
    height:auto;
    width:100%;
    padding:0;
    margin:0;
    border-top:1px solid #eee;
    font-family: "proxima-nova";
}

.navMobile .menuBox ul>li {
    display:block;
    clear:both;
    padding:10px 0;
    text-align:center;
    border-bottom:1px solid #eee;
}

.navMobile .menuBox ul>li a {
    padding:0;
    margin:0;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    color:#ccc;
    font-size: 0.9em;
    font-weight:500;
    opacity: 1;
}

.navMobile .menuBox ul>li a:hover,.mainnav ul>li a:focus {
    text-decoration: none;
}

.navMobile .menuBox ul>li:last-child a {
    margin-right: 0;
    padding-right: 0;
}

.navMobileBtn {
    clear:both; 
    height:40px;
    width:40px;
}

【问题讨论】:

    标签: css positioning fixed


    【解决方案1】:

    对于像我一样寻求解决方案的任何人,请看这里:

    这个问题是由以下事实引起的:如果主包含元素(body 或 html,取决于浏览器*)未设置为特定的宽度和高度,则其内容可能会超出窗口边界,从而导致文档比窗口大。

    通常这会导致滚动条,这是预期的行为。但是,在固定元素的情况下,它也会通过将右值和底部值移动到主元素的位置而不是窗口的边缘来更改固定元素的起始位置。这使得固定元素可以在窗口内滚动,这与固定元素的行为方式完全相反。

    • 附带说明,一些浏览器默认使用 body 元素滚动内容,而其他浏览器默认使用 html 元素滚动内容。这需要重新设置到正文以获得一致的结果。

    解决方法,将html和body元素的宽高设置为100%,使其保持窗口大小。您还需要专门为边距和良好的测量填充和边框设置标准重置。最后将溢出设置为适当的元素可确保浏览器使用正确的元素来滚动文档。

    html, body {
      position: relative;
      margin: 0;
      border: 0;
      padding: 0;
      width: 100%;
      height: 100%;
      overflow: hidden;
    }
    body {
      overflow: auto;
    }
    

    将此添加到您的重置 css 应该可以解决将来的问题。

    无论如何,这就是为我所做的。希望对其他人有所帮助。

    【讨论】:

      【解决方案2】:

      尝试将这些添加到您的 .css 中

      html {
      width: 100%;
      height: 100%;
      position: relative;
      }
      body {
      width: 100%;
      height: 100%;
      position: relative;
      }
      

      实际上只有其中一个可能会解决您的问题,但我不确定 .. 可能是 body

      【讨论】:

      • 我不知道你的答案是否真的解决了任何问题(希望它确实解决了问题),但结合这些规则是否有意义? html, body {...
      • 抱歉没有解决。你能试试把溢出:隐藏;包装菜单的包装器内的规则?
      • @user1576978 这是我已经尝试过但也没有奏效的东西。因此,为什么我这么难过,我认为这与固定定位有关,但我以前从未遇到过这个问题。这是该网站的链接,您可以自己查看。 [链接]designbyparent.co.uk/10highstreetFinal
      • 你可能会因此恨我,但我只是溢出-x:隐藏;在 html 中,正文规则
      • @user1576978 哈哈,成功了!不知道为什么我没有尝试,我想原来的溢出:隐藏不起作用我认为这也不起作用。非常感谢您抽出宝贵的时间,您帮了大忙!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      相关资源
      最近更新 更多