CSS with if/then browser logic

2019-02-14 03:48发布

For browsers < IE7, I want to use a certain style attribute, while for other browsers I'd like to use another. Can I do this using a single css file, or do I have to do if then logic to include an ie hack css file?

7条回答
甜甜的少女心
2楼-- · 2019-02-14 04:24

You can use CSS Expressions to some extent.

See http://gadgetopia.com/post/2774 for some examples. These don't get around conditional CSS attributes per se, but they do allow you to dynamically vary the values of CSS attributes.

查看更多
做个烂人
3楼-- · 2019-02-14 04:29

Here's an example how you can include an IE6-specific CSS to override specific CSS classes for IE 6 or lower:

<link rel="stylesheet" type="text/css" href="/css/screen.css" title="MySiteStyle" media="screen" />
<!--[if lte IE 6]>
<link rel="stylesheet" type="text/css" href="/css/screen-ie6.css" title="MySiteStyle" media="screen" />
<![endif]--> 

Alternatively, you can do it on per-element basis like this:

<!--[if (!IE) | (gt IE 6)]>
<div class="header">
<![endif]--> 
<!--[if lte IE 6]>
<div class="ie6_header">
<![endif]--> 

MSDN has some more details about IE Conditional Comments support.

查看更多
ら.Afraid
4楼-- · 2019-02-14 04:35

You could use CSS hacks. But you shouldn't.

查看更多
等我变得足够好
5楼-- · 2019-02-14 04:37

The following page will show you 6 CSS hacks specifically for IE7. You shouldn't use them, but they're the easiest way for getting the exact right look for your website.

查看更多
叼着烟拽天下
6楼-- · 2019-02-14 04:44

You could use conditional comments:

<!--[if lt IE 7]>
  <style>
    /*your style for IE <=6*/
  </style>
<![endif]-->

<![if !IE | (gte IE 7)]>
  <style>
    /*your style for other browsers*/
  </style>
<![endif]>

I've found it to be the cleanest solution for this kind of thing.

查看更多
做自己的国王
7楼-- · 2019-02-14 04:47

on the jQuery tip check out this plugin: http://jquery.thewikies.com/browser/

a plugin to do what ghills suggests, this is a nice clean way to go.

查看更多
登录 后发表回答