【问题标题】:What would cause a <p> element to not span full width in the Android browser什么会导致 <p> 元素在 Android 浏览器中不跨越整个宽度
【发布时间】:2012-04-07 15:34:41
【问题描述】:

我被要求看一个奇怪的问题,但无法弄清楚。基本上

元素通常会跨越整个宽度,因为它们是块元素,但在某些页面上它们似乎不想要。我已经在默认的 ICS Android 和 Dolphin 上对此进行了测试,并且两者都在播放。 这个问题总结了问题,只有答案不起作用:Why won't the Android browser span this paragraph over the full browser width?

更新:一个奇怪的解决方案?如果我设置以下 CSS p{ background:#fff;它解决了问题,这可能会导致一些奇怪的问题。问题是,我需要背景是透明的。

【问题讨论】:

  • 这确实是一个奇怪的问题。不能将其归因于样式的特殊性和顺序。事实上,背景不应该以任何方式影响宽度。我认为您刚刚遇到了一个奇怪的错误,并且由于大多数布局要复杂得多,因此其他人还没有看到它。
  • 如果您认为您的问题总结了您的问题,请帮助改进其答案,而不是重复发布。

标签: android html css width


【解决方案1】:

这是一个 hack,但我的解决方案是设置背景:url('');在我的段落和标题标签上。我需要我的背景是透明的,所以我不能设置颜色。

奇怪的设置背景:rgba(0,0,0,0);由于某种原因也不起作用?

如果您想安全并实际提供有效的图片网址,您可以使用:

背景: url(数据:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAASUVORK5CYII=);

这是一个 base64 100% 透明的单像素背景。

我会注意到,这种情况只有在我将视口设置为 640 时才开始发生,这样移动网站就可以适用于任何移动浏览器。

据我所知,这似乎是一个视口缩放无法正常工作的错误。

【讨论】:

  • 如果可以的话,我会投票两次。当我应用一种颜色来直观地验证 div 的宽度是否正确时,我偶然发现背景颜色解决了这个问题,使用透明图像背景然后节省了一天!
  • 非常感谢!我的标签标签上的background:url(''); 确实有效,并使android 上的标签获得了适当的宽度。安卓上的一个令人讨厌的错误!
  • url('') 一个给我带来了灰色问题,但我发现至少有两种其他方式:故意畸形的background: url(data:) 在古代平板电脑上没有渲染延迟,应该让其他浏览器跳过规则和如果你很绝望,还有background: rgba(255,255,255,0.01)
【解决方案2】:

这是一次旅行。
我将我的 Android 设置为不自动调整页面,解决了这个问题。
然后我将手机设置为自动调整页面,在我的 css background: black; 中添加到我的 &lt;p&gt; 并且它已修复。
另一个奇怪的事情是,在我的样式表中,如果我设置p{ text-align: center}&lt;p&gt; 会像我预期的那样一直跨越,我的手机设置为自动调整页面并且没有背景设置。我也做了text-align: right,按预期工作。然后我改了text-align: left,现在又坏了。这里非常非常奇怪的问题......

【讨论】:

    【解决方案3】:

    &lt;li&gt; 标记也是如此。同样的问题。我通过在我的 CSS 样式表中添加 p, li {background: url('');} 解决了这两个问题。

    【讨论】:

    • 标签也有同样的问题。
    【解决方案4】:

    您可以简单地使用&lt;span&gt;,而不是使用&lt;p&gt;&lt;div&gt;&lt;td&gt; 中的其他标签,就可以解决问题。似乎从android 4开始,默认的互联网浏览器有一些解释问题。我之前在 android 2 上测试过,它工作得很好,没有任何“调整”。

    【讨论】:

      【解决方案5】:

      根据这个问题和你之前的问题,似乎没有明显的理由说明它不应该起作用。但是,过去发生的事情是,如果您没有(在某些未命名的浏览器中)声明特定属性,则这些属性不会像应有的那样 inherit

      因为没有理由 &lt;p&gt; 应该以这种方式呈现,并且以前曾经是一个已知问题,我建议将 &lt;body&gt;width 设置为 100%,因为它可能是失去继承权的情况。

      编辑:替代

      针对上述问题的另一个流行解决方案是将违规元素包装在具有指定 width 的类 container&lt;div&gt; 中。两者都是典型的可行解决方案,可以显着提高跨浏览器的一致性。

      希望这会有所帮助, 模糊逻辑

      【讨论】:

      • 感谢您的回复,我已经尝试了这两种解决方案,但没有效果。
      • 我只是在 body 中添加了 width:100%,在容器 div 中添加了 width:100% 和 width:inherit,它们都作为标记中的硬编码样式属性,但没有任何效果。在这个问题上摸不着头脑。
      • 多么奇怪。对不起,伙计。你抓住了我……我想其他人也一样。我会玩弄它,看看我是否找不到解决方案,但我是一个狂热的 CSS 编码器,这是我在消失后看到的最奇怪的事情 floats
      • 我想你可以用display:block 声明它们,但这太荒谬了。
      • 也试过了,可以用。我什至检查了它不是像缓存问题那样愚蠢的东西,它不是。我仍然无法克服这样一个事实,即如果我为元素添加背景颜色,它会起作用......太奇怪了。
      【解决方案6】:

      我在 2 个不同的网站上遇到了同样的问题。我必须通过设置透明的 png 背景图像来解决这个问题。

      在我的例子中,p 元素的宽度正好是设备屏幕的宽度——因此旋转设备会改变 p 元素的宽度。

      即使在 p 上使用 !important 设置固定宽度也被忽略了!

      【讨论】:

        【解决方案7】:

        这可能不是您需要的答案,但我发现如果您提供 CSS display:inline; 属性而不是 display:block; 默认值,它就不会再跨越整个屏幕。我不完全确定这是否适用于 Android(我没有),但我的笔记本电脑上遇到了类似的问题,这解决了它。

        【讨论】:

          【解决方案8】:

          我找到了一个真正有效的解决方案!!这实际上是android浏览器“Auto-Fit Pages”中的一个设置。关闭它肯定会解决这个问题。

          迈克

          【讨论】:

          • 没有解决办法,必须由用户自己关闭,不能通过代码完成。
          猜你喜欢
          • 1970-01-01
          • 2011-10-03
          • 2014-04-23
          • 1970-01-01
          • 2014-03-27
          • 1970-01-01
          • 2019-04-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多