html - IE 10 将像素添加到行内 block 列表

标签 html css internet-explorer

我正在为一个固定宽度的网站制作一个任务栏。它具有设置为内联 block 列表的链接。它的大小均以像素为单位,非常适合 FF、Opera、Safari 和 Chrome。在 IE10 上,它会将最后一个链接放在新的一行上。

如果我将它缩短几个像素,IE10 看起来不错,但其他 4 个浏览器将在网站宽度不足时停止。我认为 IE 正在某处添加像素,但我不知道如何摆脱它们。

这是 HTML:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <link type="text/css" rel="stylesheet" href="style.css">
</head>
<body>
    <div id="header">
        <div class="fixed">
        <ul>
            <li class="taskbar" id="first"><a href="index.php">ALL</a>
            </li><li class="taskbar"><a href="index.php">GEOGRAPHY</a>
            </li><li class="taskbar"><a href="index.php">SCIENCE</a>
            </li><li class="taskbar"><a href="index.php">ARTS</a>
            </li><li class="taskbar"><a href="index.php">HISTORY</a>
            </li><li class="taskbar"><a href="index.php">SPORTS</a>
            </li><li class="taskbar" id="last"><a href="index.php">MISC.</a></li>
        </ul>
        </div>
    </div>
</body>
</html>

现在是 CSS:

html {
height: 100%;
}
body {
    height: 100%;
    margin: 0;
    padding: 0;
    /* Older Browsers */
    background: -prefix-linear-gradient(top, #FFFFFF, #FFEE88 72px, #FFFFFF);
    /* IE10 */
    background-image: -ms-linear-gradient(top, #FFFFFF, #FFEE88 72px, #FFFFFF);
    /* Mozilla Firefox */
    background-image: -moz-linear-gradient(top, #FFFFFF, #FFEE88 72px, #FFFFFF);
    /* Opera */
    background-image: -o-linear-gradient(top, #FFFFFF, 0%, #FFEE88 72px, #FFFFFF);
    /* Webkit (Safari/Chrome) */
    background: -webkit-linear-gradient(top, #FFFFFF, #FFEE88 72px, #FFFFFF);
    /* Proposed W3C Markup */
    background-image: linear-gradient(top, #FFFFFF 0%, #FFEE88 72px, #FFFFFF 100%);
    /*background: linear-gradient(to bottom, #FFFFFF, #FFEE88 72px, #FFFFFF);*/
}

/* fixed width main body div */
.fixed {
    width: 1000px;
    margin-left: auto;
    margin-right: auto;
}
#header {
    width: 100%;
    background-color: #FFEE66;
}
.fixed ul {
    margin: 0;
    padding: 0;
}
.taskbar {
    display: inline-block;
}
.taskbar:hover {
    background-color: #FFFF99;
}
.taskbar a {
    padding: 0px 40px 0px 20px;
    background-image: url("images/taskbar_arrow.png");
    background-size: 18px 18px;
    background-repeat: no-repeat;
    background-position: 95% 50%;
    margin: 0;
    border-right: 2px solid #FFCC55;
    text-decoration: none;
    color: black;
    font-size: 24px;
    font-family: Tahoma, Geneva, sans-serif;
}
#first a {
    border-left: 2px solid #FFCC55;
    padding-left: 19px;
}

这是请求的 Fiddle,我规范化了 CSS。由于某种原因, fiddle 上的颜色有点乱,但是“杂项”。转到下一个像 IE10 一样。

http://jsfiddle.net/2aa5n/3/

最佳答案

这个我已经看过好几次了。我现在没有确切的答案,但我有一个猜测。您没有为任何导航元素定义实际宽度值,因此文本的实际渲染大小开始起作用。由于 IE 是 Windows 原生的,我认为它利用了更多图形/真实字体系统并呈现更准确的字体。因此,我相信我已经阅读过 IE 中字体更清晰的地方。

这让你、我和其他人都面临着困境。首先,我们应该继续像这样让我们的导航更灵活,还是我们更多地定义实际宽度?

这是独立于 IE 的吗?可能不会,我打赌你会在其他平台上发现类似的问题; MAC、iOS、Linux等

我想我已经选择了自己实际定义宽度。我认为这是一个更安全的选择。

这样想,您在 CSS 中定义了 3 个字体系列。如果平台没有第一个,则转到第二个,然后是第三个,然后是默认平台字体。在那种情况下你的导航是什么样的?每种字体都有自己的大小、字距调整等。因此,我认为掌握自己的领域才能胜出。

关于html - IE 10 将像素添加到行内 block 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19608391/

相关文章:

python - 即使启用了ignoreProtect模式设置,Internet Explorer也未使用selenium启动

internet-explorer - CSS 3 PIE : Not working inside an absolutely positioned (popup) element? 鼠标悬停时移动?

html - 如何隐藏特定标题下的表格列?

javascript - 我的最小日期在 WordPress 的日期选择器中不起作用

html - 如何让数据对齐到html表格行的顶部

javascript - 使用 Google Maps API Javascript 取消对标记的限制

jquery - IE7/8 jquery sortable 导致窗口捕捉到顶部

javascript - JS 定位特定 div 中的图像,即使它们共享类

html - 如何在页面中间将两个 UL 类直接堆叠在一起

css - 在客户端呈现为字符串时主题自定义丢失