IE8 div对齐问题

Posted

技术标签:

【中文标题】IE8 div对齐问题【英文标题】:IE8 div alignment issue 【发布时间】:2013-08-30 18:05:18 【问题描述】:

寻求有关 IE8 布局问题的帮助。完全披露,我更像是一名后端开发人员,我的 CSS 和 html 技能有点生疏,所以我编写的代码很可能只是糟糕或/或错误:)

我有一系列包含超链接的 div。超链接包含两个 div,为超链接内的文本提供样式。我看到的问题是,在 Chrome、FF 和 IE > 8 中,此超链接内的文本看起来不错,但在 IE 8 中,超链接内的文本的垂直对齐是关闭的,它看起来比它应该的要低一些。我几乎用尽了我有限的 HTML/CSS 技能来试图做到这一点,所以我希望有人对我需要做些什么来让这件事在 IE8 中看起来正确。

HTML:

<div class="report-description-container report-description-container-left">
  <div class="report-title">
      <img src="1x1_transparent.png" class="arrow"/>
      Report Name
  </div>
  <div class="report-description">
      [Description goes here]
      <div class="report-generate-button-container">
        <a href="/Report/DataExtract"><div class="report-link">Start my&nbsp;</div><div   class="report-link-black">Report now</div></a>
      </div>
  </div>
</div>

CSS:

.report-description 
    margin-left: 0;
    margin-right: 0;
    margin-bottom: 0;
    height: auto;
    padding: 10px;
    font-size: 12px;


.report-generate-button-container 
    margin-top: 30px;
    font-size: 16px;
    background-image: url("sprite.png");
    background-repeat: no-repeat;
    background-position: 0px -80px;
    height: 40px;
    -moz-background-size: 100%;
    -o-background-size: 100%;
    -webkit-background-size: 100%;
    background-size: 100%;


.report-link 
    display: inline-block;
    text-decoration: none;
    color: #000000;
    font-weight: bold;
    padding-left: 25px;
    padding-top: 13px;


.report-link-black 
    display: inline-block;
    text-decoration: none;
    color: #1e90ff;
    font-weight: bold;
    padding-top: 13px;


.report-description-container 
    -webkit-border-radius: 16px;
    -moz-border-radius: 16px;
    border-radius: 16px;
    height: 200px;
    display: inline-table;
    width: 456px;
    margin-bottom: 10px;
    border: 1px solid;
    border-color: #000000;
    background-color: #eaeaea;
    -webkit-box-shadow: 3px 3px 5px #888888;
    box-shadow: 3px 3px 5px #888888;


.report-description-container-left 
    margin-right: 20px;


img.arrow 
    width: 32px;
    height: 32px;
    background: url("1x1_transparent.png") 0 0;

最后是几张截图:

页面在 Chrome、IE10、FF 等中的外观...

页面在 IE8 中的样子...

【问题讨论】:

首先:不能将块元素放入内联元素!!! @wintercounter 如果您的意思是在锚标签中使用 div,由于 HTML5 规范,这是允许的。锚标记可以包含 流内容 元素。 【参考方案1】:

我不知道这是否有帮助但是,这里有两点:

1) 要让它在 IE8 上运行,首先需要声明一个 DOCTYPE,无论是 HTML5 版本 &lt;!DOCTYPE html&gt; 还是 XHTML1.0 版本,例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

此外,为了确保 IE8 未在兼容性视图上运行,最好在 &lt;head&gt; 部分中使用以下元数据:

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

2) IE8 不支持background-size 属性。但是如果你不使用精灵图像,有一个可能的解决方法:

-ms-filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='path_relative_to_the_HTML_file', sizingMethod='scale')";

【讨论】:

Hashem - 感谢您的回复。我已经有了 HTML5 文档类型,但没有 X-UA-Compatible 元标记。添加后,一切正常。 +1!我也错过了元数据!我一放进去,IE8就开始正常运行了!谢谢!【参考方案2】:

试试看

HTML

<a href="/Report/DataExtract">Start my <span>Report now</span></a>

CSS

.report-generate-button-container 
...
...
color: #000000;
font-weight: bold;
padding-left: 25px;
padding-top: 13px;

.report-generate-button-container span 
color: #1e90ff;

【讨论】:

【参考方案3】:

尝试将 css 更改为

.report-link 
    display: inline-block;

【讨论】:

其实我已经把它设置为inline-block,我发布的代码不是最新的。我已经更新了它。不过感谢您的回复!

以上是关于IE8 div对齐问题的主要内容,如果未能解决你的问题,请参考以下文章

input文字垂直居中和按钮对齐问题,兼容IE8

设置DIV行中最后一个DIV的样式

仅在一台机器上出现 HTML 对齐问题(均为 IE8)

如何在适用于 IE7、IE8 和 FF 的 jqGrid 上实现自动换行

css将两个元素水平对齐,兼容IE8

IE8不透明度问题