Css3之高级-4 Css Hack

一、CSS Hack

标准模式和混杂模式

- IE6之前,不同浏览器间没有兼容性可言

- IE6之后浏览器厂家间开始寻求标准统一,但仍允许向前兼容,于是产生了不同的运行模式

- 浏览器运行模式可以分为:

- 混杂模式 (Quirks Mode)

- 标准模式 (Standard Mode)

- 准标准模式 (Almost Standard Mode)

- 不同模式下,浏览器对CSS(尤其是盒模型)和JS解析效果会产生不同

- 其他浏览器会根据DOCTYPE自动进行模式选择,IE除此之外还可以手动选择运行模式

- 触发混杂模式

- 不声明DOCTYPE

- 触发准标准模式(遵循标准,仍兼容部分非标准代码)

- <!-- HTML 4.01 过渡型 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"                             "http://www.w3.org/TR/html4/loose.dtd">

- <!-- HTML 4.01 框架集型 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"                                 "http://www.w3.org/TR/html4/frameset.dtd">

- <!-- XHTML 1.0 过渡型 -->

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

- <!-- XHTML 1.0 框架集型 -->

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

- 触发标准模式(遵循标准,不允许使用非标准代码)

- <!-- HTML 4.01 严格型 -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

- <!-- XHTML 1.0 严格型 -->

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

- <!-- HTML 5 -->

<!DOCTYPE html>

CSS Hack 概念

- 浏览器的类型及版本的不同会造成 CSS 效果不尽相同

- 不同厂商的浏览器,比如 IE、Safari、FireFox、Chrome、Opera等

- 同一厂商的浏览器的不同版本,比如IE6、IE7

- 需要针对不同的浏览器编写不同的 CSS

- 实现浏览器兼容

- 也可以为不同版本的浏览器定制编写不同的 CSS 效果

浏览器兼容性

- 根据不同的浏览器对 CSS 的支持及解析结果

- margin 和 padding

  

- 居中布局

- IE 低版本中,对于父元素用 text-align:center;

- 其他,子元素需用 margin: 0 auto;

- 元素高度与内容

- IE 低版本中,元素的高度至少包含内容

- 其他,内容超出高度,则显示

- 子元素设置上外边距时,父元素需要设置边框或者外边距

- HTML

- CSS

- 显示结果

- 其他浏览器

- 设置父元素的边框(可以设置为透明)

- 或者设置父元素的内边距,替代子元素的外边框

CSS Hack 原理

- 主要有

- CSS 类内部 Hack

- 选择器 Hack

- HTML 头部引用 Hack

CSS 类内部 Hack

- 属性前缀

- 在 CSS 样式属性名前加上一些只有特定浏览器才能识别的 hack 前缀

选择器Hack

- 选择器前缀

- 在 CSS 选择器前加上一些只有某些特定浏览器才能识别的前缀

- *前缀: IE6,比如 *html

- *+前缀: IE7,比如 *+html

- @media screen\9{...},只对IE6/7生效

- ...

HTML 头部引用 Hack

- 即 IE 条件注释

- 条件注释的基本结构和 HTML的注释(<!-->)相同

- IE 根据 if 条件来判断是否解析条件注释里的内容

- gt : greater than , 选择条件版本以上版本,不包含条件版本

- lt : less than,选择条件版本以下版本,不包含条件版本

- gte: greater than or equal,选择条件版本以上的版本,包含条件版本

- lte: less than or equal, 选择条件版本以下版本,包含条件版本

- !: 选择条件版本以外所有版本,无论高低

- 只在 IE 下生效

- <!--[if IE]> 这段文字只在 IE 浏览器显示 <![endif]-->

- 只在 IE6 下生效

- <!--[if IE 6]> 这段文字只在IE6 浏览器显示<![endif]-->

- 只在 IE6 以上版本生效

- <!--[if IE gte 6]> 这段文字只在IE6以上(包括)版本IE浏览器显示<![endif]-->

- 只在 IE8 上不生效

- <!--[if !IE 8]> 这段文字在非IE8浏览器显示 <![endif]-->

- 非 IE 浏览器生效

- <!--[if !IE]> 这段文字只在非IE浏览器显示 <![endif]-->

总结:本章内容主要介绍了 Css Hack

时间: 2024-11-05 14:26:29

Css3之高级-4 Css Hack的相关文章

Css3之高级-5 Css转换(简介、2D转换、3D转换)

一.转换简介 转换概述 - 转换是使元素改变形状.尺寸和位置的一种效果 - 又称为变形,即,可以向元素应用2D 或 3D 转换,从而对元素进行旋转.缩放.移动或倾斜 - 2D 转换: 使元素在 X轴 和 Y轴 平面上发生变化,改变其形状.尺寸和位置 - 3D 转换:元素还可以在 Z 轴上发生变化 转换属性 - transform 属性向元素应用 2D 或者 3D 转换 - 指定一组转换函数,取值 - transform: none/transform-function; - none - 默认值

Css3之高级-7 Css动画(概述、关键帧、动画属性)

一.动画概述 动画概念 - 过渡属性只能模拟动画效果 - animation 属性可以制作类似 Flash 动画 - 通过关键帧控制动画的每一步 - 使元素从一种样式逐渐变化为另一种样式 - 实现复杂的动画效果 - 浏览器兼容性 - 最新版本支持良好 - Chrome 和 Safari 需要前缀 -webkit- - FireFox 需要前缀 -moz- - Opera 需要前缀 -o- 动画示例 - 声明动画 - 创建一个已命名的动画 - 使用 @keyframes 声明动画的关键帧 - 为元

Css3之高级-1 Css复杂选择器(兄弟选择器 、属性选择器、伪类选择器、伪元素选择器)

一.兄弟选择器 相邻兄弟选择器 - 相邻兄弟选择器匹配指定元素的相邻兄弟元素 - 如果需要选择紧接在另一个元素后的元素,而且二者有相同的父元素,可以使用相邻兄弟选择器 - 使用加号(+)作为结合符 通用兄弟选择器 - 通用兄弟选择器匹配某元素后面的所有兄弟元素 - 使用符号(~)作为结合符,即 element1~element2 - 两种元素必须拥有相同的父元素,但是element2不必直接紧随element1 二.属性选择器 属性选择器 - 属性选择器能够将元素附带的属性用于选择器中,从而对带

Css3之高级-2 Css内容生成(内容生成、计数器)

一.内容生成 内容生成示例 伪元素 :before 和 :after - 使用伪元素 :before 和 :after可以将内容添加到某个选择器定义的单个或者多个元素的每一个实例之前或者之后 - 实现为文档添加内容的效果 内容content - content 属性与:before及:after 伪元素配合使用,来插入生成内容 - 常用的取值 - url : 图像 - 字符串 : 纯文本 - 计数器 二.计数器 计数器示例 content-reset 属性 - counter-reset 属性用

Css3之高级-3 Css多列属性(分隔列、列间隔、列规则、浏览器兼容性)

一.多列属性 分割列 - column-count 属性规定元素应该被分隔的列数 列间隔 - column-gap 属性规定列之间的间隔 列规则 - column-rule 属性规定列之间的宽度.样式和颜色 - 语法为: column-rule: width style color; 浏览器兼容性 - Internet Explorer 10 和 Opera 支持多列属性 - FireFox 需要前缀 -moz- - Chrome 和 Safari 需要前缀 -webkit- 总结:本章内容主要

css3复杂选择器+内容生成+Css Hack

1.复杂选择器2.内容生成3.多列4.CSS Hack(浏览器兼容性)=======================================1.复杂选择器 1.兄弟选择器 1.特点: 1.通过位置关系来匹配元素(平级) 2.只能向后找,不能向前找 2.兄弟选择器-相邻兄弟选择器 1.什么是相邻兄弟 紧紧挨在一起的元素,称之为相邻兄弟 <div id="d1"></div> <p id="p1"></p> <

让IE和Firefox兼容的CSS技巧集合css hack

CSS对浏览器的兼容性有时让人很头疼,或许当你了解当中的技巧跟原理,就会觉得也不是难事,从网上收集了IE7,6与Fireofx的兼容性处理方法并整理了一下.对于web2.0的过度,请尽量用xhtml格式写代码,而且DOCTYPE 影响 CSS 处理,作为W3C的标准,一定要加 DOCTYPE声明. CSS技巧 1.div的垂直居中问题 vertical-align:middle; 将行距增加到和整个DIV一样高 line-height:200px; 然后插入文字,就垂直居中了.缺点是要控制内容不

关于CSS Hack

由于不同厂商的浏览器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一厂商的浏览器的不同版本,如IE6和IE7,对CSS的解析认识不完全一样,导致生成的不是我们所需要的页面效果. 这个时候我们就需要针对不同的浏览器去写不同的CSS,让它能够同时兼容不同的浏览器,在不同的浏览器中也能得到我们想要的页面效果. 简单的说,CSS hack的目的就是使你的CSS代码兼容不同的浏览器.当然,我们也可以反过来利用CSS hack为不同版本的浏览

CSS hack方式

史上最全的CSS hack方式一览 做前端多年,虽然不是经常需要hack,但是我们经常会遇到各浏览器表现不一致的情况.基于此,某些情况我们会极不情愿的使用这个不太友好的方式来达到大家要求的页面表现.我个人是不太推荐使用hack的,要知道一名好的前端,要尽可能不使用hack的情况下实现需求,做到较好的用户体验.可是啊,现实太残酷,浏览器厂商之间历史遗留的问题让我们在目标需求下不得不向hack妥协,虽然这只是个别情况.今天,结合自己的经验和理解,做了几个demo把IE6~IE10和其他标准浏览器的C