Html和CSS在浏览器兼容性问题

先说下浏览器的内核问题

1、IE浏览器内核:Trident内核,也是俗称的IE内核;
2、Chrome浏览器内核:统称为Chromium内核或Chrome内核,以前是Webkit内核,现在是Blink内核;
3、Firefox浏览器内核:Gecko内核,俗称Firefox内核;
4、Safari浏览器内核:Webkit内核;
5、Opera浏览器内核:最初是自己的Presto内核,后来是Webkit,现在是Blink内核;
6、360浏览器、猎豹浏览器内核:IE+Chrome双内核;
7、搜狗、遨游、QQ浏览器内核:Trident(兼容模式)+Webkit(高速模式);
8、百度浏览器、世界之窗内核:IE内核;
9、2345浏览器内核:以前是IE内核,现在也是IE+Chrome双内核;

1、居中问题

格里的内容,IE默认为居中,而FF默认为左对齐,可以尝试增加代码:

  margin: 0 auto;

2、高度问题

两上下排列或嵌套的格,上面的格设置高度(高度),如果DIV里的实际内容大于所设高度,在FF中会出现两个格重叠的现象;但在IE中,下面的格会自动给上面的div让出空间所以为避免出现层的重叠,高度一定要控制恰当,或者干脆不写高度,让他自动调节,比较好的方法是身高:100%;但当这个div里面一级的元素都浮了的时候,则需要在格块的最后,闭和前加一个沉底的空DIV,CSS对应是:

.float_bottom {clear:both;
height:0px;
font-size:0px;
padding:0;
margin:0;
border:0;
line-height:0px;
overflow:hidden;
}

3、IE浮动边缘产生的双倍距离

#box {         float:left;
        width:100px;
        margin:0 0 0 100px; //这种情况之下IE会产生200px的距离        
        display:inline; //使浮动忽略
}

4、填充问题

FF设置填充后,div会增加高度和宽度,但IE不会(*标准的XHTML1.0定义dtd好像一致了)高度控制恰当,或尝试使用高度:100%;宽度减少使用padding但根据实际经验,一般FF和IE的填充不会有太大区别,div的实际宽=宽度+填充,所以div写全宽和填充,宽度用实际想要的宽减去填充定义。

5、div嵌套时y轴上padding和marign的问题

FF里y轴上子div到父div的距离为父padding +子marign

IE里y轴上子div到父div的距离为父padding和子marign里大的一个

FF里y轴上父padding = 0且border = 0时,子div到父div的距离为0,子marign作用到父div外面

6、填充,marign,高度,宽度的傻瓜式解决技巧**

注意是技巧,不是方法:

写好标准头

<!DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>

<html xmlns =“http://www.w3.org/1999/xhtml”>

高尽量用填充,慎用余量,高度尽量补上100%,父级高度有定值子级高度不用100%,子级全为浮动时底部补个空明确:两者的格宽尽量用余量,慎用填充物,宽度算准实际要的减去填充

7、列表类

1\. ul标签在FF中默认是有padding值的,而在IE中只有margin有值

先定义ul {margin:0; padding:0;}

 2\. ul和ol列表缩进问题消除ul,ol等列表的缩进时,样式应写成:{
list-style:none;
margin:0px; 
padding:0px;

}

8、显示类(显示:块,内联)

1.显示:块,内联两个元素

显示:块; //可以为内嵌元素模拟为块元素

显示:内联; //实现同一行排列的的效果

显示:表; //对于FF,模拟表的效果

display:块块元素,元素的特点是:

总是在新行上开始;高度,行高以及顶和底边距都可控制;宽度缺省是它的容器的100%,除非设定一个宽度

<div>,<p>,<h1>,<form>,<ul>和<li>是块元素的例子

display:inline就是将元素显示为行内元素,元素的特点是:和其他元素都在一行上;高,行高及顶和底边距不可改变;宽度就是它的文字或图片的宽度,不可改变。 <span>,<a>,<label>,<input>,<img>,<strong>和<em>是内联元素的例子

2.鼠标手指状显示

   全部用标准的写法游标:指针;

9、背景,图片类

1. background显示问题

   全部注意补齐width,height属性

2.背景透明问题

IE:filter:progid:DXImageTransform.Microsoft.Alpha(style = 0,opacity = 60);

IE:filter:alpha(opacity = 10);

FF:不透明度:0.6;

FF:-moz-opacity:0.10;

最好两个都写,并将透明度属性放在下面

10、最小高度最小高度的实现(兼容IE6,IE7,FF)

作用是:当容器的内容较少时,能保持一个最小的高度,以免破坏了布局或UI设计效果而当容器内的内容增加的时候,容器能够自动的伸展以适应内容的变化。

#mrjin {       background:#ccc;
               min-height:100px;
               height:auto !important;
               height:100px;
               overflow:visible;
}

11、着名的Meyer Reset(重置)

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td { 
margin: 0;
    padding: 0;
    border: 0;  outline: 0;
    font-weight: inherit;
    font-style: inherit;
    font-size: 100%;
    font-family: inherit;
    vertical-align: baseline;
} 
 :focus {   outline: 0;
} 
body {  line-height: 1;
    color: black;
    background: white;
}
 ol,ul {    list-style: none;
}
 table {    border-collapse: separate;
    border-spacing: 0;
}
 caption,th,td {    
text-align: left;
    font-weight: normal;
}
 blockquote:before,blockquote:after,q:before,q:after {
    content: "";
}
 blockquote,q {
    quotes: "" "";
}

12、跨浏览器的CSS透明度

.transparent {   
opacity: 0.7;
   -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
   filter: alpha(opacity=70);
   -moz-opacity: 0.7;
  -khtml-opacity: 0.7;

13、文字阴影(CSS3)

.text { text-shadow: 1px 1px 1px #666;
 filter: Shadow(Color=#666666, Direction=135, Strength=5);
 }

14、盒阴影(CSS3)

.box { box-shadow: 5px 5px 5px #666;
  -moz-box-shadow: 5px 5px 5px #666;
  -webkit-box-shadow: 5px 5px 5px #666;
 }

15、Sticky Footer(让页脚永远停靠在页面底部,而不是根据绝对位置)

<div id="wrap"> 
<div id="main" class="clearfix"></div> 
</div>   
 <div id="footer"> </div>  

16、为什么网络标准中无法设置IE浏览器滚动条颜色了?

body {  scrollbar-face-color: #f6f6f6;
    scrollbar-highlight-color: #fff;
    scrollbar-shadow-color: #eeeeee;
    scrollbar-3dlight-color: #eeeeee;
    scrollbar-arrow-color: #000;
    scrollbar-track-color: #fff;
    scrollbar-darkshadow-color: #fff;
}

原来样式设置:

解决办法是将车身换成HTML。

17、为什么中火狐浏览器下文本无法撑开容器的高度?

标准浏览器中固定高度值的容器是不会象IE6里那样被撑开的,那我又想固定高度,又想能被撑开需要怎样设置呢办法就是去掉高度设置最小高度:200像素; 这里为了照顾不认识min-height的IE6可以这样定义:

div { height:auto!important; height:200px; min-height:200px; }

18、如何定义1px的左右高度的容器?

 IE6下这个问题是因为默认的行高造成的,解决的方法也有很多
例如:overflow:hidden | zoom:0.08 | 行高:1px的

19、怎么样才能让层显示在FLASH之上呢?

解决的办法是给FLASH设置透明:

<a href=" [http://www.chinaz.com/">:</ a](http://www.chinaz.com/%22%3E:%3C/a) >

<pre lang =“html”line =“1”>

<param name =“wmode”value =“transparent”/>

20、怎样使一个DIV层居中于浏览器中?

首先,需要这两个层都是兄弟关系,其次,这两个层都需要绝对定位举个例子:

div {   position: absolute;
    top: 50%;   left: 50%;
    margin: -100px 0 0 -100px;
    width: 200px;   height: 200px;
    border: 1px solid red;
}

21、怎样使DIV背景透明?

body {  
font: normal 12px/30px Verdana;
} 
#test { 
    position: relative;
    width: 400px;
    height: 50px;
}
 #inner {
    z-index: 2;
    position: absolute;
    top: 10px;
    left: 10px;
    width: 380px;
    height: 30px;
    color: #003;
    font-weight: bold;
    text-align: center;
}
 #transbox {
    z-index: 1;
    position: absolute;
    top: 0px;   left: 0px;
    width: 400px;
    height: 50px;
    background: #eef;
    border: 1px solid #a00;
    filter: alpha(opacity=40);
    -moz-opacity: 0.4;
    opacity: 0.4;
}

22、怎样去掉选中时的虚线框?

利用onfocus =“this.blur();”例如:<a href="#" onfocus="this.blur();">测试</a>

23、IE6下PNG背景显示问题?

针对IE6下PNG背景显示问题,CSS中可以这样解决:

_background:none;
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=crop, src=’http: //www.0351zhuangxiu.com/uploads/images/bj.jpg’);

24、文字与表单对齐方法?

设置表单元素第一字体为Tahoma(Verdana系列也可),并设置vertical-align:middle。建设大家把这个约定写入CSS RESET中,能减小很多麻烦:

body,button,input,select,textarea{
font:12px/1.5 tahoma,arial,sans-serif;
 vertical-align:middle
}

25、OPTGROUP标签的用法?

OPTGROUP标签,鲜为人知,它对提升选择表单用户体验很有帮助就是可以在有很多选项时,对这些选项分组:例子:

<select id =“selectId”>

<optgroup label =“GROUP ONE”>

<option value =“1”>一个选择</ option>

<option value =“2”>两个选择</ option>

</ OPTGROUP>

<optgroup label =“GROUP TWO”>

<option value =“3”>三选</ option>

<option value =“4”>四选</ option>

</ OPTGROUP>

</选择>

26、文字与图片垂直居中对齐方法?


为图片与文字的共同父元素所有的后代元素定义* {垂直对齐:中间};例如:

<p>我要的坚强<img src =“i / image.gif”/> </ p>

只需定义P * {垂直对齐:中间}即可使文字与图片同行垂直居中。

27、文章标题列表中日期居右显示的两种方法?

方法甲相对方法乙省资源,但比方法乙要多写两句代码,使用时请视情况而定:

方法一:

    <P>这是文章标题<跨度> 2010-10-10 </跨度> </ p>

然后定义p和跨度的样式:

p {position:relative}

p span {position:absolute; 右:0}

方法B:

<P> <跨度> 2010-10-10 </跨度>这是文章标题</ P>

然后定义跨度右浮动:

p span {float:right}

28、IE6下最大/最小宽度/高度实现?

ie6下max / min-width / height实现,_ width:expression_r(this.width> 600?“600px”:true);, height同理。

29、空白外边距互相叠加的问题?

一般通过添加透明边框或者1px的的内边距避免;

其一,为外围元素定义透明边框。具体到本例,即在样式div中加入border:1px solid transparent;

其二,为外围元素定义内边距填充..具体到本例,即在样式的div中加入填充:1px的;

例如:<!doctype html>

<HTML>

<HEAD>

<meta charset =“utf-8”>

<title>空白边距叠加[demo@Mr.Think </ title](mailto:demo@Mr.Think%3C/title) >

<风格>

体{宽度:300像素; FONT-FAMILY: '微软雅黑'; 字体大小:1em的; TEXT-INDENT:10px的; 行高:1.25}

DIV {背景:#a40000;余量:10px的}

div p {background:#eee; margin:15px}

</样式>

</ HEAD>

<BODY>

<div> <p>空白边距叠加[demo@Mr.Think </ p> </ div](mailto:demo@Mr.Think%3C/p%3E%3C/div) >

</ BODY>

</ HTML>

30、网页设计中的默认字体

字体:12px / 1.5 Tahoma,Helvetica,Arial,sans-serif;

说明:line-height采用1.5,也就是18px。这是淘宝视觉规范中定义的行高,对于12px的字体,这个行高看起来很舒服.font家族默认采用宋体。宋体是英文的Windows操作系统的默认字体,这个字体比较均衡,显示中英文混排很不错,是经久耐看的一款字体。

31、浏览器兼容 - 常用的css hack

/*第一种*/ .title {    height: 200px;  *height: 200px; _height: 200px;}  /*第二种*/ .title {  height: 200px;  *height: 200px !important;  *height: 200px;}  /*第三种*/ .title {  height: 200px;} *html.title {   height: 200px;} *+html.title {  height: 200px;}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容