box-sizing:border-box => 对于 IE8?

Posted

技术标签:

【中文标题】box-sizing:border-box => 对于 IE8?【英文标题】:box-sizing: border-box => for IE8? 【发布时间】:2012-07-21 10:31:32 【问题描述】:

我想要box-sizing: border-box 用于div 标签。

对于 Mozila Firefox 我已经尝试过

        -moz-box-sizing: border-box; 

对于 IE(Internet Explorer) 我已经尝试过以下两种方法

        -ms-box-sizing: border-box; 
            box-sizing: border-box;

但它无法在 IE(Internet Explorer) 中运行。 虽然我已经为 Internet Explorer 应用了box-sizing: border-box;,但它在元素宽度中添加了边框和填充。为什么会这样?

应该是什么问题?请帮助和建议我。

注意:我使用的是 Internet Explorer8Windows7 Ultimate

页面代码:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="MainPage.aspx.cs" Inherits="MainPage" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="x-ua-compatible" content="IE=8"/>

    <title></title>
    <style type="text/css">
        *
        
            box-sizing: border-box; /*it gives error:Validation (CSS 2.1): 'box-sizing' is not a known CSS property name. */
            -ms-box-sizing: border-box; 
            -moz-box-sizing: border-box; 
            -webkit-box-sizing: border-box; 
            
        body
        
            background: lightblue;
            color: #000000;
            font-family: Trebuchet MS, Arial, Times New Roman;
            font-size: 12px;
        
        #header
        
            background: #838283;
            height: 200px;
            width: 1200px;
        
        #wrapper
        
            background: #FFFFFF;
            margin: 0px auto;
            width: 1200px;
            height: 1024px;
        
        #navigation
        
            background: #a2a2a2;
            float: left;


            margin: 0px 0px;
            width: 1200px;
            height: 25px;
            padding: 3px;
        
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div id="wrapper">
        <div id="header">
            <h1>
                Header goes here</h1>
            <br />
            <h2 style="font-size: 60px;">
                ST ERP by Shanti Technology</h2>
        </div>
        <div id="navigation">
        </div>
    </div>
    </form>
</body>
</html>

【问题讨论】:

验证错误无关紧要 - box-sizing 是 CSS3 的一部分,而不是 CSS2.1。如果您真的关心验证,请注意前缀也不会针对任何版本的 CSS 进行验证。 我可以更改 CSS 的版本吗? 你检查我的答案了吗? -ms-box-sizing:边框框;不需要 Visual Studio 允许您针对 CSS3 进行验证。见***.com/questions/3931801/… 和***.com/questions/4810401/… Windows 7 和 IE8。哎呀。 【参考方案1】:

IE8 支持box-sizing 的无前缀版本,但与所有“新”CSS 功能一样,它仅在标准模式下支持。 -ms-box-sizing 从未被任何版本的 IE 使用过。

确保您的页面具有 doctype 声明以在浏览器中触发标准模式。您还应该将未加前缀的box-sizing 置于所有前缀之后,而不是置于它们之前,并去掉-ms-box-sizing,因为它真的不需要。

【讨论】:

这是我页面上声明的文档类型==> ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 我可以看看你的页面吗?一定有其他原因导致了这个问题。 查看代码...对于navigation id,我应用了padding: 3px;,它添加到我应用navigation id 的元素的宽度中注意:IE8 中的这个问题。跨度> 我在您的代码中没有看到任何 box-sizing。我已经提到 IE8 支持无前缀版本 - 您是否尝试将其放在您的实际代码中以查看它是否有效? @BoltClock 似乎 IE 无法正确应用 box-sizing: border-box;。在现代浏览器上查看此示例,然后在 IE8 jsbin.com/nuzayivuroyu/2/edit?html,css,output 上查看。编辑:这似乎是因为min-width 属性,如果您将其更改为with,则它在IE8 中可以正常工作,请参阅jsbin.com/vapasehiziku/1/edit?html,css,output【参考方案2】:

如果你同时使用 min-width 或 min-height,box-sizing 在 IE8 (Standards mode) 中会卡为“content-box”,即指定border-box 无效。

【讨论】:

这是解决我的问题的答案 - 我的元素上的 min-height 导致边框框在 IE8 中失败。希望这个答案会在适当的时候被投票通过,因为它应该得到更多的关注(对于我们这些至少仍然背负着 IE8 支持的人......)【参考方案3】:

IE8+ 支持 box-sizing。

支持:

    Opera 8.5+  : box-sizing
    Firefox 1+  : -moz-box-sizing (still prefixed, though some are pushing to have it unprefixed for [Firefox 29][2]).
    Safari 3    : -webkit-box-sizing (unprefixed in modern versions)
    IE8+        : box-sizing

Please review this jsFiddle

【讨论】:

我在您的代码中看不到 box-sizing。在其中使用box-sizing: border-box;,然后重试。 box-sizing 属性在 CSS3 中,这就是您收到验证错误的原因。 -1;声称 box-sizing 属性在现代版本的 Firefox 中没有前缀的说法是错误的,即使在今天也是如此。版本 26,截至我发布此日期的最新版本,仍然不支持无前缀 box-sizing 属性,发布此答案一年半后。 @RDX jsFiddle 不错,但它不支持 IE8(无论如何仅在草稿模式下)。因此,对于 IE8,可能会使用此 jsbin.com/nuzayivuroyu/1(您可以将此链接添加到您的答案中)【参考方案4】:

box-sizing 支持 IE8+

你可以看到here

【讨论】:

我收到以下错误:- Validation (CSS 2.1): 'box-sizing' is not a known CSS property name. @Pritesh box-sizing 未在 CSS2.1 - dev.w3.org/csswg/css3-ui/#box-sizing 中定义。【参考方案5】:

你不见了box-sizing: border-box; -

*
  box-sizing: border-box;

  -moz-box-sizing: border-box; 
  -webkit-box-sizing: border-box; 

IE 不需要供应商特定的 CSS -ms-box-sizing: border-box; 不需要

小提琴 - http://jsfiddle.net/ctHh3/

【讨论】:

【参考方案6】:

把这个放到你的页面中,问题就解决了

<meta http-equiv="X-UA-Compatible" content="IE=edge"/>

【讨论】:

以上是关于box-sizing:border-box => 对于 IE8?的主要内容,如果未能解决你的问题,请参考以下文章

* { box-sizing: border-box; } 的作用

css box-sizing:border-box

css box-sizing:border-box

box-sizing重置

box-sizing: border-box;的作用

width height 与 box-sizing : border-box ,content-box 的关系