浏览器Firefox与IE在CSS样式表中的差异

2008/03/25 11:05  |  分类:Xhtml

1 针对Firefox ie6 IE7的Css样式

现在大部分都是用!important来hack,对于ie6和firefox测试可以正常显示,但是ie7对!important可以正确解释,会导致页面没按要求显示!找到一个针对IE7不错的hack方式就是使用“*+Html”,现在用IE7浏览一下,应该没有问题了。

现在写一个CSS可以这样:

#1 { color: #333; } /* Moz */
* html #1 { color: #666; } /* IE6 */
*+html #1 { color: #999; } /* IE7 */

那么在firefox下字体颜色显示为#333,IE6下字体颜色显示为#666,IE7下字体颜色显示为#999。

2 css布局中的居中问题

主要的样式定义如下:

body {TEXT-ALIGN: center;}
#center { MARGIN-RIGHT: auto; MARGIN-LEFT: auto; }

说明:

首先在父级元素定义TEXT-ALIGN: center;这个的意思就是在父级元素内的内容居中;对于IE这样设定就已经可以了。

但在mozilla中不能居中。解决办法就是在子元素定义时候设定时再加上“MARGIN-RIGHT: auto;MARGIN-LEFT: auto; ”

需要说明的是,如果你想用这个方法使整个页面要居中,建议不要套在一个DIV里,你可以依次拆出多个div,只要在每个拆出的div里定义MARGIN-RIGHT: auto;MARGIN-LEFT: auto; 就可以了。

3 盒模型不同解释.

#box{
width:600px;
//for ie6.0- w\idth:500px;
//for ff+ie6.0
}
#box{
width:600px!important
//for ff
width:600px;
//for ff+ie6.0
width /**/:500px;
//for ie6.0-
}

4 浮动ie产生的双倍距离

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

这里细说一下block,inline两个元素,Block元素的特点是:总是在新行上开始,高度,宽度,行高,边距都可以控制(块元素);Inline元素的特点是:和其他元素在同一行上,…不可控制(内嵌元素);

#box{ display:block; //可以为内嵌元素模拟为块元素 display:inline; //实现同一行排列的的效果 diplay:table;

5 IE与宽度和高度的问题

IE不认得min-这个定义,但实际上它把正常的width和height当作有min的情况来使。这样问题就大了,如果只用宽度和高度,正常的浏览器里这两个值就不会变,如果只用min-width和min-height的话,IE下面根本等于没有设置宽度和高度。比如要设置背景图片,这个宽度是比较重要的。要解决这个问题,可以这样:

#box{ width: 80px; height: 35px;}html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}

6 页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个

放到 标签下,然后为div指定一个类:
然后CSS这样设计:

#container{
min-width: 600px;
width:e&shy;XPression(document.body.clientWidth < 600? "600px": "auto" );
}

第一个min-width是正常的;但第2行的width使用了javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。

7 清除浮动

.hackbox{
display:table;
//将对象作为块元素级的表格显示
}

或者

.hackbox{
clear:both;
}

或者加入:after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏览器支持,所以并不影响到IE/WIN浏览器。这种的最麻烦的

......#box:after{
content: ".";
display: block;
height: 0;
clear: both;
visibility: hidden;
}

8 DIV浮动IE文本产生3象素的bug

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.

#box{
float:left;
width:800px;}
#left{
float:left;
width:50%;}
#right{
width:50%;
}
*html #left{
margin-right:-3px;
//这句是关键
}
HTML代码

9 属性选择器(这个不能算是兼容,是隐藏css的一个bug)

p[id]{}div[id]{}
p[id]{}div[id]{}

这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用

属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.

10 IE捉迷藏的问题

当div应用复杂的时候每个栏中又有一些链接,DIV等这个时候容易发生捉迷藏的问题。
有些内容显示不出来,当鼠标选择这个区域是发现内容确实在页面。
解决办法:对#layout使用line-height属性 或者给#layout使用固定高和宽。页面结构尽量简单。

11 高度不适应

高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用
margin 或paddign 时。例:

p对象中的内容

CSS:

#box {background-color:#eee; }
#box p {margin-top: 20px;margin-bottom: 20px; text-align:center; }

解决方法:在P对象上下各加2个空的div对象CSS代码:.1{height:0px;overflow:hidden;}或者为DIV加上border属性。

CSS的优先级特性

2008/03/17 13:28  |  分类:Css

在学习之前,先啰嗦两句,有人也曾经说过,我的博客里的东西转载的多,而且都是基础的知识,实用性不高。但是我认
为,每个阶段有每个阶段要学习的东西。物不是好才有用,是因为有用才好~
如果同个元素有两个或以上冲突的CSS规则,浏览器有一些基本的规则来决定哪一个非常特殊而胜出。
  它可能不像其它那么重要,大部分案例你不需要担心冲突,但大型而且复杂的CSS文件,或有很多CSS文件组成的,可能产生冲突。
  选择器一样的情况下后面的会覆盖前面的属性。比如:

p { color: green; }
p { color:red; }
  p元素的元素将是蓝色,因为遵循后面的规则。
  然而,你不可能经常用相同的选择器冲突达到目的,当你使用嵌套选择器,合理的冲突来了。比如:

p span { color: green; }
p span { color: red; }
  也许你看起来p元素在div元素里面的颜色是蓝色,就像后面p元素的规则,但是第一个选择器的特性却是红色。基本上,一个选择器越多特性,样式冲突的时候将显示它的样式。
  一组嵌套选择器的实际特性可以计算出来。基本的,使用ID选择器的值是100,使用class选择器的值是10,每个html选择器的值是1。它们加起来就可以计算出特性的值。

  p的特性是1(一个html选择器)
  div p的特性是2(两个html选择器)
  .tree的特性是10(1个class选择器)
  div p.tree的特性是1+1+10=12,(两个html选择器,一个class选择器)
  #baobab的特性是100(1个ID选择器)
  body #content .alternative p的特性是112(两个html选择器,一个ID选择器,一个类选择器)
  按照上面的规则,div p.tree的特性比div p高,body #content .alternative p又比它们两个都高。
  

CSS兼容要点分析

2008/03/14 11:08  |  分类:Xhtml

IE vs FF

CSS 兼容要点:

DOCTYPE 影响 CSS 处理

FF: div 设置 margin-left, margin-right 为 auto 时已经居中, IE 不行

FF: body 设置 text-align 时, div 需要设置 margin: auto(主要是 margin-left,margin-right) 方可居中

FF: 设置 padding 后, div 会增加 height 和 width, 但 IE 不会, 故需要用 !important 多设一个 height 和 width

FF: 支持 !important, IE 则忽略, 可用 !important 为 FF 特别设置样式

div 的垂直居中问题: vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了。缺点是要控制内容不要换行

cursor: pointer 可以同时在 IE FF 中显示游标手指状, hand 仅 IE 可以

FF: 链接加边框和背景色,需设置 display: block, 同时设置 float: left 保证不换行。参照 menubar, 给 a 和 menubar 设置高度是为了避免底边显示错位, 若不设 height, 可以在 menubar 中插入一个空格XHTML+CSS兼容性解决方案小集

使用XHTML+CSS构架好处不少,但也确实存在一些问题,不论是因为使用不熟练还是思路不清晰,我就先把一些我遇到的问题写在下面,省的大家四处找^^

1.在mozilla firefox和IE中的BOX模型解释不一致导致相差2px解决方法:

div{margin:30px!important;margin:28px;}

注意这两个margin的顺序一定不能写反,据阿捷的说法!important这个属性IE不能识别,但别的浏览器可以识别。所以在IE下其实解释成这样:

div{maring:30px;margin:28px}

重复定义的话按照最后一个来执行,所以不可以只写margin:XXpx!important;

2.IE5 和IE6的BOX解释不一致IE5下div{width:300px;margin:0 10px 0 10px;}div的宽度会被解释为300px-10px(右填充)-10px(左填充)最终div的宽度为280px,而在IE6和其他浏览器上宽度则 是以300px+10px(右填充)+10px(左填充)=320px来计算的。这时我们可以做如下修改

div{width:300px!important;width /**/:340px;margin:0 10px 0 10px}

,关于这个/**/是什么我也不太明白,只知道IE5和firefox都支持但IE6不支持,如果有人理解的话,请告诉我一声,谢了!:)

3.ul标签在Mozilla中默认是有padding值的,而在IE中只有margin有值所以先定义

ul{margin:0;padding:0;}

就能解决大部分问题

4.关于脚本,在xhtml1.1中不支持language属性,只需要把代码改为

图片自动等比例缩小,其实如果不考虑ie6的话,用css就可以实现,设定img的max-width和max-height,而标签内不设定widht和height即可。

  ie7已经支持max-width和max-height,这是为数不多的好消息之一。 但是对于ie6及以前的版本,就只能用js来设置了。

  在 ff 2.0/ ie6 / ie7 中测试通过。 opera 8.5 cn 垂直居中未通过,正在研究[貌似opera下如果只有图片行高会失效……]。希望大家来测试。
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


  • "img"
  • "img"
  • "img"
  • "img"


用CSS定义表格行背景色交替出现

2008/01/09 10:26  |  分类:Css

应用div+css网页布局,表格的使用已经非常少了,至少table表格只是作为内容数据,并不再作为页面布局的手段。

  表格数据是很常见的数据格式,如产品列表,产品参数,数值等等,有时候表格数据的每一行占据了比较宽的位置,我们往往通过定义行背景色交替,让用户浏览更加的清晰。

  我们可以用CSS定义表格行背景色交替吗?或许你立即就想到了class,用class来定义背景色,然后在不同的行设置不同的class就可以现实了。这只是方法之一,我们的数据如果有几十行,上百行,这个方法也稍嫌繁琐了一些。

  我们可以通过css的expression属性,批量定义表格行背景色交替。关于expression你可以参考这里。

  css的expression用来把CSS属性和Javascript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javascript表达式,CSS属性的值等于Javascript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">




我们成功的实现了表格行背景色(#F0F0F0,#DDD)交替出现,不需要每行单独定义。
需要你特别注意的是css的expression属性,IE5.5以后版本并不支持。

用CSS实现在新窗口打开链接

2008/01/08 13:01  |  分类:Css

们辛苦的完成了一个站点的开发即将交付使用了,用户提出了一个要求,希望导航或产品或其它某一类的链接需要新窗口打开,一个一个的修改文件可能有几十个,或上百个文件,修改的链接点就更多了。我们怎么办呢?可以用CSS实现在新窗口打开链接吗?

我们可以通过css的expression来定义某一部分链接以target="_blank"新窗口打开。完整的代码是这样的:
[html]
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



www.52css.com 本窗口打开
www.52css.com 新窗口打开



[/html]

鼠标经过时可以切换CSS吗

2008/01/08 12:58  |  分类:Xhtml

< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



我爱CSS – 52css.com 是一个专业的CSS站点


< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



52css.com – 我爱CSS – 致力于Web标准在中国的应用及发展


CSS隐藏文字的方法

2007/12/21 15:24  |  分类:Css

在以前的文章中,我们也介绍多种类似CSS隐藏文字的处理手法:

今天我们来学习一下其它的一些常用的方法,并作出一些点评分析:

1、display:none:它可以使包括容器本身在内的东西都消失,简便且有效,但它有两个耳熟能详的缺陷,那就是对搜索引擎不友好,且被屏幕阅读器所忽略。

2、text-indent:-9999px:text-indent是首行缩进,所以对于多行文本,若单独使用它就有明显的不足,需加上white-space:nowrap;来弥补不足,但还有一个问题:物理空间仍然存在,故还需设置line-height:0;或使用超小字体(在IE下有点BUG),最终代码如下:

.texthidden{
text-indent:-9999px;
white-space:nowrap;
line-height:0;
}
3、overflow:hidden:这是一个比较合理且我最喜欢的方法,具体代码如下:

.texthidden{
display:block;/*统一转化为块级元素*/
overflow:hidden;
width:0;
height:0;
}
4、positon:absolute:用绝对定位将其推出可视区,不过虽然可视性不存在,但仍占据物理空间,与隐藏文字的宗旨相背

.texthidden{
positon:absolute;
margin-top:-9999px;
margin-left:-9999px;
}

本人最近在学CSS,但是有蛮多疑问。我现在在这里列出来。

  1.请问如何设定在不对的客户端都能正常的浏览(不变型)网页。你用CSS定位,你要怎么设定最外面的层宽?假如设定为。宽800
  那这有一矛盾,你知道客户是用什么?他如果用PDA上网他的浏览器,怎么去适应?如果对方的分辩率是用 1024宽?或是用 1280。再是用现在的1440这种的。我们自己设定个固定宽,不怕造成,对方的设备,不好正常显示器吗?

  2.假如用百分比定位。OK,应该可以解决适应问题,但又有一疑问出来,你用的是自适应,请问,那你内部的区域块的宽高,你要怎么设?因为你不知道你最大值不能超过多少。(不过CSS可以设定自动加长加宽区域,这个我觉得不错,不用像以前表格那样,不够用,只好再加,不够用再加,那样也累。)
本人阐述一些自己的拙见:

1、关于分辨率的使用:

  一般考虑800分辨率的使用,兼容1024。现在开始流行直接做成1024的分辨率了。一般可以设置水平居中对齐。可以兼顾大分辩率的浏览。如果考虑PDA等移动掌上设备访问的话,问题就大了去了。而且对于美工的要求就更高了,为了兼容会丢失很多细节表现。暂不建议这样做。

2、关于百分比自适应布局:

  如果用百分比进行制作,那么势必让页面的装饰图片尽量的少,因为你得兼顾最小的情况与最大的情况。而装饰性图片很多是不能这样进行适应的。有得必有失。呵。如果你用百分比进行三列式部局,顶部可以用100%,下面三列可以分别是:15%+70%+15%。(但请注意有时候需要适当缩减,因为显示器可能会让15%+70%+15%大于100%)

css滤镜详解

2007/12/04 14:05  |  分类:Css

滤镜css详解[图]

style="filter:滤镜名(属性1=值1,属性2=值2……)"
其中,“滤镜名”就是你在DW样式设置模块的滤镜下拉列表中看到的名称,属性值只需填入数字即可。

Alpha:设置透明层次
blur:创建高速度移动效果,即模糊效果
Chroma:制作专用颜色透明
DropShadow:创建对象的固定影子
FlipH:创建水平镜像图片
FlipV:创建垂直镜像图片
glow:加光辉在附近对象的边外
gray:把图片灰度化
invert:反色
light:创建光源在对象上
mask:创建透明掩膜在对象上
shadow:创建偏移固定影子
wave:波纹效果
Xray:使对象变的像被x光照射一样

1.滤镜:alpha
语法:
STYLE="filter:Alpha(Opacity=opacity,FinishOpacity=finishopacity,Style=style,
StartX=startX,StartY=startY,FinishX=finishX,FinishY=finishY)"
说明:
Opacity:起始值,取值为0-100,0为透明,100为原图.
FinishOpacity:目标值.
Style:1或2或3
StartX:任 ?
StartY:任意值
例子:filter:Alpha(Opacity="0",FinishOpacity="40",Style="2")

2.滤镜:blur
语法:
STYLE="filter:Blur(Add=add,Direction=direction,Strength=strength)"
说明:
Add:一般为1,或0.
Direction:角度,0-315度,步长为45度.
Strength:效果增长的数值,一般5即可.
例子:filter:Blur(Add="1",Direction="45",Strength="5")

3.滤镜:chroma
语法:
STYLE="filter:Chroma(Color=color)"
说明:
color:#rrggbb格式,任意.
例子:filter:Chroma(Color="#FFFFFF")

4.滤镜:DropShadow
语法:
STYLE="filter:DropShadow(Color=color,OffX=offX,OffY=offY,Positive=positive)"
说明:
Color:#rrggbb格式,任意.
Offx:X轴偏离值.
Offy:Y轴偏离值.
Positive:1或0.
例子:filter:DropShadow(Color="#6699CC",OffX="5",OffY="5",Positive="1")

5.滤镜:FlipH
语法:
STYLE="filter:FlipH"
例子:filter:FlipH

6.滤镜:FlipV
语法:
STYLE="filter:FlipV"
例子:filter:FlipV

7.滤镜:Glow
语法:
STYLE="filter:Glow(Color=color,Strength=strength)"
说明:
Color:发光颜色.
Strength:强度(0-100)
例子:filter:Glow(Color="#6699CC",Strength="5")

8滤镜:Gray
语法:
STYLE="filter:Gray"
例子:filter:Gray

9.滤镜:Invert
语法:
STYLE="filter:Invert"
例子:filter:Invert

10.滤镜:Mask
语法:
STYLE="filter:Mask(Color=color)"
例子:filter:Mask(Color="#FFFFE0")

11.滤镜:Shadow
语法:
filter:Shadow(Color=color,Direction=direction)
说明:
Color:#rrggbb格式.
Direction:角度,0-315度,步长为45度.
例子:filter:Shadow(Color="#6699CC",Direction="135")

12.滤镜:Wave
语法:
filter:Wave(Add=add,Freq=freq,LightStrength=strength,Phase=phase,Strength=strength)
说明:
Add:一般为1,或0.
Freq:变形值.
LightStrength:变形百分比.
Phase:角度变形百分比.
Strength:变形强度.
例子:filter:wave(Add="0",Phase="4",Freq="5",LightStrength="5",Strength="2")

13.滤镜:Xray
语法:
STYLE="filter:Xray"
例子:filter:Xray

Pages: Prev 1 2 3 4 5 6 7 8 Next