hack(兼容IE及浏览器常用的写法)

hack 分两种  HTML hack  和CSS hack

html hack

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>hack(html hack)</title>
 8 </head>
 9 <body>
10 <!--
11     hack(真够难为不同浏览器去写不同的HTML css样式) 分为两种
12     html hack
13     css hack
14     
15     IE浏览器有很多兼容性问题,给我们提供了一些接口
16     less than or equal ,表示小于或等于
17     lt:less than  小于
18     gt:greater than,表示大于
19     if是如果 lte 代表小于  IE浏览器   9代表版本
20       -->
21       <h2>IE9呈现效果</h2>
22       <!-- [if IE 9]>
23         仅仅在IE9下面呈现出效果
24         <![endif]  -->
25         <hr>
26         <h2>IE8</h2>
27         <!-- [if lte IE8]>
28             小于或等于IE8版本的浏览器呈现效果
29         <![endif] -->
30         <hr>
31 </body>
32 </html>
View Code

CSS hack

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>hack (css hack)</title>
 8     <style>
 9         *{
10             margin: 0;
11             padding: 0;
12         }
13         body{
14             background-color:yellow;
15             /* IE 在属性名的前面加下划线或横线 */
16             -background-color:blue;/*IE6 独有*/
17             /* _background-color:red; *//*事实证明,_下划线在IE6及以下版本都可以呈现*/
18         }
19         p{
20             font-size: 30px;
21             /* IE8/9  hack符:\0/ ; 需要写在属性值的后面 */
22             color:red\0/;
23         }
24         h2{
25             /* IE 6/7/8/9/10 hack符:\9需写在属性值的后面,分号前 */
26             font-size: 12px\9;
27         }
28 
29         /* css 选择器 hack */
30         /* IE 6 and blow 写法 * html .selector{}  */
31        * html div{
32             height: 200px;
33             width: 200px;
34             background:purple;
35         }
36 
37         /*IE6 不忍四子级选择器*/
38         /* 
39         html>body.selector{}
40         >子选择器:只选择儿子级,后代其他级别不选
41         IE6 不忍四自带选择器,除了IET 豆能正常加载
42          */
43          div>h3{
44              color:green;
45          }
46 
47          /* IE6 不兼容 交集选择短期力的类选择器连写*/
48          div.box1.box2.box3{
49              border:solid 10px pink;
50              border-radius:50%;/*css3 属性  IE8 及以下不兼容*/
51              height: 500px;
52          }
53 
54          /* IE6 盒模型
55          如果不写DTD  IE6的盒子是内减的(怪异盒),其他浏览器器外扩
56          解决方法  必须写DTD(!DOctype)约束
57 
58          如果盒子高度小于默认字号,不会正常显示。高度会默认的字号
59          解决方法
60          单独给IE6浏览器,强制给个很小的字号
61 
62           */
63     </style>
64 </head>
65 <body>
66     <h2>这是I36/7/8/9/10</h2>
67     <p>这是IE8 9的演示</p>
68     <div class="box1 box2 box3">
69         <h3>这是DIV的子元素</h3>
70     </div>
71 </body>
72 </html>
View Code

浮动的兼容

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>浮动的兼容</title>
 8     <style>
 9         *{
10             margin: 0;
11             padding: 0;
12         }
13         div{
14             width: 100px;
15             height: 100px;
16             background:yellow;
17         }
18         div.box1{
19             float:flot;
20         }
21         div.box2{
22             background-color:red;
23             /*
24               3px的bug
25                 情况  一个浮动 一个不浮动,IE6两个盒子中间会出现3px的bug
26                 解决方法:(不允许这么写)
27                 必须解决:给坐标的浮动盒子加一个-3px的右margin(只给IE6浏览器加,注意hack符)
28             */
29             _margin-right:-3px;
30         }
31     </style>
32 </head>
33 <body>
34     <!-- IE7 and blow 
35     情况:不浮动的盒子(box2)不会钻到(box1)低下(占领它原来的标准流位置) ,
36     IE7 中间不会有间隙 
37     IE6以下有间隙
38     解决办法:制作压盖效果用定位 同一级的盒子 要浮动都浮动
39 
40     3px的bug
41     情况  一个浮动 一个不浮动,IE6两个盒子中间会出现3px的bug
42     解决方法:(不允许这么写)
43     必须解决:给坐标的浮动盒子加一个-3px的右margin(只给IE6浏览器加,注意hack符)
44     -->
45     <div class="box1"></div>
46     <div class="box2"></div>
47 </body>
48 </html>
View Code

IE6 浮动第一个浮动元素双倍margin的问题

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta http-equiv="X-UA-Compatible" content="IE=edge">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>IE6浮动双倍margin的问题</title>
 8     <style>
 9         *{
10             margin: 0;
11             padding: 0;
12         }
13         div{
14             width: 200px;
15             height: 200px;
16             margin-left:50px;
17             border:1px solid black;
18         }
19         div.box1{
20             /* 只改变IE6的 把第一个浮动元素的margin减半 ,50px 改成25px 就解决了双倍margin的问题  注意IE6兼容 hack符号*/
21             -margin-left:25px;
22         }
23     </style>
24 </head>
25 <body>
26     <!-- 
27         IE6双倍margin的问题
28         情况:一些元素浮动,有一个与浮动方向相同的margin.第一个元素会出现双倍边距的问题
29         解决方法:
30         1  不允许父子元素之间的间距用儿子的margin去踹,用父亲的padding去挤出来,给第一个浮动的元素清除margin,或者给反方向的margin
31         或者margin-right
32         2  (不提倡 不允许父子之间的间距用儿子的margin去踹) 给第一个元素的margin减半
33      -->
34 <div class="box1"></div>
35 <div class="box2"></div>
36 <div class="box3"></div>
37 <div class="box4"></div>
38 <div class="box5"></div>
39 </body>
40 </html>
View Code

 

posted @ 2021-02-08 16:13  还有什么值得拥有  阅读(696)  评论(0编辑  收藏  举报