您现在的位置是:网站首页> 编程资料编程资料
CSS属性探秘系列(六):margin浅谈css margin重叠CSS 之margin知识点(必看)css布局之负margin妙用及其他实现CSS的margin属性在页面布局中的使用攻略细说CSS中margin属性的使用 深入解析CSS中margin属性的使用CSS中使用负margin值来调整居中位置解决margin 外边距合并问题
2021-09-06
840人已围观
简介 margin 简写属性在一个声明中设置所有外边距属性。该属性可以有 1 到 4 个值。这个简写属性设置一个元素所有外边距的宽度,或者设置各边上外边距的宽度。块级元素的垂直相邻外边距会合并,而行内元素实际上不占上下外边距。行内元素的的左右外边距不会合并。
一、属性介绍
margin 属性接受任何长度单位,可以是像素、英寸、毫米或 em。
可取值:
auto 浏览器计算外边距。
length 规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px。
% 规定基于父元素的宽度的百分比计算的外边距。
inherit 规定应该从父元素继承外边距。
二、常见问题
1.IE6下浮动元素双倍边距问题
解决方法:
IE6中设置block元素display:inline;
.l{margin-left:20px;float:left;display:inline;}
原因:首先,inline元素和inline-block元素是没有双倍边距的。对inline元素设置float后,会有个haslayout,使inline元素具有inline-block元素的特性,进而可以设置垂直margin、padding、width、height。
2.margin外边距合并问题
外边距的合并发生在以下三种情形:
情形一:空块元素
a)如果一个块级元素没有border、padding、inline content、height、min-height来分隔,设置margin-top和margin-bottom属性后会合并,
b)实例:
从上例可以看出,最后.out computed height为40px;
>=IE8、Firefox、Chrome测试效果相同。但是有个疑问,去掉out的边框后,其高度计算为0,不知道什么原因?
情形二:父元素与第一个或最后一个子元素
如果块元素的 margin-top 与它的第一个子元素之间没有border, padding, inline content, 或 clearance 分隔,或者块元素的 margin-bottom 与它的最后一个子元素之间没有padding, inline content, height, min-height, or max-height 分隔,那么外边距会合并。
>=IE6,FF,Chrome效果效果相同,此时inner01的margin-top:并没有起作用,这就是为什么很多人在网上问,我设置margin-top,margin-bottom不起作用的原因了!如下图:
情形三:毗邻的元素
- 列表一
- 列表二
- 列表三
>=IE6,FF,Chrome效果效果相同,重叠部分的取值为margin-top,margin-bottom中的最大值。如下图:
此时我们看到重叠也有重叠的好处
注:只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
3.margin不起作用的情况?
行内(inline)元素设置垂直margin不起作用,块级元素的margin不好用时,建议使用padding来代替。
三、常见margin负值应用
1.IE6背景半透明效果按钮的制作
其就是使用margin负值定位实现按钮下半部分的颜色
2.新闻列表(带日期的)
这个是从新浪博客首页看到的实现新闻列表
- new012014-03-02
- new022014-03-02
- new032014-03-02
- new042014-03-02
ul li{height:24px;line-height:24px;}
设置.date{text-align:right;display:block;margin-top:-24px;},这时就不需要使用浮动来布局了
3.在选项卡等边框线的处理
当前选中的选项卡下边框颜色要设置选中色同时,内容的div上边框要设置margin-top:-1px;
4.图片与文字对齐问题
方法一:
vertical-align:text-bottom
方法二:
.img{margin:0 5px -2px 0;}
测试代码:

四、新闻列表边框
当我们使用ul>li写新闻列表需要给li设置下边框时,是不是经常困惑于最后一条会多出一个边框。如果给最后一条单独加个类.last{border-bottom:none;}
也能实现效果。但是这中写法会有两个弊端,弊端一:单独定义一个css类;弊端二,当我们使用服务器端语言输出数据时,还需要单独判断最后一项,添加calss类。有没有好的解决方法呢?当然有,那就是margin负值!
看看下面实现实例:
- fdasfd
- fdasfd
- fdasfd
- fdasfd
- fdasfd
如图:
五、参考链接
http://www.w3school.com.cn/css/css_margin_collapsing.asp
相关内容
- CSS属性探秘系列(五):min-widthIE6不支持CSS中的min-width/height属性问题的解决方法
- CSS属性探秘系列(三):line-heightCSS line-height行高上下居中垂直居中样式属性CSS行高line-height的个人理解css属性行高line-height的用法详解css line-height属性的使用技巧css中height和line-height区别
- CSS属性探秘系列(一):word-break与word-wrapcss word-break word-wrap 前台显示自动换行css中强制换行word-break、word-wrap、white-space区别实例说明CSS word-wrap同word-break的区别 word-wrap与word-break 属性的概述及浏览器默认处理word-break:break-all和word-wrap:break-word区别总结
- css中position:fixed实现div在窗口上下左右居中不定宽高的文字在div中垂直居中实现方法关于div中img,span垂直居中的问题让Div实现水平或垂直居中的相关方法div中内容上下居中小结css中position:fixed实现div居中上下左右居中DIV+CSS中让布局、背景图片、文字内容居中的方法IE9下DIV本来应该居中的结果显示为居左DIV+CSS垂直居中一个浮动元素CSS实现DIV居中的三种方法
- 权重和层叠规则决定了CSS样式优先级CSS样式覆盖规则全面了解纯CSS3绘制各种不规则图形图标样式特效源码CSS教程:网页中多个样式表顺序问题css样式层叠规则详解
- Css样式兼容IE6,IE7,FIREFOX的浏览器的写法示例介绍浅谈前端制作中,IE6还有必要兼容吗使用语义化标签去写你的HTML 兼容IE6,7,8让IE6支持兼容min-width、max-width CSS样式属性的方法兼容IE6、IE7的min-width、max-width写法一行代码解决各种IE兼容问题,IE6,IE7,IE8,IE9,IE10兼容IE6的min-width、min-height的简单方法
- css3实例教程 一款纯css3实现的环形导航菜单css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- css表格单元格中的长文本如何实现自动换行CSS文本超出div或者span时用省略号代替 css实现li中文本超出行宽自动隐藏css控制文本实现越界省略号以及自动换行CSS网页布局强制换行和强制不换行的属性讲解-CSS教程-网页制作-网页教如何实现FireFox文本自动换行-CSS教程-网页制作-网页教学网CSS超出文本指定宽度用省略号代替和文本不换行
- 在HTML5中如何使用CSS建立不可选的文字css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- CSS如何只改变父元素背景透明度不改变子元素透明度CSS子元素跟父元素的高度一致的实现方法CSS子元素选择父元素的实现解决CSS中子元素z-index与父元素兄弟节点的层级问题css中子元素设置margin-top为什么影响了父元素css匹配选择属于其父元素的第N个子元素的方法父元素与子元素之间的margin-top问题(css hack)css子元素相对父元素进行定位的实现