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 Explorer8 和 Windows7 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?的主要内容,如果未能解决你的问题,请参考以下文章