针对不同浏览器的CSS黑客攻击

时间:2010-10-11 19:11:24

标签: css

任何人都可以帮助我。我是css造型的新手。我有一个css文件,其中所有的样式都存在于我正在尝试构建的asp.net网站。但是它在安装了IE 7的服务器上工作正常,当我尝试使用chrome,firefox或IE 8及以上版本查看它时,它会扭曲网站的外观。

我需要根据客户端浏览器更改边距。我该如何实现这一目标?我听说有一个“if”条件解决方案。意味着我必须在我的项目中编写单独的css文件,并根据浏览器包含正确的文件?我只是更改基本的CSS来检测浏览器并选择合适的样式吗?

我想根据客户端浏览器为分部选择不同的定位。顺便说一句,我正在研究asp.net 2.0。

现有代码:

#page   
{  
background-image: url('C:/Program Files (x86)/some-path-here/Images/img1.jpg');  
}  

我正在尝试这样做:

html>/**/body #page   
{  
background-image: url('C:/Program Files (x86)/some-path-here/Images/img1.jpg');  
}  

但是img1没有为IE 8和firefox加载。它适用于IE 7。

我尝试使用我的html文件中的以下代码将IE 7作为我的测试目标:

<!--[if IE 7]&GT;         身体{
                background-color:红色;
             } <![endif]--&GT;

然而,当我在IE 7上测试页面时,它只显示“背景颜色:红色”;文本。这是为什么?我在这条有条件的陈述中遗漏了什么吗?它只是采用文本而不采用背景颜色。感谢。

5 个答案:

答案 0 :(得分:3)

您可以为符合标准的浏览器(Chrome,Safari,Firefox等)编写代码,然后为Internet Explorer添加conditional comments

修改

作为一个侧面,请看Eric Myers' CSS reset。这是一个很好的资源。

答案 1 :(得分:0)

IE的条件格式:http://www.quirksmode.org/css/condcom.html

就Hacks而言,你可以通过在IE 6/7的CSS属性前面使用_来为某些浏览器(例如IE)编写无效标记,但它会使你的CSS按规范无效 - 它仍然可以正常运行。 / p>

答案 2 :(得分:0)

请查看CSS Browser Selector插件,而不是条件评论和非标准的简单CSS黑客攻击。这个jQuery允许你为CSS文件本身内的每个浏览器编写不同的规则,没有标准的不准确性,也没有条件注释。它甚至可以让您在不同的操作系统上定位不同的浏览器。

对于IE,你会写:

.ie .myDiv
{
   background-color: #f00;
}

对于webkit浏览器:

.webkit .myDiv
{
   background-color: #bar;
}

然后IE(所有版本)和Webkit浏览器将显示不同的背景颜色。您也可以选择多种浏览器:)

答案 3 :(得分:0)

我将在下面提到我在Oodles Technologies工作时学到的浏览器的一些CSS黑客攻击。

我要在这里列出它们,因为有些属性会在基于webkit的浏览器中产生问题,比如safari,chrome和IE。我们假设我们可以使用这个css代码:

针对Chrome和Safari的CSS:

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> @media screen and (-webkit-min-device-pixel-ratio:0) {
    /* Safari and Chrome, if Chrome rule needed */
    .selector { property:value; }

    /* Safari 5+ ONLY */
    ::i-block-chrome, .selector { property:value; }
}
 </span></span>

CSS目标Safari 9,但仅限于iOS

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> /* Safari 9+ (iOS Only) */
@supports (-webkit-text-size-adjust:none) and (not (-ms-accelerator:true)) {
     .selector { property:value; }  
}
 </span></span>

CSS仅限目标Firefox

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> @-moz-document url-prefix() {
    .selector { property:value; }
}
 </span></span>

仅限CSS目标IE10

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
/* IE10+ specific styles go here */
    .selector { property:value; }
}
 </span></span>

仅限CSS目标IE9

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> <!--[if IE 9]>
<link rel="stylesheet" type="text/css" href="css/ie.css" media="screen" />
<![endif]-->
 </span></span>

仅限CSS目标IE8

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> <!--[if IE 8]>
<link rel="stylesheet" type="text/css" href="css/ie8.css" media="screen" />
<![endif]-->
 </span></span>

仅限CSS目标IE7

<span style="font-size:16px;"><span style="font-family:arial,helvetica,sans-serif;"> <!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="css/ie7.css" media="screen" />
<![endif]-->
 </span></span>

希望你找到这些有用的

答案 4 :(得分:-1)

CSS黑客的受欢迎程度正在下降。您应该使用CSS重置启动您的CSS。您可以阅读有关重置选项in this thread的更多信息。