最近做的项目中经常会用到margin的负值,这里就总结一下关于margin负值的5种使用及相关bug的解决。

1. 在流动性布局中的应用

如WordPress的两栏式不固定布局就是使用margin负值来实现的定位,属于左右margin负值在流动性布局中的应用。

    <div style="width:200px;float:left;border-right:4px solid #CEE1EE;margin-right:-200px;">
左侧宽度固定
</div>
<div style="backround:#888;margin-left:200px;">
宽度自适应
</div>

效果图:

另外一类两栏自适应用到的是margin的上下负值,尤其在一栏高度固定,另外一栏高度不定的两栏或多栏布局中最为常见。

高度不固定栏和高度固定的栏上下错开,均无浮动属性,高度不固定的栏margin-top一个负值,
大小就是高度固定栏的高度,实现了两栏在同一水平线上。且宽度自适应,并且不用担心有浮动出现的一系列问题。
 
如图:

样式部分:

.fixed-height{
height:200px;
width:200px;
background:#;
}
.flow-height{
margin-top:-200px;
margin-left:200px;
}

页面结构:

    <div class="container">
<div class="fixed-height">
高度固定哦
</div>
<div class="flow-height">
高度宽度自适应。。。
</div>
</div>

2. 在选项卡等边框线的处理

使用margin-bottom:-1px;解决选项卡下边框显示的问题。

[注:]使用margin-top、margin-bottom需要看结构如何写,灵活使用。

类似的,如果您要用七个div实现8条1像素的左右边框,可以让每个div都有左右1像素的边框,然后margin-right:-1px;或是margin-left:-1px;让之间的边框重叠来达到效果。

3. 图片与文字对齐问题

当图片与文字在一起,往往都是不对齐的,因为图片和文字默认是底部对齐。

当图片较小比较明显,使用vertical-align:middle;对齐,在firefox,chrome下能达到理想效果,但是IE下还是有点别扭。

使用margin负值能在每个浏览器上显示完全一致。img标签支持margin四个方向的正的和负的定位。一般使用img标签来显示图标,要与文字对齐达到理想的效果,可以设置

img{margin: 3px -3px ;}。

4. 隐藏首(末)边框

本着结构尽量简洁,样式代码尽量少,减少对js的依赖的原则,我们可以用样式来实现列表项头尾无边框的效果,而无需额外设置诸如<li class=”last”>最后一个</li>

样式部分:

<style type="text/css">
ul{
margin:30px;
padding:;
width:300px;
}
li{ list-style:none;}
/** 横排模式 **/
.cross{
overflow:hidden;
zoom:;
} /** overflow:hidden隐藏最上边border,IE6需要zoom:1 **/
.cross li {
float:left;
padding: 11px 10px;
border-left:1px solid #AAA;
margin-left:-1px;
} /*margin负值隐藏掉最左边边框*/
/*竖排模式*/
.vertical {
overflow:hidden;
position:relative;
zoom:;
} /*IE下子容器如果包含属性position:relative,则父容器失效(IE bug),所以也需要设置父容器position:relative解决,IE6需要zoom:1来触发haslayout*/
.vertical li{
border-top:1px dashed #CEE1EE;
padding:5px ;
position:relative;
top:-1px;
} /*竖排margin负值IE6不兼容,改为positon方式处理,与margin负值原理相同*/
</style>

结构部分:

<ul class="cross">
<li>tab1-</li>
<li>tab1-</li>
<li>tab1-</li>
<li>tab1-</li>
</ul>
<ul class="vertical">
<li>这里是一条信息</li>
<li>这里是一条信息</li>
<li>这里是一条信息</li>
<li>这里是一条信息</li>
<li>这里是一条信息</li>
</ul>

5.页面上实现css sprite背景定位效果

使用img定义margin的负值实现类似background-position效果。此方法能减少一个页面请求数,但是有违样式与布局分离的原则,因此不推荐使用

ps:

使用margin负值在IE6/IE7下的bug:有一部分被隐藏掉了

    <div style="height:120px;width:120px; border: 5px solid #888">
<div style="margin-top: -10px;position:relative;zoom:1">
<a href="http://fed.renren.com/">人人前端测试</a></div>
</div>

解决方法:添加position:relative; zoom:1;

margin负值5种应用的更多相关文章

  1. margin负值的几种妙用

    1:定位+margin负值实现元素水平垂直居中 div{ position: absolute; z-index: 1; left: 50%; margin-left: -50px; width: 1 ...

  2. 几个常见的布局的多种实现方式及margin负值总结

    第一部分:几个常见的布局实现方式 一.左右两边固定, center中间自适应未知 html代码中 center 部分首先要放在box的最前部分.然后是left,right 圣杯布局: <div ...

  3. margin负值 – 一个秘密武器

    CSS盒模型中,margin是我们老熟悉的一个属性了, 它的负值你用过吗? 你知道 margin负值的秘密武器吗?我们一起看看吧! 1.带竖线分隔的横向列表(例如:网站底部栏目) 传统的分隔符是使用 ...

  4. 初探Margin负值(转)

    相对而言,margin 负值的使用机率在布局中似乎很少,但是我相信一旦你开始掌握就会着迷,接下来我们看看关于margin负值的一些资料: 它是一个有效的属性,至少w3c中明确描述如下:”Negativ ...

  5. 深入理解CSS中的margin负值

    前面的话 margin属性在实际中非常常用,也是平时踩坑较多的地方.margin折叠部分相信不少人都因为这样那样的原因中过招.margin负值也是很常用的功能,很多特殊的布局方法都依赖于它.它看似简单 ...

  6. 微吧里的各种margin负值

    直在做各种项目接各种需求,但你的代码能力得到提高了吗?不停的项目经历虽然能够增加你的代码行数,但不一定能提升你的代码质量,所以除了构建阶段的代码细扣,项目之后的代码总结是至关重要的. 微吧中除了模块化 ...

  7. margin负值的使用

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. 理解margin负值

    效果 上和左方的margin负值使元素向上和左方向移动,如果该元素position不是absolute或fixed,这还会导致之后的元素也向上,左移 下和右方的margin负值会缩小下和右方的空间,使 ...

  9. margin负值的相关应用

    1.页面上实现css sprite背景定位效果   其实margin:-40px 0 0 -160px;与background-position:-160px -40px;实现的原理是一致的,而差别就 ...

随机推荐

  1. 可怜的baidu,可怜的音库

    baidu词典中用的中文音库竟然全都是汉典的中文音库   真可怜,baidu这么大个公司竟然连着1250个发音都懒得录   汉典的音库布都是同一格式,导致一部分音频文件MCI函数无法播放   真他妈可 ...

  2. DOS常用命令详解

    DOS常用命令详解 dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘 edit ...

  3. Exit- Linux必学的60个命令

    1.作用 exit命令的作用是退出系统,它的使用权限是所有用户. 2.格式 exit 3.参数 exit命令没有参数,运行后退出系统进入登录界面.

  4. Odoo Documentation : Environment

    Environment The Environment stores various contextual data(上下文数据 ) used by the ORM: the database cur ...

  5. js的相关距离

    js的相关距离 一.dom对象的距离 ---dom.style.width : 对象本身的内容宽度(这里必须是内联样式中的width,带px)(content) ---dom.style.height ...

  6. leyou_03_cors解决ajax的跨域请求问题

    1.为什么会有跨域问题 因为跨域问题是浏览器对于ajax请求的一种安全限制:一个页面发起的ajax请求,只能是与当前页域名相同的路径,这能有效的阻止跨站攻击. 因此:跨域问题 是针对ajax的一种限制 ...

  7. [转]模块化——Common规范及Node模块实现(二)

    模块的循环加载 如果发生模块的循环加载,即A加载B,B又加载A,则B将加载A的不完整版本. // a.js exports.x = 'a1'; console.log('a.js ', require ...

  8. 前端页面布局之Grid布局

    在讲布局前,先说两句题外话,写博时,突然想到了郭德纲说过的一个段子“说两个人骂架,不是你有理,你嗓门大,你唾沫星子崩我一脸,你就能骂赢,要看谁命长,过两年你死了,我站你坟头咋说咋是对的,你在那小匣里还 ...

  9. 解决 Error retrieving parent for item: No resource found that matches the given name 'Theme.AppCompat.Light.DarkActionBar'

    If you are looking for the solution in Android Studio : Right click on your app Open Module Settings ...

  10. Django-rest Framework(六)

    不懂使用机制的直接看源码就好了,也不是很难,能够看得懂 视图家族 1. View:将请求方式与视图类的同名方法建立映射,完成请求响应(原生django) from django.views impor ...