【问题标题】:Altering CSS for nav bar images to accommodate IE更改导航栏图像的 CSS 以适应 IE
【发布时间】:2017-06-18 13:12:05
【问题描述】:

我的水平导航栏填充了来自包含所有子图像的图像的链接图像;每个导航项图像由较大图像中的像素位置标识。这在 Firefox 和 Safari 中运行良好,但在 IE 中,所有图像在导航栏中的位置太低(只能勉强看到单词的顶部)。两个问题:

  • 如何在 css 中解决此问题,使其与 IE 的较新版本(和当前版本)向后兼容
  • 我需要单独的 IE 样式表吗?

这是 css(仅截断了几个链接):

ul#navbar {
    width: 750px;
    height: 22px;
    margin: 0px;
    padding: 0px;
    text-indent: -9999px;
    border: none;
}
ul#navbar li {
    float: left;
    height: 22px;
    margin: 0px;
    padding: 0px;
    list-style-type: none;
    border: none;
    /*position:absolute;*/
}
ul#navbar li a {
    display: block;
    height: 22px;
    border: none;
}

.home {
    left: 0px;
    width: 78px;
    background-image: url(../images/nav/new_nav.jpg);
    background-repeat: no-repeat;
    background-position: 0px 0px;
}

.classes {

    /*left: 78px; */
    width: 92px;
    background-image: url(../images/nav/new_nav.jpg);
    background-repeat: no-repeat;
    background-position: -100px 0px; 
}

.训练{ 左:170px; 宽度:89px; 背景图片:网址(../images/nav/new_nav.jpg); 背景重复:不重复; 背景位置:-200px 0px; }

【问题讨论】:

  • 欢迎来到 SO。请显示一些代码,这样我们就不必猜测您使用哪种方法来定位图像。
  • 如果没有看到您的标记,很难回答这个问题。我对这种称为 sprites 的方法很熟悉,但我在使用它们时从未遇到过这个问题。

标签: css internet-explorer


【解决方案1】:

我在 IE 6 中使用过 *.html

/** 对于 IE6 / *html #相关产品 { 宽度:300px; 溢出:可见;
} *html #相关产品 ul { 位置:相对; 左:-65px;
} *html #related-products li { 边框:无;
} /
IE6 hack 结束 **/

否则会有 IE 条件 cmets。

http://www.quirksmode.org/css/condcom.html

就单独的样式表而言,您可以创建一个让您的服务器端语言检测浏览器,如果 Internet Explorer 确保您的 IE 被添加,否则您可以将它们添加到现有的 CSS 文件中。我都做了。

【讨论】:

  • @Kim 你可以编辑你的问题,最好把它放在那里。另外,HTML 代码并没有告诉我们任何有关底层 CSS 的信息。
  • @Pekka:好的 - 我已将 CSS 添加到原始评论中!
【解决方案2】:

嗯......我想你不想听到这个,但是:永远不要依赖 HTML/CSS 中的确切像素位置(叠加在 one上的图像映射> 图片是唯一的例外)。

HTML 根本不适合像素精确的设计。根据您的描述,在不支持您似乎依赖的技术之一的浏览器上,甚至不可能优雅地回退。如果屏幕太窄而无法显示完整的导航栏(例如移动设备)怎么办?在最好的情况下,你会得到一个多行导航栏,但根据你的描述,它会被破坏,因为位置是错误的......

【讨论】:

  • ???你能详细说明你的意思吗?在 CSS 中使用像素位置的哪些方面不可靠,在什么情况下?
  • HTML is simply not made for pixel-exact design. 笨蛋。在 HTML 中进行像素精确设计是完全可能的,并且使用像素单位值是完全安全的。是否总是明智是一个不同的问题。 OP 的问题似乎非常具体,并且与 background-position 相关 - 迄今为止我从未遇到过问题,而且我不认为存在根本问题。我们将确定 OP 何时发布一些代码。
  • 关于为什么会这样的长篇大论:简而言之,我已经从别人那里接管了网站,而客户根本不想改变设计,所以我'我能做的非常有限。为了使代码更好(不过,相信我,它比在 MODx 中时要好得多)。我已经把它拉出来了,让它变成静态的。
  • 抱歉,Pekka,但 HTML 最初并不是为精确像素设计而制作的。现在可以使用 CSS,但根据我的经验,最好不要依赖。您总会找到另一个处理您的代码的浏览器稍有不同(例如搜索“IE 三像素错误”)。有一些变通方法,您可以将它用于许多用例,但是创建一个动态设计,使浏览器能够根据客户端功能选择最佳页面呈现将是明智的选择(但是,我承认,它也是一门不以像素为单位思考而是以相对度量来思考的艺术)。
  • 该网站只有 8 页……动态设计是不是有点矫枉过正?老实说,我对此很陌生,需要快速修复,所以真的需要 IE 的解决方法(是的,我意识到这不是最佳的)。如何更改代码来执行此操作?
猜你喜欢
  • 2019-03-16
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-29
  • 1970-01-01
  • 2016-10-13
  • 2015-02-10
  • 1970-01-01
相关资源
最近更新 更多