IE6.0、IE7.0 、FireFox 在样式中的不同写法.doc

IE6.0、IE7.0 、FireFox 在样式中的不同写法

2009年3月26日 15:44:27 发布:hugo

或许你一直在抱怨为什么要专门为IE和FF写不同的CSS,为什么IE这样让人头疼,然后一边写css,一边咒骂那个可恶的M$ IE。其实对于css的标准支持方面,IE并没有我们想象的那么可恶,关键在于IE和FF的默认值不一样而已,掌握了这个技巧,你会发现写出兼容FF和IE的css并不是那么困难,或许对于简单的css,你完全可以不用”!important”这个东西了。

我们都知道,浏览器在显示网页的时候,都会根据网页的css样式表来决定如何显示,但是我们在样式表中未必会将所有的元素都进行了具体的描述,当然也没有必要那么做,所以对于那些没有描述的属性,浏览器将采用内置默认的方式来进行显示,譬如文字,如果你没有在css中指定颜色,那么浏览器将采用黑色或者系统颜色来显示,div或者其他元素的背景,如果在css中没有被指定,浏览器则将其设置为白色或者透明,等等其他未定义的样式均如此。所以有很多东西出现FF和IE显示不一样的根本原因在于它们的默认显示不一样,而这个默认样式该如何显示我知道在w3中有没有对应的标准来进行规定,因此对于这点也就别去怪罪IE了。所以解决办法就出来了,那就是对于不统一的默认显示方式,在css中给指定具体数值就可以了,下面我将就我知道的默认标签来进行说明。

列表标签UL LI

这个是朋友抱怨得最多的标签,说每次遇到这个标签的时候IE和FF总是显示不一致。行,既然如此,你何不在样式表中将这个标签的属性给定义了,如 ul{padding:0;margin:0;},然后再看看,是不是一致了?对于ul标签,IE会自动缩进几个像素,而FF则不是这样,所以这就是根本原因.当然,我上面的定义肯定显示不太美观,这个时候你可以手动进行调节,譬如调节成 {padding:0;margin:0 0 0 10px;list-style-position: inside;} 所以今后对于这个标签,只要你发现IE和FF不一致,就去看看对应的css有哪些属性,然后进行夸张的描述,用IE和FireFox查看之,如果一致则有效.FORM标签,这个标签在IE中,将会自动margin一些边距,而在FF中margin则是0,因此,如果想显示一致,所以最好在css中指定margin和padding,针对上面两个问题,我的css中一般首先都使用这样的样式ul,form{margin:0;padding:0;}给定义死了,所以后面就不会为这个头疼了.

关于更多默认值不同的标签,希望大家继续发掘,希望此文能抛砖引玉。

下面的问题不是默认值的问题了.

对于排版,我们用得最多的css描述可能就是float:left.有的时候我们需要在n栏的float div后面做一个统一的背景,譬如:<div id="page"> <div id="left"></div> <div id="center"></div> <div id="right"></div> </div>,比如我们要将page的背景设置成蓝色,以达到所有三栏的背景颜色是蓝色的目的,但是我们会发现随着left center right的向下拉长,而page居然保存高度不变,问题来了,原因在于page不是float属性,而我们的page由于要居中,不能设置成float,所以我们应该这样解决
<div id=”page”>
    <div id=”bg” style=”float:left;width:100%”>
        <div id=”left”></div>
        <div id=”center”></div>
        <div id=”right”></div>
    </div>
</div>
再嵌入一个float left而宽度是100%的DIV解决之.

1, !important

随着IE7对!important的支持, !important 方法现在只针对IE6的HACK.(注意写法.记得该声明位置需要提前.)
<style>
#wrapper{width: 100px!important; /* IE7+FF */width: 80px; /* IE6 */}
</style>

2, IE6/IE77FireFox

*+html 与 *html 是IE特有的标签, firefox 暂不支持.而*+html 又为 IE7特有标签.
<style>
#wrapper
{
#wrapper { width: 120px; } /* FireFox */
*html #wrapper { width: 80px;} /* ie6 fixed */
*+html #wrapper { width: 60px;} /* ie7 fixed, 注意顺序 */
}
</style>

注意:
*+html 对IE7的HACK 必须保证HTML顶部有如下声明:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

3,万能 float 闭合(非常重要!)

将以下代码加入Global CSS 中,给需要闭合的div加上 class="clearfix" 即可,屡试不爽.
<style>
/* 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 */
</style>

3,其他兼容技巧(再次啰嗦)

①, FF下给 div 设置 padding 后会导致 width 和 height 增加, 但IE不会.(可用!important解决)
②,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; 就可以了。
③,若需给 a 标签内内容加上 样式, 需要设置 display: block;(常见于导航标签)
④,FF 和 IE 对 BOX 理解的差异导致相差 2px 的还有设为 float的div在ie下 margin加倍等问题.
⑤, ul 标签在 FF 下面默认有 list-style 和 padding . 最好事先声明, 以避免不必要的麻烦. (常见于导航标签和内容列表)
⑥,作为外部 wrapper 的 div 不要定死高度, 最好还加上 overflow: hidden.以达到高度自适应.
⑦, 关于手形光标. cursor: pointer. 而hand 只适用于 IE.

1 盒模型不同解释.

#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-}

2 浮动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;

3 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;}

4 页面的最小宽度

min-width是个非常方便的CSS命令,它可以指定元素最小也不能小于某个宽度,这样就能保证排版一直正确。但IE不认得这个,
而它实际上把width当做最小宽度来使。为了让这一命令在IE上也能用,可以把一个<div> 放到 <body> 标签下,然后为div指定一个类:
然后CSS这样设计:
#container{ min-width: 600px; 
width:expression(document.body.clientWidth < 600? "600px": "auto" );}
第一个min-width是正常的;但第2行的width使用了Javascript,这只有IE才认得,这也会让你的HTML文档不太正规。它实际上通过Javascript的判断来实现最小宽度。

5 清除浮动

.hackbox{ display:table; //将对象作为块元素级的表格显示}或者.hackbox{ clear:both;}
或者加入:after(伪对象),设置在对象后发生的内容,通常和content配合使用,IE不支持此伪对象,非Ie 浏览器支持,
所以并不影响到IE/WIN浏览器。这种的最麻烦的......#box:after{ content: "."; display: block; height: 0; clear: both; visibility: hidden;}

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

左边对象浮动,右边采用外补丁的左边距来定位,右边对象内的文本会离左边有3px的间距.
#box{ float:left; width:800px;}
#left{ float:left; width:50%;}
#right{ width:50%;}
*html #left{ margin-right:-3px; //这句是关键}
HTML代码<div id="box"> <div id="left"></div> <div id="right"></div></div>

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

p[id]{}div[id]{}
这个对于IE6.0和IE6.0以下的版本都隐藏,FF和OPera作用
属性选择器和子选择器还是有区别的,子选择器的范围从形式来说缩小了,属性选择器的范围比较大,如p[id]中,所有p标签中有id的都是同样式的.

8 IE捉迷藏的问题

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

9 高度不适应

高度不适应是当内层对象的高度发生变化时外层高度不能自动进行调节,特别是当内层对象使用
margin 或paddign 时。
例:
<div id="box"> 
<p>p对象中的内容</p> 
</div> 
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属性。

 

转载于:https://www.cnblogs.com/huanli/archive/2011/12/28/2304544.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/297606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我女朋友让我删前任,我明明删了她还是要分手...

1 人家都已经删了你还有什么不满意&#xff1f;&#xff1f;&#xff1f;▼2 高跟鞋翻车现场▼3 渣男总能渣出新花样▼4 现在的小朋友懂得也太多了吧&#xff01;▼5 耍帅不可怕&#xff0c;谁失败谁尴尬▼6 朋友&#xff0c;你清醒一点&#xff01;那个小手是鼠标&#…

计算机专业的双证在职研究生,计算机类在职研究生最终能获得双证吗难度是不是很大呢...

在职读研其实优势真的很多&#xff0c;不然也不会每年都有那么多在职者不辞工作的辛苦还有坚持报考&#xff0c;毕竟凭借这份经历可以学习到高端的知识&#xff0c;可以帮助学员提高相应的专业能力&#xff0c;而最终证书的获取也能相应地提升职员在职场的地位。那么&#xff0…

你知道哪些开源基金会?

从 RMS 创立 FSF 发起自由软件运动&#xff0c;再到 OSI 成立并明确开源软件定义&#xff0c;这种崇尚开放协作的软件开发模式迅速席卷全球。除 FSF 与 OSI 外&#xff0c;还陆续诞生了许多致力于推广和发展开源的基金会。开源基金会对于开源软件和开源社区的组织、发展、协同创…

软件项目送上门来了,还要学会说不,接了项目拿了定金噩梦才刚刚开始

今年前前后后也遇到了不少软件项目&#xff0c;想来想去还是拒绝了其中的大部分项目&#xff0c;当然也有一部分是客户拒绝我的&#xff0c;把这些经验教训分享给大家&#xff0c;一起探讨探讨&#xff0c;接了项目很容易深陷泥潭&#xff0c;累得死去活来不值得。拒绝软件项目…

bpmn如何查看代码 idea_提高程序员效率的IDEA插件推荐(五大神器)

1. SequenceDiagramSequenceDiagram 可以根据代码调用链路自动生成时序图&#xff0c;超级赞&#xff0c;超级推荐&#xff01;这对研究源码&#xff0c;梳理工作中的业务代码有极大的帮助&#xff0c;堪称神器。安装完成后&#xff0c;在某个类的某个函数中&#xff0c;右键 -…

(笔记)堆和栈的区别-两种不同的数据结构

堆栈其实是两种数据结构。堆栈都是一种数据项按序排列的数据结构&#xff0c;只能在一端(称为栈顶(top))对数据项进行插入和删除。 要点&#xff1a;堆&#xff1a;顺序随意. 栈&#xff1a;后进先出(Last-In/First-Out) 堆和栈的区别 一、预备知识—程序的内存分配一个由C/C编…

.net post提交后接收返回数据_Ajax提交表单的方式

和提交普通表单一样发送数据浏览器端代码$使用开发者工具查看请求体https://cdn.jsdelivr.net/gh/zhangfu1111/Blogimagemanager/images/springboot20200712150040.pngcontroller代码ResponseBody整个请求体是一个JSON数据浏览器端代码$使用开发者工具查看请求体![](https://cd…

javascript高程3 学习笔记(三)

执行环境 执行环境是什么&#xff1f; javascript的解释器每次开始执行一个函数时&#xff0c;都会为每个函数创建一个执行环境&#xff08;execution context&#xff09;。执行环境定义了变量或者函数有权访问的其他数据&#xff0c;决定了他们各自的行为。与执行环境相关的变…

一张纸还能上天能救命?理工男宁愿放弃NASA百万年薪,也要回家折纸?!

全世界有3.14 % 的人已经关注了爆炸吧知识一张纸能做什么&#xff1f;小时候&#xff0c;它可能默默记录着你天马行空的想象力&#xff1a;而到了艺术家手中&#xff0c;它们就会变幻成各种各样精妙绝伦的艺术品&#xff1a;可当一双文艺的手&#xff0c;遇上一颗聪明无比的“理…

【干货】单日10亿GMV的.NET5电商平台,是如何设计的?

自京东和唯品会转了Java&#xff0c;.NET就一直缺乏高并发电商案例&#xff0c;.NET5能做高并发电商吗&#xff1f;必须的&#xff0c;别停留在.NET Framework的旧印象了&#xff01;这里为大家分享一家上市公司的项目案例&#xff0c;纯.NET5电商平台&#xff0c;轻松承接双11…

如何发送html email,如何发送HTML电子邮件?

我已经使用JMS在Web应用程序中成功发送了电子邮件&#xff0c;但是结果仅以纯文本显示。我希望内容能够显示html。我该怎么做&#xff1f;这大致就是我所拥有的&#xff1a;Message msg new MimeMessage(mailSession);try{msg.setSubject("Test Notification");msg.…

通过 Lotus Domino Java 代理消费 Web 服务

Web 服务是一种允许两台或更多的计算机在网络中交互的系统设计。这种服务的主要优点是&#xff0c;它是在多台不同操作系统的计算机和应用服务器之间发送对象的标准解决方法。例如&#xff0c;我们的公司使用 Web 服务从一台运行 Microsoft .NET Framework 的计算机向基于 IBM …

goahead如何使用cgi服务_QQ如何设置使用代理服务器?

很多人可能会问了&#xff0c;QQ上可以设置代理服务器吗?答案是可以的。今天就为大家详细介绍一下&#xff0c;如何在QQ上设置代理服务器的。1、双击QQ图标&#xff0c;打开QQ登录界面&#xff0c;我们就可以看到界面右上角有一个“设置”按钮。QQ如何设置使用代理服务器12、点…

自动布局AutoLayout

http://www.th7.cn/Program/IOS/201410/304252.shtml转载于:https://www.cnblogs.com/runer/p/4430675.html

android listview添加数据_Android面经分享,失业两个月,五一节前拿到offer

秦子帅明确目标&#xff0c;每天进步一点点.....作者 | 天天有道地址 | juejin.im/post/5eb01866f265da7b9c24562c基本介绍今天介绍一位朋友的经历&#xff1a;从3月初开始复习&#xff0c;准备面试题。复习的资料主要为《Android开发艺术探索》和jsonchao的博客&#xff0c;…

Dapr + .NET 实战(四)发布和订阅

什么是发布-订阅发布订阅是一种众所周知并被广泛使用的消息传送模式&#xff0c;常用在微服务架构的服务间通信&#xff0c;高并发削峰等情况。但是不同的消息中间件之间存在细微的差异&#xff0c;项目使用不同的产品需要实现不同的实现类&#xff0c;虽然是明智的决策&#x…

词性分法程序

http://tieba.baidu.com/p/1180650771?pid13814874186&cid0#13814874186 给你个函数看看,分析下有什么用 句列表指针 存储的是一句话的数据,其中已经分好词,并知道每个词的词性.周春海(专有名词) 是(动词) 周依言(专有名词) 的(的词) 爸爸(抽象名词) .(句号词)程序里的词性…

计算机信息处理教案,冀教版七年级信息技术第二课计算机--信息处理工具 教案...

ID:10796280分类&#xff1a;江苏,2019资源大小&#xff1a;22KB资料简介:《第二课 计算机——信息处理工具》教学设计教 者&#xff1a;课时1教学内容&#xff1a;第二课 计算机——信息处理工具教学目标&#xff1a;1知识目标&#xff1a;学生应了解计算机的工作原理&#xf…

这些数学趣图,数学老师看了后会怎么想?

全世界有3.14 % 的人已经关注了爆炸吧知识这个扣分不?我的人生98%的时间都是无比正确的数学与我不能言语的关系最深情的告白限速是......当我完成数学作业后....维生素C的来历高数课堂恩..... 来拜师了啊, 好好学习. 为师给你命名: 阿尔法狗.这个是驻点, 这是最值, 这些机器学…

COM 组件设计与应用(六)

一、前言  1、与 《COM 组件设计与应用(五)》的内容基本一致。但本回讲解的是在 vc.net 2003 下的使用方法&#xff0c;即使你不再使用vc6.0&#xff0c;也请和上一回的内容&#xff0c;参照比对。   2、这第一个组件&#xff0c;除了所有 COM 组件必须的 IUnknown 接口外&…