【问题标题】:Why margin:2.5px does not work? How to solve this problem为什么 margin:2.5px 不起作用?如何解决这个问题呢
【发布时间】:2011-01-16 18:02:24
【问题描述】:

为什么margin:2.5px 不起作用?在我的代码中的一种情况下,我想在 IE6 条件 CSS 中提供 margin:2.5px 以解决 IE 双边距问题,而我的默认 css 具有 margin:5px 但在 IE6 css margin:2.5pxmargin:2px 中创建相同的边距。那么如何在两个浏览器上获得相同的margin

这是默认屏幕CSS的代码

    #newsHeadline LI 
{font-weight: bold; 
list-style-position: inside; 
font-size: 13px;
margin: 5px 0px;
width: 320px; 
line-height:
normal; list-style-type: disc; 
position: relative}

这是我正在编写的条件 css 代码#newsHeadline LI {margin: 2.5px 0px}

编辑:2 月 15 日

如果 margin:2.5px 不起作用,那么如何在浏览器 IE 和 FF 中获得相同的边距?有没有其他办法?

【问题讨论】:

    标签: css xhtml internet-explorer-6 cross-browser


    【解决方案1】:

    虽然很多人认为像素是不可分割的,因此小数像素值没有意义,但CSS standard 实际上并没有排除小数值。实际上,它表明当使用高分辨率设备时,CSS 像素单元应该映射到更多的设备特定元素。因此,我的阅读是 2.5px 不应该明确错误,只是你可能无法依赖它来做一些有用的事情,尤其是在 Internet Explorer 中。

    【讨论】:

      【解决方案2】:

      因为px 是可能的最小单位。你真的分不开one display point,可以吗?

      编辑:对于您的问题,如果没有干扰背景(即不同的颜色),您可以尝试设置padding 而不是IE6 的边距。

      【讨论】:

      • 哈!这也是他们对原子所说的。你说的我一个字都不信!
      • @Pekka:嗯……你不希望你的 LCD 发电,是吗?然后像素分割是大不不。 @Andrew...你为什么要这样做?
      • @Pekka:从技术上讲,应该可以使用亚像素大小来定位文本。如果使用 ClearText 别名,则可以将文本定位到 1/3 像素。所以我想这是可能的。但仅适用于文本。只是说清楚:我也会避免这种情况,因为它闻起来有问题。
      • CSS 像素与(当前)物理显示技术像素 (emdpi.com/csspixel.html) 不同,因此设置非整数 px 值可能有用,例如如果您希望用户使用浏览器的缩放功能。但是,浏览器将转换为整数像素边界以进行最终显示以避免模糊(抗锯齿)显示。
      • 接受的答案不正确。请参阅stackoverflow.com/a/2262161/543738(下)和stackoverflow.com/a/9080685/543738 以获得更好的答案。
      【解决方案3】:

      关于像素的不可分割性:现代浏览器中的缩放功能带来了“逻辑像素”的概念。一个足够聪明的缩放实现可以而且应该使用小数像素......

      【讨论】:

        【解决方案4】:

        您始终可以将框设置为display: inline,但这并不总是您想要的。双边距影响块级元素。

        正如@Andrew Moore 指出的那样,如果您在主样式表中使用它,它将不会是未来的证明,应该包含在 IE6 样式表中。谢谢。

        此外,在某些情况下,您可以使用内边距代替边距,因为内边距不会加倍。但是,填充会影响布局和盒子模型的不同属性。

        【讨论】:

        • -1: 将display 更改为inline 现在只能工作,直到浏览器决定遵循有关此事的规范。 inline 元素不能有设置的宽度和高度,它们的尺寸是根据它们的内容和父元素的当前 line-height 计算的。
        • 这就是为什么我说“但这并不总是你想要的”意味着他想在 IE6 条件注释中删除它。我应该更清楚。感谢您指出这一点:D
        • @Andrew Moore -- 在仅限 IE 的样式表中使用“display: inline”是处理 IE 双页边距错误的公认方法。由于该技术只会被有问题的损坏的 Microsoft 浏览器看到和解释,因此不存在“未来失败”的问题。
        • @Pointy:在这种情况下,这很好,但答案在被编辑之前,不包含该信息,并建议在全球范围内应用display: inline
        • @Andrew:事实并非如此。如果浮动元素,它将成为块元素,并且 display 属性无效。我很确定这符合规范。
        【解决方案5】:

        你可能只需要修复鱼

        <ul
        ><li>content 1</li
        ><li>content 2</li
        ></ul>
        

        记住每个 ul/ol 或 li 之间没有空格

        【讨论】:

          【解决方案6】:

          像素是屏幕上显示的最小单位。由于无法显示更小的内容,因此无法将项目放置在屏幕上的小数像素位置。

          【讨论】:

          • 我可以向您展示如何在 LCD 屏幕上以 1/3 像素的增量水平移动黑白像素(在倒置背景上)。 ClearType 所做的事情。
          • 有趣。它是如何工作的?它是否访问像素或其他东西的单个 RGB 元素?
          • 没错。如果所有三种颜色都点亮,无论它们的顺序如何,白色像素仍然是白色的。 RGB、GBR 或 BRG...
          • 很酷,但我想知道它是否(或将永远)可供我们可怜的 html 黑客使用,或者它是否需要对图形系统的低级访问才能获得任何好处。
          【解决方案7】:

          为什么 margin:2.5px 不起作用?

          正如其他人已经指出的那样,根据定义,像素是最小的单位,因此根据定义不能进一步划分。

          那么如何在两个浏览器上获得相同的边距?

          通常的解决方法是在有问题的元素上设置display: inline;。事实上,如果你愿意,有些人建议只对所有浮点数应用内联修复,确保该修复仅适用于 IE5 和 IE6(例如通过使用条件 cmets),因为在这些浏览器中没有已知的副作用。

          【讨论】:

          • -1:现在没有副作用,直到浏览器决定遵循有关此事的规范。 inline 元素不能有固定的宽度和高度,它们的尺寸是根据它们的内容和父元素的当前 line-height 计算的。
          • @RegDwight - 显示:内联;没有解决问题
          猜你喜欢
          • 1970-01-01
          • 2023-02-02
          • 2022-12-26
          • 2020-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-11-28
          • 2013-02-03
          相关资源
          最近更新 更多