CSS属性探秘系列(六):margin
一、属性介绍
marg 属性接受任何长度单位,可以是像素、英寸、毫米或 em。
可取值
auto 浏览器计算外边距。
length 规定以具体单位计的外边距值,比如像素、厘米等。默认值是 0px。
% 规定基于父元素的宽度的百分比计算的外边距。
herit 规定应该从父元素继承外边距。
二、常见问题
1.IE6下浮动元素双倍边距问题
解决方法
IE6中设置block元素display:le;
.l{marg-left:20px;float:left;display:le;}
原因,le元素和le-block元素是没有双倍边距的。对le元素设置float后,会有个haslayout,使le元素具有le-block元素的特性,进而可以设置垂直marg、paddg、width、height。
2.marg外边距合并问题
外边距的合并发生在以下三种情形
情形一空块元素
a)如果一个块级元素没有border、paddg、le content、height、m-height来分隔,设置marg-和marg-bottom属性后会合并,
b)实例
<style type="text/css">
body{marg:0;}
.out{width:400px;border:1px solid #f00;marg:0 auto;background-color:#c;}
.ner{marg-:40px;marg-bottom:40px;}
</style>
<div class="out">
<div class="ner"></div>
</div>
从上例可以看出,.out puted height为40px;
>=IE8、Firefox、Chrome测试效果相同。有个疑问,去掉out的边框后,其高度计算为0,不知道什么原因?
情形二父元素与第一个或一个子元素
如果块元素的 marg- 与它的第一个子元素之间没有border, paddg, le content, 或 clearance 分隔,或者块元素的 marg-bottom 与它的一个子元素之间没有paddg, le content, height, m-height, or max-height 分隔,那么外边距会合并。
<style type="text/css">
body{marg:0;}
.parent{border:1px dotted #c;width:400px;}
.outer{height:50px;background-color:#f00;marg-:40px;marg-bottom:40px;}
.ner01{marg-:20px;background:#00f;}
.ner02{marg-bottom:60px;background:#f0f;}
</style>
<div class="parent">
<div class="outer">
<div class="ner01">ner01</div>
<div class="ner02">ner02</div>
</div>
</div>
>=IE6,FF,Chrome效果效果相同,此时ner01的marg-:并没有起作用,这就是为什么很多人在网上问,我设置marg-,marg-bottom不起作用的原因了!如下图
情形三毗邻的元素
<style type="text/css">
.ulist{marg:0;paddg-left:0;list-style:none;width:200px;marg:0 auto;border:1px solid #f00;}
.ulist li{paddg-left:0;marg:10px;border:1px dotted #f00;}
</style>
<ul class="ulist">
<li>列表一</li>
<li>列表二</li>
<li>列表三</li>
</ul>
>=IE6,FF,Chrome效果效果相同,重叠部分的取值为marg-,marg-bottom中的最大值。如下图
此时我们看到重叠也有重叠的好处
注只有普通文档流中块框的垂直外边距才会发生外边距合并。行内框、浮动框或绝对定位之间的外边距不会合并。
3.marg不起作用的情况?
行内(le)元素设置垂直marg不起作用,块级元素的marg不好用时,建议使用paddg来代替。
三、常见marg负值应用
1.IE6背景半透明效果按钮的制作
其就是使用marg负值定位实现按钮下半部分的颜色
2.新闻列表(带日期的)
这个是从新浪博客首页看到的实现新闻列表
<ul>
<li>new01<span class="date">2014-03-02</span></li>
<li>new02<span class="date">2014-03-02</span></li>
<li>new03<span class="date">2014-03-02</span></li>
<li>new04<span class="date">2014-03-02</span></li>
</ul>
ul li{height:24px;le-height:24px;}
设置.date{text-align:right;display:block;marg-:-24px;},这时就不需要使用浮动来布局了
3.在选项卡等边框线的处理
当前选中的选项卡下边框颜色要设置选中色,内容的div上边框要设置marg-:-1px;
4.图片与文字对齐问题
方法一
vertical-align:text-bottom
方法二
.img{marg:0 5px -2px 0;}
测试代码
<style type="text/css">
body{marg:0;font-size:12px;font-family:arial;}
.out{width:400px;border:2px dotted #f00;marg:20px auto;
}
.img{marg:0 5px -2px 0;}
</style>
<div class="out">
<img src="20.png" width="20" height="20" class="img">Benjam=前端开发
</div>
四、新闻列表边框
当我们使用ul>li写新闻列表需要给li设置下边框时,是不是经常困惑于一条会多出一个边框。如果给一条单独加个类.last{border-bottom:none;}
也能实现效果。这中写法会有两个弊端,弊端一单独定义一个css类;弊端二,当我们使用服务器端语言输出数据时,还需要单独判断一项,添加calss类。有没有好的解决方法呢?有,那就是marg负值!
看看狼蚁网站SEO优化实现实例
<style type="text/css">
.con{width:200px;border:1px solid #f00;}
.con ul{overflow:hidden;marg:0;paddg-left:0;marg-bottom:-1px;}
.con ul li{le-height:24px;border-bottom:1px solid #f00;paddg-left:10px;}
</style>
</head>
<body>
<div class="con">
<ul>
<li>fdasfd</li>
<li>fdasfd</li>
<li>fdasfd</li>
<li>fdasfd</li>
<li>fdasfd</li>
</ul>
</div>
如图
五、参考链接
http://.w3school../css/css_marg_collapsg.asp
网站设计
- 静宁会SEO的网站建设公司:全面提升您的网络影
- 提升在线业务的关键:选择最佳的丽水网站建设
- 浙江网站优化发展潜力如何
- 井研专业的网站建设公司:打造您的在线品牌
- 灵山SEO网站建设公司:提升您的在线业务表现
- 蒙城网站建设优化公司:提升您网站表现的理想
- 阳谷企业网站优化:提升线上业务力的关键
- 樟树专业的网站建设公司:打造您在线业务的坚
- 通河百度SEO排名的策略与技巧
- 重庆百度快照排名如何进行精准的客户引流
- 重庆百度快照排名
- 常宁便宜的建站公司:助您轻松打造在线业务
- 巫溪百度网站优化:提升网站曝光率与流量的关
- 湖北整站优化怎么做才能放大客户需求
- 闸北网站建设多少钱?全面解析与预算规划
- 辽宁企业网站优化怎么做电话营销