IE7中CSS属性的奇怪表现 - standards mode and quirks mode
今天准备修改一下blog的样式,结果无意中发现一个问题。一个使用透明效果的CSS,在之前用VS2005做的一个项目里,IE和Firefox下面都工作正常,拿到博客园以后发现用IE7浏览没有效果,而Firefox正常。查了一下相关文章,发现对HTML了解太少了。
1. 问题表现
原来项目页面代码类似如下
.mycss:hover
{
opacity:0.6; /*supported by current Mozilla, Safari, and Opera*/
-moz-opacity: 0.6; /*older Mozilla*/
-khtml-opacity: 0.6; /*older Safari*/
filter: alpha(opacity=60); /*older IE*/
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=15, Style=3, StartX=0, FinishX=100,
StartY=0,FinishY=16); /*supported by current IE*/
}
在IE 7中,页面显示以及鼠标移动到div上面的效果如下,可以看到CSS有起作用(Firefox 访问也正常)
在博客园中写的CSS跟上面完全一样,但因为博客园是用VS2003开发的,所以页面代码类似如下
.mycss:hover
{
opacity:0.6; /*supported by current Mozilla, Safari, and Opera*/
-moz-opacity: 0.6; /*older Mozilla*/
-khtml-opacity: 0.6; /*older Safari*/
filter: alpha(opacity=60); /*older IE*/
filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100,FinishOpacity=15, Style=3, StartX=0, FinishX=100,
StartY=0,FinishY=16); /*supported by current IE*/
}
上面这段代码IE 7访问时CSS透明效果没有作用,而Firefox访问正常。其实差别就在于DOCTYPE声明不一样。VS2005添加一个WebForm,DOCTYPE声明与第一段代码相同;VS2003的DOCTYPE则跟第二段代码一样。其实第二段代码把DOCTYPE改成下面任意一种,在IE 7中CSS的透明效果就会起作用。
2. DOCTYPE声明
PUBLI
C
"-// W3C// DTD HTML
4.01
Transiti
onal//
EN"
"http://
www.w
https://www.360docs.net/doc/bb18877725.html,/T
R/html4
/loose.dt
d"> (1)(2)(3)(4)(5)(6)(7)(8)
[Top
Element
]
[Availab
ility]
"[Regist
ration]//
[Organi
zation]//
[Type]
[Label]/
/
[Langua
ge]" "[URL]
">
(1)(2)(3)(4)(5)(6)(7)(8)
(1) Top Element: DTD中声明的最顶层元素,例如html。
(2) Availability: 指示标识符是公共标识符号(PUBLIC)还是系统资源(SYSTEM),例如本地文件、url等。
(3) Registration: 指示组织是否注册为ISO成员,+表示已经注册为ISO成员,-表示没有注册。W3C没有注册,所以使用-。
(4) Organization: 对于HTML、XHTML而言指维护DTD的组织标识符,W3C。
(5) Type: Public Text Class,引用对象的类型,对于HTML、XHTML而言为DTD。
(6) Label: Public Text Description,引用内容的唯一名称描述,Label里面可以包含一个版
本号(4.01),可以包含一个Defintion(有三种Definition: Frameset, Strict, Transitional,下面会描述)。
(7) Language: 语言代码。
(8) URL: 引用DTD的url。
各个浏览器对HTML、CSS的处理,在细节上存在很多差异,为了向W3C标准靠近,并且HTML、CSS的标准也在不断的发展,因此同一个浏览器的不同版本之间,也会存在细节处理上的不一致性。现在浏览器使用DOCTYPE声明来决定该使用那种模式处理HTML、CSS,通常提到的有standards mode(标准模式,strict Mode)和quirks mode(兼容模式compliant mode)。标准模式指浏览器采用尽量靠近目前W3C规范的方式,支持目前版本的HTML、XHTML、CSS规范;兼容模式指浏览器按照以前的老版本的方式处理,以兼容那些旧版本的web应用。另外需要注意的是,虽然目前主要的浏览器都支持这两种模式,但都有差别,例如Firefox除了上面两种模式外,还有一个almost standards mode。
下面是HTML 4.01的DTD,分别为Strict, Transitional, Frameset
XHTML 1.0的DTD,分别为Strict, Transitional, Frameset
3. IE 6 CSS增强、IE 7 CSS兼容性
References: Cascading Style Sheet Compatibility in Internet Explorer 7、CSS Enhancements in Internet Explorer 6
Label中的Definition三种类型:Frameset,支持FRAMESET文档;Transitional,支持除了FRAMESET以外其它所有元素;Strict,不支持W3C准备淘汰的元素、属性。这种描述有点让人糊涂,也无法跟标准standards mode、quirks mode对应上,至于具体的定义可以参考W3C 标准。
下面这个表格是比较有用的
Label Definition URL present URL not present
No !DOCTYPE
Off Off
present
Off Off
HTML (No Version
Present)
HTML 2.0 Off Off
HTML 3.0 Off Off
HTML 3.2 Off Off
HTML 4.0 No Definition Present On On
HTML 4.0 Frameset On Off
HTML 4.0 Transitional On Off
HTML 4.0 Strict On On
XHTML On On
XML On On
On On
Unrecognized !DOCT
YPE
其中On表示使用strict mode(standards mode),Off表示使用compliant mode(quirks mode)。URL present/URL not present表示DTD文档的url是否有在DOCTYPE中声明;Definition为空或者No Definition Present表示Definition没有定义。从IE 6开始支持这两种模式的切换,在strict mode下,IE尽量保持与W3C标准一致,而compliant mode下,IE将保持与以前的IE版本兼容。用这个表格,对照1中几种DOCTYPE可以知道,只有在strict mode下,IE 7才支持filter:progid:DXImageTransform.Microsoft.Alpha这个滤镜。让人奇怪的是,也只有在strict mode下,IE 7才支持filter: alpha(opacity=60),compliant mode下是不支持的,而这个写法是针对IE 5.5之前版本的。
在strict mode下面,两个比较重要的差异点:
a) Box的height、width计算问题
CSS标准中,width、height指图中Content的宽度、高度,而IE在计算宽度、高度时,将包括padding、border。
b) Box Modal问题
例如下面这段代码
div{ width : 100px; height: 100px; border: thin solid red;}
blockquote { width: 125px; height: 100px;
margin-top: 50px; margin-left: 50px;
border: thin dashed black}
cite{ display: block;
text-align: right;
border: none}
p{ margin: 0;}
some text long enough to make it interesting.
- anonymous
在compliant mode下(),页面显示为:
在strict mode下(),页面显示为:
就是说complient mode下,box会自动扩展以容纳里面的内容,而W3C CSS标准中,box 一旦指定宽度、高度,就不应当再发生变化,所以再strict mode下,div保持了给定的宽度、高度,而里面的内容自然的溢出到了div外面。
Css复习题
1、关于内容、结构和表现说法正确的是(ABD ) A、内容是页面传达信息的基础 B、表现使得内容的传达变得更加明晰和方便 C、结构就是对内容的交互及操作效果 D、内容就是网页实际要传达的信息,包括文本、图片、音乐、视频、数据、文档等。 2、关于XHTML基本语法说法正确的是(ABC ) A、在文档开始要定义文档类型 B、在根元素中应声明命名空间 C、所有标签需闭合的,空标签要加“ /”来关闭 D、注释语句为:/**/ 3、关于CSS基本语法说法正确的是( AC ) A、属性必须要包含在{}号之中 B、属性和属性值之间用等号链接 C、当有多个属性时,用“;”进行区分 D、如果一个属性有几个值,则每个属性值之间用分号分隔开 4、以下声明可将文本大小设为12px的有:(ABC) A、font-size:12px; B、font-size:9pt; C、font-size:0.75em; D、font-size:0.75; 5、关于样式表的优先级说法正确的是:(ABC ) A、直接定义在标记上的css样式级别最高 B、内部样式表次之 C、外部样式表级别最低 D、当样式中属性重复时,先设的属性起作用 6、关于浏览器默认样式说法错误的是:(ABCD ) A、IE默认页边距为10px,通过body的margin属性设置。 B、FF默认页边距为8px,通过body的padding属性设置。
C、IE默认列表左缩进为40px,通过ul、ol的margin属性设置。 D、FF默认列表左缩进为40px,通过ul、ol的padding属性设置。 7、关于CSS为什么会出现Bug说法正确的是:(ABC) A、CSS作为表现标准语言,需要在不同浏览器中实现表现层统一 B、各大主流浏览器由于不同厂家开发,所有的核心构架和代码也很难重和 C、各大厂商处于自身利益而设种种技术壁垒 D、网页设计师定义的命名空间不一样 8、CSS样式文件的类型有( ABC ) A、内部样式表 B、内联样式表 C、外部样式表 D、包含样式表 9、以下哪些Bug在FF中不会出现( ABCD ) A、双补浮向Bug B、图片间隙 Bug C、项目符号隐藏 Bug D、多余字符Bug 10、DIV/CSS布局模型包括( ABC ) A、Flow Model(流动模型) B、Float Model(浮动模型) C、Layer Model (层模型) D、box Model (盒模型) 11、关于CSS基本语法说法正确的是( AC ) A、属性必须要包含在{}号之中 B、属性和属性值之间用等于号链接 C、当有多个属性时,用“;”进行区分
CSS复习题
1、关于内容、结构和表现说法正确的是(ABD) A、内容是页面传达信息的基础 B、表现使得内容的传达变得更加明晰和方便 C、结构就是对内容的交互及操作效果 D、内容就是网页实际要传达的信息,包括文本、图片、音乐、视频、数据、文档等。 2、关于XHTML基本语法说法正确的是(ABC) A、在文档开始要定义文档类型 B、在根元素中应声明命名空间 C、所有标签需闭合的,空标签要加“/”来关闭 D、注释语句为:/**/ 3、关于CSS基本语法说法正确的是(AC) A、属性必须要包含在{}号之中 B、属性和属性值之间用等号链接 C、当有多个属性时,用“;”进行区分 D、如果一个属性有几个值,则每个属性值之间用分号分隔开 4、以下声明可将文本大小设为12px的有:(ABC) A、font-size:12px; B、font-size:9pt; C、font-size:0.75em; D、font-size:0.75; 5、关于样式表的优先级说法正确的是:(ABC) A、直接定义在标记上的css样式级别最高 B、内部样式表次之 C、外部样式表级别最低 D、当样式中属性重复时,先设的属性起作用 6、关于浏览器默认样式说法错误的是:(ABCD) A、IE默认页边距为10px,通过body的margin属性设置。 B、FF默认页边距为8px,通过body的padding属性设置。
C、IE默认列表左缩进为40px,通过ul、ol的margin属性设置。 D、FF默认列表左缩进为40px,通过ul、ol的padding属性设置。 7、关于CSS为什么会出现Bug说法正确的是:(ABC) A、CSS作为表现标准语言,需要在不同浏览器中实现表现层统一 B、各大主流浏览器由于不同厂家开发,所有的核心构架和代码也很难重和 C、各大厂商处于自身利益而设种种技术壁垒 D、网页设计师定义的命名空间不一样 8、CSS样式文件的类型有(ABC) A、内部样式表 B、内联样式表 C、外部样式表 D、包含样式表 9、以下哪些Bug在FF中不会出现(ABCD) A、双补浮向Bug B、图片间隙Bug C、项目符号隐藏Bug D、多余字符Bug 10、DIV/CSS布局模型包括(ABC) A、Flow Model(流动模型) B、Float Model(浮动模型) C、Layer Model(层模型) D、box Model(盒模型) 11、关于CSS基本语法说法正确的是(AC) A、属性必须要包含在{}号之中 B、属性和属性值之间用等于号链接 C、当有多个属性时,用“;”进行区分
CSS_style属性大全
CSS style属性大全 显示: 标签属性/属性行为集合事件滤镜方法对象样式 一、标签属性属性描述 ALIGN align 设置或获取表格排列。 ALLOWTRANSPARENCY allowTransparency 设置或获取对象是否可为透明。 APPLICATION APPLICATION 表明对象的内容是否为HTML 应用程序(HTA),以便免除浏览器安全模式。ATOMICSELECTION 指定元素及其内容是否可以一不可见单位统一选择。 BEGIN begin 设置或获取时间线在该元素上播放前的延迟时间。 BORDER border 设置或获取框架间的空间,包括3D 边框。 canHaveChildren 获取表明对象是否可以包含子对象的值。 canHaveHTML 获取表明对象是否可以包含丰富的HTML 标签的值。 CLASS className 设置或获取对象的类。 contentWindow 获取指定的frame 或iframe 的window 对象。 DA TAFLD dataFld 设置或获取由dataSrc 属性指定的绑定到指定对象的给定数据源的字段。 DA TASRC dataSrc 设置或获取用于数据绑定的数据源。 disabled 获取表明用户是否可与该对象交互的值。 END end 设置或获取表明元素结束时间的值,或者元素设置为重复的简单持续终止时间。 firstChild 获取对象的childNodes 集合的第一个子对象的引用。 FRAMEBORDER frameBorder 设置或获取是否显示框架的边框。 hasMedia 获取一个表明元素是否为HTML+TIME 媒体元素的Boolean 值。 HEIGHT height 设置或获取对象的高度。 HIDEFOCUS hideFocus 设置或获取表明对象是否显式标明焦点的值。 HSPACE hspace 设置或获取对象的水平边距。 ID id 获取标识对象的字符串。 innerText 设置或获取位于对象起始和结束标签内的文本。 isContentEditable 获取表明用户是否可编辑对象内容的值。 isDisabled 获取表明用户是否可与该对象交互的值。 isMultiLine 获取表明对象的内容是包含一行还是多行的值。 isTextEdit 获取是否可使用该对象创建一个TextRange 对象。 LANG lang 设置或获取要使用的语言。 LANGUAGE language 设置或获取当前脚本编写用的语言。
HTML+CSS标签属性大全
HTML CSS标签属性大全 a卷标, 属性名称, 简介 批注 1、跑马灯 普通卷动 滑动 预设卷动 来回卷动 向下卷动 向上卷动 向右卷动 向左卷动 卷动次数 设定宽度 设定高度 设定背景颜色 设定卷动距离 设定卷动时间 2、字体效果
…
标题字(最大)…
标题字(最小) …粗体字 …粗体字(强调) …斜体字 …斜体字(强调) …斜体字(表示定义) …底线 …底线(表示插入文字)水平线
水平线(设定大小)
水平线(设定宽度)
水平线(设定颜色)
(换行)
(完整版)《CSS样式》习题答案
一、选择题 1.CSS是( C )的缩写。 A.C olorful S tyle S heets B.C omputer S tyle S heets C.C ascading S tyle S heets D.C reative S tyle S heets 2.引用外部样式表的格式是( B )。 A. 2、内联式:把CSS样式表写在HTML对应的标记内。 格式如下:
蓝色14号文字 3、外部样式:把编辑好的CSS文档保存成“.CSS”文件,然后在
中定义。 格式如下: ..... 4、导入样式:与链入外部样式的功能基本相同,只是语法和实现方式上有差别。 格式如下: 4、几种调用方式的优先级? 从高到低:内联样式--------外部样式---------内部样式-----------导入样式 5、CSS的语法: CSS的定义是由三部分构成: 选择器,属性和属性值。 语法: selector {property: value;} --------------------- 选择符{属性:值}CSS属性代码大全
CSS属性代码大全 一、CSS文字属性: color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ font-style:itelic; /*文字斜体*/ font-variant:small-caps; /*小字体*/ letter-spacing : 1pt; /*字间距离*/ line-height : 200%; /*设置行高*/ font-weight:bold; /*文字粗体*/ vertical-align:sub; /*下标字*/ vertical-align:super; /*上标字*/ text-decoration:line-through; /*加删除线*/ text-decoration: overline; /*加顶线*/ text-decoration:underline; /*加下划线*/ text-decoration:none; /*删除链接下划线*/ text-transform : capitalize; /*首字大写*/ text-transform : uppercase; /*英文大写*/ text-transform : lowercase; /*英文小写*/ text-align:right; /*文字右对齐*/ text-align:left; /*文字左对齐*/ text-align:center; /*文字居中对齐*/ text-align:justify; /*文字分散对齐*/ vertical-align属性 vertical-align:top; /*垂直向上对齐*/ vertical-align:bottom; /*垂直向下对齐*/ vertical-align:middle; /*垂直居中对齐*/ vertical-align:text-top; /*文字垂直向上对齐*/ vertical-align:text-bottom; /*文字垂直向下对齐*/ 二、CSS边框空白: padding-top:10px; /*上边框留空白*/ padding-right:10px; /*右边框留空白*/ padding-bottom:10px; /*下边框留空白*/ padding-left:10px; /*左边框留空白 三、CSS符号属性: list-style-type:none; /*不编号*/ list-style-type:decimal; /*阿拉伯数字*/ list-style-type:lower-roman; /*小写罗马数字*/ list-style-type:upper-roman; /*大写罗马数字*/ list-style-type:lower-alpha; /*小写英文字母*/ list-style-type:upper-alpha; /*大写英文字母*/ list-style-type:disc; /*实心圆形符号*/
CSS3常用属性大全
CSS3 动画属性(Animation) @keyframes //规定动画。 animation //所有动画属性的简写属性,除了animation-play-state 属性。animation-name //规定@keyframes 动画的名称。 animation-duration //规定动画完成一个周期所花费的秒或毫秒。 animation-timing-function //规定动画的速度曲线。 animation-delay //规定动画何时开始。 animation-iteration-count //规定动画被播放的次数。 animation-direction //规定动画是否在下一周期逆向地播放。 animation-play-state //规定动画是否正在运行或暂停。 animation-fill-mode //规定对象动画时间之外的状态。 CSS 背景属性(Background) background //在一个声明中设置所有的背景属性。 background-attachment //设置背景图像是否固定或者随着页面的其余部分滚动。background-color //设置元素的背景颜色。 background-image //设置元素的背景图像。 background-position //设置背景图像的开始位置。 background-repeat //设置是否及如何重复背景图像。 background-clip //规定背景的绘制区域。 background-origin //规定背景图片的定位区域。 background-size //规定背景图片的尺寸。 CSS 边框属性(Border 和Outline) border //在一个声明中设置所有的边框属性。 border-bottom //在一个声明中设置所有的下边框属性。 border-bottom-color //设置下边框的颜色。 border-bottom-style //设置下边框的样式。 border-bottom-width //设置下边框的宽度。
(完整版)《CSS样式》习题答案
、选择题 1. CSS是(C )的缩写。 A. Colorful Style Sheets B. Computer Style Sheets C. CascadingStyle Sheets D. Creative Style Sheets 2. 引用外部样式表的格式是(B )。 A.