【问题标题】:Missing 4px+ in CSS Calculations w/ FireFox使用 FireFox 的 CSS 计算中缺少 4px+
【发布时间】:2012-07-21 02:35:40
【问题描述】:

为了这个小提琴

http://jsfiddle.net/hNx6E/13/

我认为不同的浏览器对我不知道我正在使用的属性有不同的默认值。

这令人沮丧。当您检查 HTML 时,默认值不可见,属性也不可见。

是否有浏览器的默认属性列表,尤其是 FireFox 和 Safari?

它在哪里?

按钮的高度比输入框大 2px 或更大,而我希望它的高度小 2px。

base、Firefox 和 Safari 有什么区别?

我需要了解这些差异是什么,而不仅仅是用大量 CSS 重置代码来掩盖它们。

谢谢

参考:

SO Similar Issue - Safari

W3 Box Model

【问题讨论】:

  • 您是否尝试过在 Firefox 中使用 Firebug 来查看元素的计算 CSS 属性?那应该告诉您填充/边距/宽度/等。当它没有在 CSS 中明确定义时。
  • 不...好主意...一旦我有机会...平均而言,虽然它是默认(和隐藏)的行高,但它正在抛出一些东西。
  • 行高修复 - jsfiddle.net/hNx6E/23

标签: html css firefox


【解决方案1】:

浏览器将自己的行高应用到您的按钮。添加line-height:16px; 解决了这个问题。 http://jsfiddle.net/hNx6E/20/

【讨论】:

  • 谢谢刚刚从上一篇文章中发现了这一点....不过我会将 em 设置为 1...更好的解决方案。
  • 不确定 em 1 是否有帮助,如果确实告诉我。
  • 1em 效果更好,因为与您设置的任何字体大小相关...是的,它确实有效...我想我也可以使用 100%。
  • 很好,感谢您的解释。确实 1em 是一个更好的解决方案。
【解决方案2】:

如果您将宽度/高度与填充/边框混合,也许您可​​以尝试调整框大小。它会强制浏览器采用宽度/高度值。

http://css-tricks.com/box-sizing/

【讨论】:

    【解决方案3】:

    每个浏览器都有一些默认样式,我们应该首先使用 CSS RESET 覆盖它们,然后根据我们的样式设置样式。

    在样式表的开头添加此代码

    html, body, div, span, applet, object, iframe,
    h1, h2, h3, h4, h5, h6, p, blockquote, pre,
    a, abbr, acronym, address, big, cite, code,
    del, dfn, em, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    b, u, i, center,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td,
    article, aside, canvas, details, embed, 
    figure, figcaption, footer, header, hgroup, 
    menu, nav, output, ruby, section, summary,
    time, mark, audio, video {
        margin: 0;
        padding: 0;
        border: 0;
        font-size: 100%;
        font: inherit;
        vertical-align: baseline;
    }
    /* HTML5 display-role reset for older browsers */
    article, aside, details, figcaption, figure, 
    footer, header, hgroup, menu, nav, section {
        display: block;
    }
    body {
        line-height: 1;
    }
    ol, ul {
        list-style: none;
    }
    blockquote, q {
        quotes: none;
    }
    blockquote:before, blockquote:after,
    q:before, q:after {
        content: '';
        content: none;
    }
    table {
        border-collapse: collapse;
        border-spacing: 0;
    }
    

    【讨论】:

    • “我需要了解这些差异是什么,而不仅仅是用大量的 CSS 重置代码来掩盖它们”
    • CSS 重置无论如何都是悲惨的,增加了所有毫无意义的页面重量,然后不得不返回并重新定义废话,如 b,strong { font-weight:bold; }
    • 你谷歌关于css重置它是每个人都遵循的标准,以避免浏览器不一致。这些不一致是因为每个浏览器的所有标签都有自己不同的默认样式
    • CSS 重置很惨??如果我可以否决该评论,我会的!当您可以为所有浏览器构建相同的产品时,为什么您宁愿以不同的方式处理每个浏览器,从而消除不一致的样式?我会说 2KB 非常值得......
    • 因为我宁愿单独考虑偶尔出现的不一致的优点,也不愿采取彻底消除所有 CSS 默认值的策略(即使是明显的,例如 b、strong 或 ol)。不仅你必须在十几个地方“重置重置”(更多工作),CSS重置会消除你不完全理解后果的重要定义,比如outline属性对于键盘导航的可访问性很重要. snook.ca/archives/html_and_css/no_css_reset
    猜你喜欢
    • 2012-07-19
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 1970-01-01
    • 2015-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多