CSS盒模型IE5.5 ie6 差异
标准W3C盒子模型和IE盒子模型

标准W3C盒⼦模型和IE盒⼦模型CSS盒⼦模型:⽹页设计中CSS技术所使⽤的⼀种思维模型。
CSS盒⼦模型组成:外边距(margin)、边框(border)、内边距(padding)、内容(content)。
CSS盒⼦模型分为:标准W3C盒⼦模型,IE盒⼦模型,注意在两种模型中宽(width)和⾼(height)包括属性的不同。
标准W3C盒⼦模型:W3C模型中: CSS中的宽(width)=内容(content)的宽 CSS中的⾼(height)=内容(content)的⾼eg: <div style="width:50px;height:50px;padding:2px;border:1px solid blue;margin:3px;"> W3C模型 </div>则此div的实际⼤⼩: div⾼=height+(padding+border+margin)*2=50+(2+1+3)*2=62px; div宽=width+(padding+border+margin)*2=50+(2+1+3)*2=62px;div内容占⼤⼩: div⾼=height=50px; div宽=width=50px;IE盒⼦模型:IE模型中: CSS中的宽(width)=内容(content)的宽+(border+padding)*2 CSS中的⾼(height)=内容(content)的⾼+(border+padding)*2eg: <div style="width:50px;height:50px;padding:2px;border:1px solid blue;margin:3px;"> W3C模型 </div>则此div的实际⼤⼩: div⾼=height+margin*2=50+3*2=56px; div宽=width+margin*2=50+3*2=62px;div内容占⼤⼩: div⾼=height-(border+padding)*2=50-(1+2)*2=44px; div宽=width-(border+padding)*2=50-(1+2)*2=44px;解决办法:在代码顶部加如下的 doctype 声明, <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "/tr/xhtml1/dtd/xhtml1-transitional.dtd">使页⾯以W3C盒⼦模型渲染。
CSSHACK区分兼容ie5ie6ie7ff技巧,float闭合技巧(转载)...

CSSHACK区分兼容ie5ie6ie7ff技巧,float闭合技巧(转载)...一、CSS HACK以下两种方法几乎能解决现今部分HACK.1, !important随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)#wrapper{width: 100px!important; /* IE7+FF */width: 80px; /* IE6 */}2, IE6/IE77对FireFox*+html 与 *html 是IE特有的标签, firefox 暂不支持.#wrapper{#wrapper { width: 120px; } /* FireFox */*html #wrapper { width: 80px;} /* ie6 fixed */*+html #wrapper { width: 60px;} /* ie7 fixed */}注意:*+html 对IE7的HACK 必须保证HTML顶部有如下声明,”<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN””“>”二、float 闭合关于 clear float 的原理可参见 [How To Clear Floats Without Structural Markup]将以下代码加入Global CSS 中,给需要闭合的div加上class=”clearfix”即可,屡试不爽./* Clear Fix */.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden;}.clearfix{display:inline-block;}/* Hide from IE Mac \*/.clearfix {display:block;}/* End hide from IE Mac *//* end of clearfix */三、其他兼容技巧1, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)2, 居中问题.1).垂直居中.将 line-height 设置为当前 div 相同的高度, 再通过 vertical-align: middle.( 注意内容不要换行.)2).水平居中. margin: 0 auto;(当然不是万能)3, 若需给 a 标签内内容加上样式, 需要设置 display: block;(常见于导航标签)4, FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下margin加倍等问题.5, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)6, 作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应.7, 关于手形光标. cursor: pointer. 而hand 只适用于 IE.。
CSS浏览器兼容性处理解决不同浏览器的样式差异

CSS浏览器兼容性处理解决不同浏览器的样式差异CSS浏览器兼容性处理:解决不同浏览器的样式差异在网页设计与开发过程中,我们经常会遇到在不同浏览器下显示效果不一致的情况。
这是由于不同浏览器对CSS样式的解析和支持程度不同导致的。
为了解决这些浏览器的兼容性问题,我们需要采取一些措施,使得网页在各种浏览器下都能够达到一致的效果。
本文将介绍一些常见的CSS兼容性处理技巧,帮助您解决不同浏览器的样式差异。
一、CSS hack技巧1. 选择器优先级在CSS中,选择器的优先级决定了哪个样式会被浏览器应用。
可以通过提高选择器的优先级来确保样式被正确地应用。
一般来说,ID选择器的优先级最高,紧接着是类选择器和属性选择器,最后是标签选择器。
2. 浏览器前缀某些CSS属性在不同浏览器下需要添加前缀才能得到正确的效果,例如-webkit、-moz和-o等。
通过添加不同浏览器的前缀,可以确保样式在各个浏览器中一致地显示。
可以使用CSS预处理器如Sass或Less来自动生成带有前缀的代码。
3. 条件注释条件注释是一种只有特定浏览器会解析的代码,通过条件注释可以为不同浏览器提供不同的样式。
例如:<!--[if IE]>xxx<![endif]--> 可以仅在IE浏览器中应用xxx样式,从而解决IE浏览器的兼容性问题。
二、CSS兼容性库1. Normalize.cssNormalize.css是一个跨浏览器的CSS文件,它几乎可以为所有的HTML元素提供一致的默认样式。
通过引入Normalize.css,可以统一各个浏览器的默认样式,从而避免不同浏览器之间的样式差异。
2. AutoprefixerAutoprefixer是一个基于CSS规范的自动添加浏览器前缀的工具。
它可以根据你设置的浏览器兼容范围自动添加所需的前缀,大大简化了处理浏览器兼容性的工作。
三、媒体查询1. 响应式设计媒体查询是CSS3的一个重要特性,它可以根据不同的设备或屏幕尺寸应用不同的样式,从而实现响应式设计。
css hack

为了不同浏览器的观看效果,我们当然没必要为每个浏览器的不同版本写一个样式,这里我们利用“IE条件注释”。
找了一些相关的CSS HACK后,总结的几个方法。
1. 区别FF和IE1-1首先,当然是!important大法,可以提升指定样式规则的应用优先权,如下面的例子:插入代码:div{background-color: red !important;background-color: blue;}因为!important声明在IE6中并不是绝对的,它会被之后的同名属性定义所替换。
也就是说在上面的例子中,IE6所应用的是最后一个背景色的值,即“blue”;而在FF中背景色的值为“red”。
1-2还有一种方法,就是IE浏览器可以识别“>”等一些符号,如“~”、“`”、“插入代码:div{background-color: red;>background-color: blue;}在FF中得到的是背景色红色,而在IE中得到的背景色是蓝色,根据样式重定义的规则,如果浏览器可以识别“>”,则应该得到的蓝色的背景,因此可以知道“>”只有IE可以识别。
这样,我们就可以把FF和IE的样式分离开。
下面就是解决IE自己的问题了。
2. 区别IE5.5和IE的其他版本看一个例子:插入代码:div{>background-color: black;>background-color /*IE5.5*/: green;}这个例子使用了“>”,只有IE可以识别,在IE6中得到了黑色的背景;而在IE5.5中得到的绿色的背景;在IE5中也得到了黑色的背景。
这就说明了第二句定义只有IE5.5能识别,这是个很早就公布的HACK,可以在网上找到相关的资料,要注意的就是在属性名之后是有一个空格的。
到此我们已经把FF、IE5.5、IE6分离出来了,那IE5呢?其实现在我们只要把IE5跟IE6分开就OK了。
IE盒模型和标准盒模型之间的差别

IE盒模型和标准盒模型之间的差别
1、W3C标准盒⼦模型
w3c盒⼦模型的范围包括margin、border、padding、content,并且content部分不包含其他部分
2、IE盒⼦模型
IE盒⼦模型的范围包括margin、border、padding、content,和w3c盒⼦模型不同的是,IE盒⼦模型的content部分包含了padding和border
总结:
IE5.5及更早的版本使⽤的是IE盒模型。
IE6及其以上的版本在标准兼容模式下使⽤的是W3C的盒模型标准。
我们说这是⼀个好消息因为这意味着此盒模型问题只会出现在IE5.5及其更早的版本中。
只要为⽂档设置⼀个DOCTYPE,就会使得IE遵循标准兼容模式的⽅式⼯作。
另外,我们现在应该能理解了,css3的box-sizing属性给了开发者选择盒模型解析⽅式的权利。
W3C的盒模型⽅式被称为“content-box”,IE的被称为“border-box”,使⽤box-sizing: border-box;就是为了在设置有padding值和border值的时候不把宽度撑开。
前端开发中常见的浏览器兼容性问题与解决方案

前端开发中常见的浏览器兼容性问题与解决方案随着移动互联网及云计算的迅速发展,前端开发也越来越重要。
然而,不同浏览器之间的差异性造成了许多兼容性问题,给开发者带来了不小的困扰。
本文将介绍一些前端开发中常见的浏览器兼容性问题,并提供一些解决方案。
一、CSS兼容性问题1. 盒模型差异:不同浏览器对盒模型的解析方式有所不同,主要体现在边框和内边距的计算上。
解决方案是使用CSS的box-sizing属性将盒模型设置为border-box,以保证在不同浏览器中的显示效果一致。
2. 行内元素的内外边距:在IE6及更早的版本中,行内元素会忽略内外边距的设置。
解决方案是将行内元素转换为块级元素,或者使用display:inline-block属性来呈现行内块元素的效果。
3. 清除浮动:不同浏览器对清除浮动的方式支持度各不相同。
常用的清除浮动方法有使用overflow:hidden属性、添加空元素并清除浮动、使用clearfix类等。
二、JavaScript兼容性问题1. DOM操作差异:不同浏览器对于DOM操作的实现方式存在差异,例如通过innerHTML属性插入HTML片段在IE中可能导致内存泄漏。
解决方案是尽量使用createElement和appendChild等原生DOM方法来进行元素的动态创建和操作。
2. 事件处理差异:不同浏览器对于事件处理的机制有所不同,例如IE不支持事件捕获,而是通过attachEvent方法进行事件绑定。
解决方案是使用事件委托的方式来减少事件绑定的数量,同时可以借助框架如jQuery等来解决跨浏览器兼容性问题。
3. AJAX兼容性:不同浏览器对XMLHttpRequest对象的支持有所不同,特别是IE6及更早的版本。
解决方案是使用封装好的Ajax库或者利用浏览器的原生ActiveXObject对象来实现跨浏览器的AJAX请求。
三、HTML5兼容性问题1. 标签支持度不足:HTML5中的一些新标签如<header>、<nav>、<section>等在旧版本的浏览器中可能无法正确解析。
(二)css盒子模型

属性作⽤padding-left 左内边距padding-right 右内边距padding-top 上内边距padding-bottom 下内边距写法意思padding:10px;上下左右内边距均为 10像素padding:5px 10px;上下内边距是5像素,左右内边距是10像素padding:5px 10px 15px;上内边距是5px ,左右内边距是10px ,下边距是15px padding:5px 10px 15px 20px;上是5px ,右是10px ,下是15px ,左是20px 从上顺时针(⼆)css 盒⼦模型记录前端学习过程,⽅便查漏补缺,如有错误,请评论告知~⼀、⽹页布局的本质⽹页布局过程: 1、先准备好相关的⽹页元素,⽹页元素基本都是盒⼦Box 2、利⽤CSS 设置好盒⼦样式,然后摆放到相应位置 3、往盒⼦⾥装内容⽹页布局的核⼼本质:就是利⽤CSS 摆盒⼦。
⼆、盒⼦模型所谓盒⼦模型:就是把HTML 页⾯中的布局元素看作是⼀个矩形的盒⼦,也就是⼀个盛装内容的容器。
CSS 盒⼦模型本质上是⼀个盒⼦,封装周围的HTML 元素,它包括:边框、外边框、内边距和实际内容其中:content :实际内容padding (内边距):盒⼦边框与内容之间的距离margin (外边距):盒⼦与盒⼦之间的距离border (边框):字⾯意思三、内边距(padding )padding 属性⽤于设置内边距,即边框与内容之间的距离padding 属性的复合写法可以有⼀到四个值也可以单独指定padding 值:padding-top :10px; (其他⽅位同理)注:padding 可能会影响盒⼦的实际⼤⼩。
属性作⽤margin-left左外边距margin-right右外边距margin-top上外边距margin-bottom下外边距如上图,⼀个100 x 100的盒⼦,在设置padding 为30px 以后,盒⼦实际⼤⼩变为160 x 160因此在使⽤时,应当注意padding 对盒⼦⼤⼩的影响,以设置盒⼦的最终⼤⼩。
盒模型

我们可以通过声明宽和高来定义一个元素的内容(content)的宽度和高度。
如果没有做任何的声明,宽度和高度的默认值将是自动(auto)w3schools上对于盒子模型的图示如下在图的下方有一段很重要的话Important:When you specifythe width and height properties of an element with CSS,you are just settingthe width and height of the content area.也就是说当我们在css中设计一个块级元素的width和height属性时比如.box{width :100px; height:100px}时,其中的width 和height仅仅是对content部分设置的,即定义上图中padding下虚线方框内区域的长和宽。
而不是内容,内边距,边框的总和(但在IE的早期版本包括IE6中,盒子模型的width和height却恰恰是这样定义的,尽管符合人们思考的逻辑,但是不符合规范,这会造成严重的问题)对宽度为自动状态的静态(static)定位元素(即无定位),和相对定位(relatively positioned)元素来说,计算宽度的方法是,将他们包含块(containing block)[注释2]的宽度减去此元素的横向的所有外边距,内边距,边框,滚动条。
也就是说,从包含块的宽度中除去元素的横向外边距,内边距,边框,滚动条(如果存在的话)的宽度,所剩的值就是了。
[注释2]:包含块(containing block)。
如果你知道绝对定位和相对定位的实现原理的话,这个注释可以忽略。
包含块可以理解为一个矩形,而这个矩形的作用是为它里面包含的元素提供一个参考,内部元素的尺寸和位置的计算往往是由该元素所在的包含块决定的。
例如在绝对定位中,距离它最近的已定位(position为fixed,relative或absolute)的祖先元素即为包含块。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CSS教程:盒模型(BOX Model)
如果想熟练掌握DIV和CSS的布局方法,首先要对盒模型有足够的了解。
每个HTML元素都可以看作一个装了东西的盒子,盒子里面的内容到盒子的边框之间的距离即填充(padding),盒子本身有边框(border),而盒子边框外和其他盒子之间,还有边界(margin),如图1所示。
图1盒模型图解
填充、边框和边界都分为“上右下左”四个方向,既可以分别定义,也可以统一定义。
CSS内定义的宽(width)和高(height),指的是填充以内的内容范围,因此一个元素:实际宽度=左边界左边框左填充内容宽度(width)右填充右边框右边界
实际高度=上边界上边框上填充内容高度(height)下填充下边框下边界
例如有CSS定义如下:
#menu{
background:#9cf;
margin:20px;
border:10pxsolid#039;
padding:40px;
width:200px;
}
则其实际宽度如图2所示。
图2元素总宽度的计算
而对于WindowsIE5.x及更前的版本,把这个盒模型的定义搞错了,它认为:
宽度(width)=元素内容填充边框
这个确实很容易搞错,很多对于盒模型定义没有深入了解的人也同样容易犯这个错误。
例如:
#menu{
width:200px;
padding:5px;
border:1pxsolid#ccc;
}
那么,在IE5.5中div实际内容的宽度将是200px-5px-1px-5px-1px=188px,而在Firefox、Opera及IE6等浏览器内宽度则是200px。
这正是很多新手发现自己定义的页面在不同的浏览器内看会发生错位的原因之一。
因此就需要采取一定的弥补措施,一般可以避免同时定义元素的宽度和填充、边框,而将一些定义放到元素的子元素内定义。
如果必须同时定义这几个值,也可以使用一些手段来校正这个错误,即俗称的csshack,其基本思想就是为没有错误的浏览器提供一个正确的宽度值,而对IE5.5等有问题的浏览器提供另一个值。
例如如下的写法:
#menu{
padding:5px;
width:110px;
voice-family:"\"}\"";
voice-family:inherit;
width:100px;
}
定义中第一个width:110px,是IE5.5认为的元素的宽度,100px 5px 5px。
voice-family:"\"}\"";
voice-family:inherit;
是CSS2.0中的语音属性,由于WindowsIE5.5不完全支持CSS2.0,不识别此属性,因此跳到下一个选择符。
但是其他浏览器(包括IE6)会继续解读下面的定义,由于css是“层叠”的,即对于同一个选择符的相同的属性,后面的定义会覆盖掉前面的定义,因此,对于其他的浏览器,#menu的宽度为最后的100px。
另一个常用的hack手法是使用!important(声明),声明加在CSS属性定义的后面,此条属性的级别将变成最高,即使后面有相同的定义也不会覆盖掉声明过的定义,不过IE不支持!important。
例如有如下css定义:
#box{
border:1pxsolid#B51C8C;
width:768px;
}。