【问题标题】:White space showing up on right side of page when background image should extend full length of page [closed]当背景图像应延伸整个页面长度时,页面右侧会出现空白[关闭]
【发布时间】:2011-01-06 17:39:03
【问题描述】:

我们的网页背景图片在 iPad/iPhone 上的 FireFox 和 iOS 中的 Safari 中存在问题,页面右侧出现空白。

背景图像在其他浏览器上可以很好地扩展,但我们很难在这些浏览器上扩展浏览器的全长。

请look at our site on FireFox 了解我的意思。

【问题讨论】:

  • 如果您使用的是 bootstrap 或 Foundation 之类的框架,请检查 now 列是否是 body 的第一个子级,但嵌套在另一个具有某种填充 (small-12 f.e.) 的 div 中。跨度>
  • 你解决了吗@Dave?
  • 疯了,不是吗。 6 年后,iOS Safari 仍然显示这个问题。我尝试了许多 CSS 解决方案,但最终不得不求助于使用 jQuery。 stackoverflow.com/a/45009357/391605

标签: html css


【解决方案1】:

我补充说:

html,body
{
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px;
    overflow-x: hidden; 
}

在其他类上方的最顶部插入您的 CSS,它似乎解决了您的问题。

Your updated .css file is available here

【讨论】:

  • 太棒了,刚刚解决了一个困扰我一段时间的错误!
  • 我在使用此代码在 safari iphone 上滚动时遇到问题,它变得非常慢。最后我发现它是 height: 100% 和 overflow-x: hidden 的组合,所以我删除了 height: 100% 并且效果更好。
  • 感谢这就像一个魅力。我一直想知道如何驾驭几乎无限的滚动条。不知道为什么这没有被标记为答案。
  • 我发现引导程序的“行”类给出了一个 {margin-right:-15px} 导致我的页面出现这种情况。
  • 在@JosephK 看来,这个问题通常是由于滥用了 Bootstrap 的容器、行和列对象,它们使用填充和负边距来完美地相互抵消,但只有在正确使用时才能一致.否则就断了!根据我的经验,这是导致右侧空白的最常见原因之一。对于 Bootstrap 的容器、行、列的精彩、直观的解释,包括对此问题和其他问题的讨论,请阅读(不,我没有写):helloerik.com/…
【解决方案2】:

为 Ghost CSS 元素调试您的 CSS。

使用此书签来调试您的 CSS:https://blog.wernull.com/2013/04/debug-ghost-css-elements-causing-unwanted-scrolling/

或者自己直接添加CSS:

* {
  background: #000 !important;
  color: #0f0 !important;
  outline: solid #f00 1px !important;
}

在我的例子中,Facebook Like 按钮导致了问题。

【讨论】:

  • 这个真的派上用场了
  • 绝妙的解决方案!这将帮助您找到问题的根源并正确修复它,而它只需要几行 css。
  • 这应该是 IMO 接受的答案。我敢打赌,大多数人使用 100vw 作为某物的宽度并因此得到这个错误。简单地隐藏溢出是一个次优的解决方案。
  • 这令人印象深刻,在该死的空白处花了 2 个小时,这解决了它。
  • 哇,花了很多时间,只用几行代码就找到了罪魁祸首。谢谢队友:)
【解决方案3】:

在探索了这里提供的一些有用的策略后,我发现我只需要添加 iOS 特定的 CSS(我把它放在我的主 CSS 表的底部。)似乎隐藏溢出-x 是我的答案.我认为如果我的内容变宽,将宽度设置为 100% 会有所帮助。应该注意的是,我只在 iOS 中遇到了这个问题。如果它也在 Firefox 中,则应该只使用 html 和 body 块,因为 @media 专门针对移动设备。

@media
only screen and (-webkit-min-device-pixel-ratio: 1.5),
only screen and (-o-min-device-pixel-ratio: 3/2),
only screen and (min--moz-device-pixel-ratio: 1.5),
only screen and (min-device-pixel-ratio: 1.5){

  html,
  body{
    width:100%;
    overflow-x:hidden;
  }

}

如果这对任何人来说都不正确,请告诉我:)

【讨论】:

  • 这是唯一解决我问题的方法
  • 谢谢 - 对我来说最好的解决方案。也相当不显眼
  • 这解决了问题并对移动空白区有意义
  • 应用后,在 Safari iphone6s 上滚动变得迟钝。我是否缺少移动 Safari 的其他属性以使其顺利运行?
  • 对我来说最好的答案!
【解决方案4】:

这是一个很老的问题,但我想我会加我的 2 美分。我已经尝试了上述解决方案,包括 ghost css,我肯定会保存它以备将来使用。但这些都不适用于我的情况。这是我解决问题的方法。希望这会对其他人有所帮助。

打开检查器(或任何您喜欢的)并从 body 标记中的第一个 div 开始,将 display: none; 添加到该元素。如果滚动条消失,您就知道该元素包含导致问题的元素。然后,删除第一个 css 规则并向下一层进入包含元素。将 css 添加到该 div,如果滚动条消失,您就知道该元素导致或包含有问题的元素。如果添加 CSS 没有任何作用,您就知道不是那个 div 导致了问题,而是容器中的另一个 div 导致了它,或者容器本身导致了它。

这对某些人来说可能太耗时了。幸运的是,我的问题出现在页眉中,但我可以想象如果你的问题出现在页脚或其他地方,这需要一些时间。

【讨论】:

  • 这个方法帮我找到了bug 谢谢
  • 是的,或者你可以去 dom 一层一层隐藏最高级别的 div,然后进入它们里面..等等
  • 当你有像height: 0 或height: 1 这样的奇怪元素时,这确实是成功解决根本问题的唯一方法。就我而言,我发现原因是 Drupal 7 核心中一个错误的“不可见”类:drupal.org/node/2664214
【解决方案5】:

overflow-x: hidden; 非常适合我。

【讨论】:

    【解决方案6】:

    问题出在文件中:

    style.css - 第 721 行

    #sub_footer {
        background: url("../images/exterior/sub_footer.png") repeat-x;
        background: -moz-linear-gradient(0% 100% 90deg,#102c40, #091925);
        background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#091925), to(#102c40));
        -moz-box-shadow: 3px 3px 4px #999999;
        -webkit-box-shadow: 3px 3px 4px #999999;
        box-shadow: 3px 3px 4px #999999;
        padding-top:10px;
        font-size:9px;
        min-height:40px;
    }
    

    删除线:

    -moz-box-shadow: 3px 3px 4px #999999;
    -webkit-box-shadow: 3px 3px 4px #999999;
    box-shadow: 3px 3px 4px #999999; 
    

    这基本上只为页脚提供阴影渐变。在 Firefox 中,这是导致问题的第一行。

    【讨论】:

      【解决方案7】:

      我也遇到了同样的问题(Website body background rendering a right white margin in iPhone Safari),发现将背景图片添加到<html> 标签可以解决问题。

      之前

      body {background:url('images/back.jpg');}
      

      之后

      html, body {background:url('images/back.jpg');}
      

      【讨论】:

        【解决方案8】:

        显然 (-o-min-device-pixel-ratio: 3/2) 引起了问题。在我的测试站点上,它导致右侧被切断。我在github 上找到了一个暂时有效的解决方法。 Using(-o-min-device-pixel-ratio: ~"3/2") 似乎工作正常。

        【讨论】:

          【解决方案9】:

          我看到这个问题已经按照一般标准回答,但是当我查看您的网站时,我注意到仍然有一个水平滚动条。我也注意到了这个原因: 你已经使用了代码:

          .homepageconference .container {
          padding-left: 12%;
          }
          

          与声明元素宽度为 100% 的代码一起使用,导致元素总宽度为屏幕大小的 112%。要解决此问题,请删除填充,将填充替换为 12% 的边距以获得相同的效果,或者将元素的宽度(或最大宽度)更改为 88%。这发生在 main.css 的第 343 行。希望这会有所帮助!

          【讨论】:

          • 或者,将box-sizing 属性设置为border-box。
          【解决方案10】:

          我遇到了同样的问题,所以尝试了一些方法。其中一个似乎对我有用 - 删除宽度并在 body 标签中添加一个浮点数。

          可能不适用于所有实例,但在我最近遇到的情况下,隐藏内容元素上的溢出是不行的......

          【讨论】:

          • 我必须将 html, body 设置为 width: 0 以消除 Firefox 顶部的幽灵元素。
          【解决方案11】:

          这个问题已经存在了一段时间,但我能找到的解决方案都没有对我有用(ipad 也有同样的问题),但我管理了自己的解决方案,它应该适用于我想象的大多数人。

          这是我的代码:

          html {
             background: url("../images/blahblah.jpg") repeat-y;
             min-width: 100%;
             background-size: contain;
          }
          

          享受吧!

          【讨论】:

            【解决方案12】:

            我在 iPad 上遇到了右侧的白线,并且仅在水平位置。我使用了一个固定位置的 div,背景设置为 960px 宽,z-index 为 -999。由于媒体查询,此特定 div 仅显示在 iPad 上。然后将内容放入一个 960 像素宽的 div 包装器中。 此页面上提供的答案对我的情况没有帮助。 为了解决白色条纹问题,我将内容包装器的宽度更改为 958px。瞧。 iPad 上水平位置不再有白色右白条纹。

            【讨论】:

              猜你喜欢
              • 2013-01-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-03-19
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2013-12-06
              相关资源
              最近更新 更多