修复IE的浮动元素双倍边距Bug
CSS开发人员可能经常会碰到的一个现象是,一个页面在IE(特别是老版本的IE)中显示正常,而在现代浏览器中却完全变形了,或者情况完全相反。
常常能听到有人抱怨:“在IE上开发时间中,超过 60% 的时间,都是在与IE的Bug作斗争。”导致这一现象的根本原因,是不知道IE都有哪些 bug,也不知道如何解决这些 bug。在出现问题时,往往束手无措,更不要说预防 Bug 了。
因此,作为一位优秀的CSS开发人员,必须了解IE浏览器的常见 Bug,以及导致这些 Bug的各种因素,以便能够预防 Bug 的产生,或在出现问题后,能够及时发现并快速修复。
浮动元素双倍边距Bug
浮动元素双倍边距 Bug,是IE6及更低版本中的一个经典Bug。当给元素设置了 float 属性,同时设置了与浮动方向相同margin值,则浮动元素的 margin就会加倍。
简单的说,就是左浮动元素的 margin-left 被加倍,而 margin-right 不会被加倍,右浮动元素的 margin-right 被加倍,margin-left 不会被加倍。
但是,当有多个元素都在一行内向相同方向浮动,且都有同方向的 margin 时,只有靠近浮动方向的第一个元素的 margin 会加倍,其他元素则不会。
假设在一个容器中,有两个元素:
<div id="wrapper">
<div class="fl">float</div>
<div class="fl">float</div>
</div>
现在,让两个元素都向左浮动,并为它们设置 100px 的左外边距:
.fl {
float: left;
width: 100px;
height: 60px;
margin-left: 100px;
}
在IE6中及更低版本中,会发现第一个元素的左外边距,由 100px 被扩大为 200px。而第二个元素的左外边距仍然是 100px,没有被加倍。如图 10‑2 所示:
图10-2 浮动元素双边距Bug
修复这个 Bug 的方法很简单,只需将浮动元素的 display 属性设置为 inline,便可轻松解决问题。但是,这里的 display 属性,除了修复IE Bug外,并没有其它用处。
.fl {
float: left;
width: 100px;
height: 60px;
margin-left: 100px;
display: inline;
}
修复后的运行效果如图 10‑3 所示:
图10-3 修复浮动元素双边距Bug
将浮动元素的 display 属性设置为 inline 并不会影响它的显示方式,还能阻止IE6及更低版本将它的外边距加倍。因此,每当让具有水平外边距的元素进行浮动时,都应该很自然地将它的 display 属性设置为 inline,以防止外边距被加倍。
关于作者
歪脖先生,十五年以上软件开发经验,酷爱Web开发,精通 HTML、CSS、JavaScript、jQuery、JSON、Python、Less、Bootstrap等,著有《HTML宝典》、《揭秘CSS》、《Less简明教程》、《JSON教程》、《Bootstrap2用户指南》、《Bootstrap3实用教程》,并全部在 GitHub 上开源。
修复IE的浮动元素双倍边距Bug相关推荐
- [css] 如何解决IE6浮动时产生双倍边距的BUG?
[css] 如何解决IE6浮动时产生双倍边距的BUG? 1.当块级元素有浮动样式的时候,给元素添加margin-left和margin-right样式,在ie6下就会出现双倍边距2.给当前元素添加样式 ...
- 【问题】父套子时,‘阻止子元素的外边距传递给父元素’与闭合浮动
使用空的<table>标签可以隔离父子元素的外边距,阻止外边距的重叠(直接添加会产生 无用标签,要在CSS中添加属性) 1 <!DOCTYPE html> 2 <html ...
- CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响
一.width:auto和width:100%的区别 1.width:100%的作用是占满它的参考元素的宽度.(一般情况下参考元素 == 父级元素,这里写成参考元素而不是父级元素,在下面我会再细说) ...
- IE6中float元素双倍margin问题
在IE6中,当给某元素设置float时,同时给该元素设置margin时,他会有双倍外边距的问题 p {float:right;margin-right:10px; /*页面真正显示的是margin-r ...
- CSS浮动元素特点有什么
什么是浮动? 元素的浮动是指设置了浮动属性(flot)的元素. CSS浮动有什么作用? 1.让多个盒子水平排列成一行,浮动成为布局的重要手段; 2.可以实现盒子的左右对齐等等; 3.浮动最早是用来控制 ...
- CSS使用浮动属性和边距设计3行3列定宽的布局实例
CSS使用浮动属性和边距设计3行3列定宽的布局 下面使用CSS的浮动属性和边距属性设计一个简单地3行3列并且是固定宽度的布局页面. 实例 设计步骤如下: 1. 制作3行3列定宽布局的XHTML部分.源 ...
- css --- 浮动元素与 块框/行内框重叠时的细节
块框,可以认为是块级元素(如div.h1)的内容区 + 内边距 行内框可以认为是行内元素(如span)的内容区 + 内边距 当 块级框/行内框 和一个浮动元素重叠时,行内框的边框.背景和内容都在幅度元 ...
- 六、pink老师学习笔记——CSS三角形之美 margin负值之美文字围绕浮动元素行内块元素布局的巧妙运用
7. 拓展@ 7.1 margin负值之美 1). 负边距+定位:水平垂直居中 咱们前面讲过, 一个绝对定位的盒子, 利用 父级盒子的 50%, 然后 往左(上) 走 自己宽度的一半 ,可以实现盒子水 ...
- 浮动和清浮动,内外边距和margin的坑
浮动:使元素脱离文档流,按照一定的方式排列,遇到相邻的浮动元素或者父级的边界停下来. 可以往left,也可以往right 一般建议用ul.f>li.s编写,(<ul></ul& ...
最新文章
- Navicat Premium 连接 Oracle 数据库
- java中上传附件怎么该名称_将附件保存到Outlook中的文件夹并重命名
- 捋一捋js面向对象的继承问题
- 学习 jQuery 源码整体架构,打造属于自己的 js 类库
- dayjs​​​​​​​文档
- 分割法和填补法_“聚合”法与“分割”法
- java异常标记_java.lang.RuntimeException:错误:0D0680A8:asn1编码例程:ASN1_CHECK_TLEN:错误的标记...
- dell服务器r730安装esxi系统,安装Esxi系统重装Esxi系统
- 麻烦缠身的高通“向前看”:关注服务器市场和5G
- iOS.Debug.Simulator
- 我的电脑缩略图模式盘符名字不见了
- VS2017和VS2019(社区版)离线激活方式
- 共享存储设备DAS、NAS、SAN;Udev 、Multipath多路径(基础知识)
- 网站服务器停止运行,服务器已停止响应是怎么回事
- Weka数据挖掘——选择属性
- seagull基本概念
- 微信开发者工具-调试器
- [前端面试题][‘1‘,‘2‘,‘3‘].map(parseInt)
- 手写Vue个人组件库——fl-Lazyimg 图片懒加载
- bom树形结构 表设计_BOM模块常用表结构
热门文章
- JavaScript进阶学习(二)—— 基于原型链继承的js工具库的实现方法
- 满意度指数能够告诉我们什么?
- oracle8i ora 12500,总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历...
- 用java swing做连连看_java基于swing实现的连连看代码
- debian apache php mysql_Debian/在Debian上安装Apache Mysql PHP
- HDU 1556 Color the ball (数状数组)
- 零基础入门│带你理解Kubernetes
- 2018/12/13
- 一次完整的HTTP请求响应过程(很详细)
- python学习turtle(龟图标状态)