【问题标题】:Unable to get IE10 to match Chrome and Firefox display无法让 IE10 匹配 Chrome 和 Firefox 显示
【发布时间】:2013-04-26 21:48:27
【问题描述】:

我有一个 asp.net 4.0 应用程序,我正在尝试平衡所有三种浏览器。内容与 Firefox 和 Chrome 一样排列,但在 IE10 中显示时,文本元素会变得更大,并且不再在其布局中正确流动。奇怪的是,IE8 显示正确,兼容模式下的 IE10 也是如此,但使用

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8"/> 
or 
<meta http-equiv="X-UA-Compatible" content="IE8"/> 

没有效果(使用它作为头部的第一个元素。)

asp.net 4.0 有一个修补程序,它为 IE10 添加了用户代理(没有它,IE10 在基本模式下显示),但这似乎已被似乎已经应用的 Windows 更新所取代(修补程序结果导致安装被阻止。)此处描述了此问题,ASP.NET website looks different on IE10

目前我不确定还有什么可能导致该问题。下面来一张图,用IE10以上的Chrome外观来做个对比:

http://i.imgur.com/QRDS3ws.png

两个浏览器都处于 100% 缩放模式,但 IE10 显然让一切都变大了。

这是显示段的代码和 CSS:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<title>Commitment Details</title>
<link href="Styles/StyleSheet.css" rel="stylesheet" type="text/css" />    
</head>
<body>
  <form runat="server">
  <asp:FormView ID="FormView1" runat="server" CellPadding="4" CellSpacing="2" EnableModelValidation="True" GridLines="Both" CssClass="Formview">
    <ItemTemplate>    
    <label style="width:auto">Commitment Workseet For:</label> 
    <asp:Label ID="lblPageInfo" runat="server" CssClass="Right"/>       
    <ol class="header">
      <li><label style="font-weight: normal;"><%# Eval("cus_name") + "#" + Eval("cmt_cusno") %></label></li>
      <li><asp:Button id="btnNextPage" runat="server" Enabled="false" Style="background-image: url(images/greyrightarrow.png)" CssClass="arrows" /></li>
      <li><asp:Button id="btnPrevPage" runat="server" Enabled="false" Style="background-image: url(images/greyleftarrow.png)" CssClass="arrows" /></li>
      <li><asp:Button ID="btnBack" runat="server" Text="Selection List" CssClass="Right" OnClientClick="location.href='Selection.aspx'; return false;" /></li>
      <li><asp:Button ID="btnHelp" runat="server" Text="Help" CssClass="Right" OnClientClick="location.href='docs/CWDocumentation.doc'; return false;" /></li>
      <li><asp:Button ID="btnUpdateCmt" runat="server" Text="Update Commitment" CssClass="Center" 
          OnClientClick="window.open('UpdateCommitment.aspx','_blank','height=310,width=630,scrollbars=0,location=no,toolbar=0,menubar=no'); return false;" /></li>
    </ol>   

这里是相关的 CSS:

body 
{
  width: 768px;
  text-align: center;
  margin: 0 auto;
  font-family:Arial;
  font-size:small;
}
.SelectionView
{
  text-align: left;
  border-style: none;            
}
.Formview
{
  background-color: #CCCCCC;
  border-color: #999999;
  border-style: solid;
  border-width: 3px;
  color: black;
}
.Center
{
  float: right;
  margin-right:50px;
}
.Right
{
  float: right;
}
.arrows
{
  float: right;
  width: 36px;
  height: 24px;
}
.header 
{
  height: 2em;
  background-color: #000000;
  color: white;
  clear:both;
  margin: 0px;
  padding: 0px;
  list-style-position: inside;
  vertical-align: middle;
}
.header li 
{           
  display: inline;
  line-height: 2em;
}
li 
{
  list-style: none;
}

关于我接下来应该看什么的任何建议,或解决方案的想法?

【问题讨论】:

  • 您是否尝试过添加视口元数据并设置初始比例? 不知道这是否会有所帮助,但也许值得一试。
  • @tomca32 我怀疑问题是特定于移动设备的,但如果是这样,则视口元标记将无济于事,因为 IE 不支持它。它使用@viewport 规则:dev.opera.com/articles/view/…timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design
  • @tomca32 cimmanon 是正确的。这不是移动问题(无论如何它都可以在 iPad 上正确显示。)出于好奇,我确实尝试过,但没有效果(建议使用视口版本。)

标签: asp.net css cross-browser


【解决方案1】:

模拟版本(IE=EmulateIE8) 告诉浏览器使用文档类型来确定如何呈现内容。没有文档类型的页面将在quirks mode 中呈现。但是,使用 html5 文档类型,几乎可以将所有浏览器切换到 content standards mode这就是您的代码可能失败的原因

在大多数情况下,这条线可以完成这项工作:

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

当 Internet Explorer 遇到此行时,它会将正在使用的引擎更改为第一个 Chrome Frame(如果已安装插件),然后更改为 Edge(浏览器支持的最高文档模式)。

在 Intranet 上运行的任何网站都将以兼容模式运行,Microsoft 的 Compatibility List 上的任何网站也将更改为兼容模式。

如果你遇到问题,你最好检查一下你的 CSS 中的某些东西是否会导致这个问题 浏览器不一致!


编辑(添加了一些 CSS 提示)

我只是列出一些你的 css 中可能出错的地方,以便重现意想不到的结果!我无法测试这些,所以很遗憾,我不会告诉你要更改的任何特定属性以使其开箱即用!我将根据您在问题中附加的图片写下一些内容!

至少在我看来,不同的是按钮上的字体粗细、对齐以及最终的字体大小!

因此您使用的是有序列表和按钮,我 99% 确信这会立即解决您的特定问题(但嘿,它是 Internet Explorer,没人知道)!

ol li { text-align:left }

button { font-size: 100%; font-weight: normal }

如果是这样,那太好了...但请继续阅读以防止类似的事情再次发生!

如果没有:

  • 某些浏览器在以 quirks 模式呈现时会重新创建一些遗留行为,其中表(但这也可能适用于其他元素)无法正确继承,如图所示 here

  • 您在文件中未覆盖的每个 css 属性都可能在每个给定浏览器上具有不同的默认值!有一种常见的做法是使用 css 重置模板,如 Eric Meyer’sHTML5 DoctorYUI 和许多其他模板(这里有一点 collection)!他们所做的只是重置一些关键的 CSS 属性,留下一个平等的基础!

  • 根据我之前的观点,声明font-size:smallfont-weight: normal 可以用不同的方式解释,无需任何属性重置! small 不是跨浏览器字体大小单位!

这里有一点提示你可以尝试什么来使它工作,当然,并不是所有的礼仪都是必需的,但我希望你能尝试一下:

html, body { font-size: 100%; font: inherit }

body { line-height: 1 }

ol li { text-align:left }

button { 
    font-size: 100%;
    font-weight: normal;
    margin: 0;
    vertical-align: baseline;
    *vertical-align: middle;
    line-height: normal;
    -webkit-appearance: button;
    cursor: pointer;
    *overflow: visible;
}

【讨论】:

  • 不幸的是那行没有效果。该页面使用的所有 CSS 都在我的原始帖子中。我没有看到任何应该有问题的地方,但我对 CSS 并不是特别有经验,可能会遗漏一些东西。
  • 上面的 CSS 没有解决问题——任何一个——但你在字体大小方面是对的:小不是跨浏览器的标准。当我将字体大小设置为 9pt 时,显示元素在我测试的所有三个浏览器中变得一致。我必须对重置的东西做一些阅读,我以前遇到过但没有尝试过使用它。我真的需要对 CSS 做一些研究,因为我肯定会用到它。 :)
  • @Ben 我真的很高兴你找到了解决方案 :) 正如我所说,我无法在这台计算机上测试代码!
猜你喜欢
  • 1970-01-01
  • 2023-03-08
  • 2013-09-21
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-20
相关资源
最近更新 更多