【问题标题】:Is there a way to make a div the same size on all browsers?有没有办法让所有浏览器上的 div 大小相同?
【发布时间】:2014-05-13 22:22:57
【问题描述】:

有时需要 DIV 具有特定大小以确保布局对齐,但通常似乎无法对 CSS 进行微调以确保它在所有主要浏览器中都正确放置。

例如,这个简单的JSFiddle 显示了几个选项卡,这些选项卡选择了选项卡下方显示的 div。为了使它看起来更像是您正在使用选项卡将部分拉到表面,它与部分略微重叠,没有下边框,因此选项卡和部分看起来是相同的。

问题是标签的高度必须准确,否则错觉就会被破坏。在此示例中,选项卡在最新的 Firefox、Safari(最后一个 PC 版本)和 Chrome 中是正确的大小,但在 Opera 中缩短了一个像素,因此它不会覆盖文本部分的顶部边框(详细信息 div)和两个像素在 IE 10 中很小,因此选项卡和主要部分之间实际上存在间隙。

我知道我可以创建一个单独的样式表,只为 IE 和 Opera 等加载,但我宁愿避免它,因为它会增加维护网站的工作量。

来自 JSFiddle 的 HTML:

<div class="product-details-page">
    <div class="details-tabs">
        <div class="tabs">
            <div class="description selected">Description</div>
            <div class="deliveryOptions">Delivery Options</div>
        </div>
        <div class="details">
            <div class="description show">A big description of a product. Might go over several lines and will be very "descriptive".</div>
            <div class="deliveryOptions">We just chuck it in Santa's bag when he isn't looking.. <br>Delivery is only once a year but it's FREE! ;)</div>
        </div>
    </div>
</div>

来自 JSFiddle 的 CSS

.product-details-page .details-tabs {
    margin-top: 15px;
}
.product-details-page .details {
    border: 1px solid #808080;
    padding: 5px;
}
.product-details-page .details-tabs .tabs > div {
    border: 1px solid grey;
    border-bottom: none;
    cursor: pointer;
    display: inline-block;
    padding: 5px;
    -moz-user-select: none;
    -ms-user-select: none;
    -webkit-user-select: none;
    user-select: none;
}
.product-details-page .details-tabs .tabs > div:hover {
    background-color: #FF0000;
    color: #FFFFFF;
}
.product-details-page .details > div {
    display: none;
}
.product-details-page .details > div.show {
    display: block;
}
.product-details-page .details-tabs .tabs {
    height: 26px;
}
.product-details-page .details-tabs .tabs .selected {
    background-color: #FFFFFF;
    color: #000000;
    -webkit-text-shadow: 0 0 7px #FF0000;
    text-shadow: 0 0 7px #FF0000;
}
body {
    font-family:"arial,?helvetica,?sans-serif";
    font-size: 12px;
}

【问题讨论】:

  • 哦,我确实发现它似乎是导致更改的文本。如果我删除文本并调整填充以补偿它似乎在所有浏览器中都可以正常工作,例如jsfiddle.net/5P53V/1

标签: html css internet-explorer firefox


【解决方案1】:

尝试在您的标签上设置一个固定的line-heightline-height 的默认值是特定于浏览器的,它可能会导致轻微的偏移。典型值为1.2

事实上,您自己在评论中意识到了这一点;)应该归咎于文本,上面的line-height 应该可以解决它。

【讨论】:

  • 好的,这是进步。我将 line-height 更新为 1.3em,起初我认为它已解决,但后来我意识到它现在可以在 IE、Firefox 和 Opera 中使用,但现在 Chrome 小了一个像素,Safari 也是如此。 :(jsfiddle.net/5P53V/2
  • 试试line-height: 16px - 对于像这样的精确值,像素值可能是个好主意。 line-height: 1.2(注意:没有单位)一般来说是一个好主意,可以让文档看起来更一致。
  • 解决了。感谢 Niet the Dark Absol。还要感谢有关 line-height 特定于浏览器的信息,它解释了很多这样的问题! :) jsfiddle.net/5P53V/3
  • 您能否解释一下为什么我应该使用没有特定单位的文档级别行高,而它显然不能解决一致性问题?只指定像素(例如 15 像素)不是更好吗?
  • 它有帮助。字体渲染通常是不一致的(并且是浏览器用来尝试变得更好的东西之一,因为它更易于阅读等)。使用无单位的行高至少有助于标准化。
猜你喜欢
  • 2017-06-08
  • 1970-01-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
相关资源
最近更新 更多