如何让CSS的标签兼容不同的浏览器
在不同浏览器, 标签呈现的效果是有区别的。所以小面我来谈谈如何让CSS的标签兼容不同的浏览器。
作为块级元素的 标签,在写CSS文件时, 最好定义行高line-height, 不要定义高度height,因为定义了高度, 就限制了块级元素 的高度, 在不同浏览器, 很难实现比较统一的效果,我曾经遇到,在IE6,FIREFOX(FF)效果完好, 而在IE7,标题的文字只出来一半。 且 标题在不同的布局中, 会有不同的行数要求, 比如在侧栏等小地方, 标题很可能有2行或3行, 如果高度被定义了, 那么大部分浏览器都会出现错误的显示, 很拥挤或没有显示, 如果设置了底部边线, 还可能错位。
所以 标签, 最好不要定义高度height,但一定要定义行高line-height,其他数值,根据实际效果适当变化。这样, 对不同浏览器的兼容性是最好的。
h3 {
font-size:14px
margin: 15px 0px 10px 0px
padding: 3px 0px 3px 0px
line-height:20px
color:#55295etext-align:left
border-bottom: 1px dotted #55295e
}
标签一般介绍
标签是一个标题标签,常用做网站主题、文章标题或用在段落之前,用于表明整个网站、整篇文章或段落要表达的`意思。根据显示和要表达意思的级别可以分为H1,H2,H3,H4,H5,H6。
标签成对出现,以 开始,以 结束。
在一个WEB页面中,H1标签最好(理论上是应该)只出现一次,因为它代表该WEB页面的主题。在实际操作中,建议不要使用 h1 来定义文章标题,而是用来定义网站标题。我有一个网站, 在首页一段文字前用了H1,并合理地分布了H2,H3,H4,结果十天以后, 原来排在第一页的关键词, 就掉到了第四页。因此, 用一次H2做页面一级标题,比较安全。
H1的重要性最高,常用于表达对整个网站的作用和性质的描述,或表示网站面向的受众群体。其他标签根据级别的不同分别用于显示某个专区的名称,或某段介绍文字的大概描述。
因它表示对网站或某段文字的大体描述,所以相对于搜索引擎来说H标签具有很高的价值。但这并不意味着可以随意的使用。比如,有些网站为了刻意追求特定关键字的排名,而在一段文字中使用H标签来展示关键字。或干脆把H标签当做一个容器来对网页进行布局。这样完全混淆了H标签的作用,也是不推荐的。
标签代表了一个网页的重点层次,但不要过度使用。否则会受到搜索引擎的不同程度的降权。
标签的使用和控制,合理安排网页层次
h1,h2,h3,是经常用到的标题标志,权重比STONRG高一点。以前我曾在一个网页里多次使用H1,结果很长时间在GG的收录都是补充页面(更新,外连正常)。H标题作为关键词布局的一个重要方面,一定程度上决定了网页的层次结构和轻重布局。很多著名的站点都使用H类标题,用法上略有区别,比较灵活。
1、按照内容的重要性来定义:
使用 h1 定义网站标题
使用 h2 定义文章标题
使用 h3 定义栏目标题
2、按照网站的层次来定义:
使用 h1 定义网站标题
使用 h2 定义栏目标题
使用 h3 定义文章标题
标签CSS样式设置
标签默认的表现样子一般不尽如人意, 不能满足网页设计的要求。好在 标签是块级元素,适用块级元素的属性, 标签均可使用,因此, 标签可以通过CSS加以完美控制。
内外空白边距,可以通过外边距margin和内边距padding控制
h1 {margin:0pxpadding:0px}
字体的字号,颜色,字体控制
h1 {font-size:14pxcolor:#55295efont-family:Verdana,Arial, Helvetica,sans-serif}
高度和宽度的控制
h1 {height:20pxwidth:400pxline-height:20px}
行高的控制
h1 {line-height:20px}
文本对齐方式的控制, 可以是left,right,center。
h1 {text-align:left}
边框的控制
h1 {border: 1px dotted #55295e}
背景的控制
h1 {background: #ccc url(images/test.jpg) no-repeat top }
1.目前来说对css支持最好的公认的是火狐浏览器,错位的原因在css代码书写不规范。2.兼容性:对于CSS(样式表)并不是所有浏览器的所有版本都支持的很好,比如IE5以前的浏览器对于CSS的支持就不是很好。而现在使用IE5以前版本浏览器的用户不在少数,这样就使得在页面制作的过程中需要针对不同浏览器版本进行测试,以保证兼容性,无形中也增加很多工作量(至少我接触的开发人员制作div页面比table页面的标准时间要长一些)。3.对css缩写的支持问题:不论是ie 还是ff对css的缩写都有一小点问题比如border: 0xp solid #fff两个浏览器支持都没有问题但对于四个边的magin不同情况下,就不能用这种缩写了,无论是ie还是ff又会出现边界解释错误,而导致页面变形正确缩写:border-width:0px 1px 2px 3pxborder-style:solidborder-color:#fff第二点是 ie对于css的magin padding 等默认值为0px,但ff却不一样,为了保持外观的统一性,即使padding为0你也要写上,以免ff在浏览中的错位。IE与Firefox的CSS兼容大全 1.DOCTYPE 影响 CSS 处理2.FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行3.FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中4.FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width5.FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式,值得注意的是,一定要将xxxx !important 这句放置在另一句之上6.div 的垂直居中问题: vertical-align:middle将行距增加到和整个DIV一样高 line-height:200px然后插入文字,就垂直居中了。缺点是要控制内容不要换行7.cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以8.FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格。9.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:div{margin:30px!importantmargin:28px}注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:div{maring:30pxmargin:28px}重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important~~期待满意啊~~浏览器兼容问题一:不同浏览器的标签默认的margin和padding不同 问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。 碰到频率:100% 解决方案: CSS里加一行 1 *{margin:0padding:0} 备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设置各个标签的内外补丁是0。 浏览器兼容问题二:块属性标签float后,又有横行的margin情况下,在IE6显示margin比设置的大 问题症状:常见症状是IE6中后面的一块被顶到下一行 碰到频率:90%(稍微复杂点的页面都会碰到,float布局最常见的浏览器兼容问题) 解决方案:在float的标签样式控制中加入 display:inline将其转化为行内属性 备注:我们最常用的就是div+CSS布局了,而div就是一个典型的块属性标签,横向布局的时候我们通常都是用div float实现的,横向的间距设置如果用margin实现,这就是一个必然会碰到的兼容性问题。 浏览器兼容问题三:设置较小高度标签(一般小于10px),在IE6,IE7,遨游中高度超出自己设置高度 问题症状:IE6、7和遨游里这个标签的高度不受控制,超出自己设置的高度 碰到频率:60% 解决方案:给超出高度的标签设置overflow:hidden或者设置行高line-height 小于你设置的高度。 备注:这种情况一般出现在我们设置小圆角背景的标签里。出现这个问题的原因是IE8之前的浏览器都会给标签一个最小默认的行高的高度。即使你的标签是空的,这个标签的高度还是会达到默认的行高。 浏览器兼容问题四:行内属性标签,设置display:block后采用float布局,又有横行的margin的情况,IE6间距bug 问题症状:IE6里的间距比超过设置的间距 碰到几率:20% 解决方案:在display:block后面加入display:inlinedisplay:table 备注:行内属性标签,为了设置宽高,我们需要设置display:block(除了input标签比较特殊)。在用float布局并有横向的margin后,在IE6下,他就具有了块属性float后的横向margin的bug。不过因为它本身就是行内属性标签,所以我们再加上display:inline的话,它的高宽就不可设了。这时候我们还需要在display:inline后面加入display:talbe。 浏览器兼容问题五:图片默认有间距 问题症状:几个img标签放在一起的时候,有些浏览器会有默认的间距,加了问题一中提到的通配符也不起作用。 碰到几率:20% 解决方案:使用float属性为img布局 备注:因为img标签是行内属性标签,所以只要不超出容器宽度,img标签都会排在一行里,但是部分浏览器的img标签之间会有个间距。去掉这个间距使用float是正道。(我的一个学生使用负margin,虽然能解决,但负margin本身就是容易引起浏览器兼容问题的用法,所以我禁止他们使用) 浏览器兼容问题六:标签最低高度设置min-height不兼容 问题症状:因为min-height本身就是一个不兼容的CSS属性,所以设置min-height时不能很好的被各个浏览器兼容 碰到几率:5% 解决方案:如果我们要设置一个标签的最小高度200px,需要进行的设置为:{min-height:200pxheight:auto !importantheight:200pxoverflow:visible} 备注:在B/S系统前端开时,有很多情况下我们又这种需求。当内容小于一个值(如300px)时。容器的高度为300px;当内容高度大于这个值时,容器高度被撑高,而不是出现滚动条。这时候我们就会面临这个兼容性问题。 浏览器兼容问题七:各种特殊样式的兼容,比如透明度、圆角、阴影等。特殊样式每个浏览器的代码区别很大,所以,只能现查资料通过给不同浏览器写不同的代码来解决。 JS解决IE6下png透明失效的问题 做兼容页面的方法是:每写一小段代码(布局中的一行或者一块)我们都要在不同的浏览器中看是否兼容,当然熟练到一定的程度就没这么麻烦了。建议经常会碰到兼容性问题的新手使用。很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。如果我们熟悉标签的默认属性的话,就能很好的理解为什么会出现兼容问题以及怎么去解决这些兼容问题。