负值之美:负margin在页面布局中的应用

负值之美:负margin在页面布局中的应用
论坛讨论网址:http://bbs.blueidea.com/thread-2956530-1-1.html

本文转载自:http://www.topcss.org/?p=94,有修改。
  负数给人总是一种消极、否定、拒绝之感,不过有时利用负margin可以达到奇妙的效果,今天就表一表负值在页面布局中的应用。这里说的负值主要指的是负margin。
  关于负margin的原理建议大家看看这篇文章:http://www.cnblogs.com/2050/archive/2012/08/13/2636467.html#2457812
  本文不讲原理,主要展示几个应用。
一、左右列固定,中间列自适应布局
  此例适用于左右栏宽度固定,中间栏宽度自适应的布局。由于网页的主体部分一般在中间,很多网页都需要中间列优先加载,而这种布局刚好满足此需求。
  HTML:

<div class="main"> 
    <div class="main_body">Main</div> 
</div> 
<div class="left">Left</div> 
<div class="right">Right</div>

CSS:

 body{ margin:0; padding:0; min-width:600px; } 
.main{ float:left; width:100%; } 
.main_body{ margin:0 210px; background:#888; height:200px; } 
.left,.right{ float:left; width:200px; height:200px; background:#F60; } 
.left{ margin-left:-100%; } 
.right{ margin-left:-200px; }

效果:



二、去除列表右边框
  项目中经常会使用浮动列表展示信息,为了美观通常为每个列表之间设置一定的间距(margin-right),当父元素的宽度固定式,每一行的最右端的li元素的右边距就多余了,去除的方法通常是为最右端的li添加class,设置*margin-right:0; *这种方法需要动态判断为哪些li元素添加class,麻烦!!!利用负margin就可以实现下面这种效果:
  HTML:

<div id="test"> 
<ul> 
    <li>子元素1</li> <li>子元素2</li> <li>子元素3</li> <li>子元素4</li> <li>子元素5</li> <li>子元素6</li> 
</ul> 
</div>

CSS:

body,ul,li{ padding:0; margin:0;} ul,li{ list-style:none;} 
#test{ width:320px; height:210px; background:#CCC; } 
#test ul{ margin-right:-10px; zoom:1; } 
#test ul li{ width:100px; height:100px; background:#F60; margin-right:10px; margin-bottom:10px; float:left; }

效果:



三、负边距+定位:水平垂直居中
  使用绝对定位将div定位到body的中心,然后使用负margin(content宽高的一半),将div的中心拉回到body的中心,已到达水平垂直居中的效果。
  HTML:

<div id="test"></div>

CSS:

 body{margin:0;padding:0;} 
#test{ width:200px; height:200px; background:#F60; position:absolute; left:50%; top:50%; margin-left:-100px; margin-top:-100px; }

效果:



四、去除列表最后一个li元素的border-bottom
  列表中我们经常会添加border-bottom值,最后一个li的border-bottom往往会与外边框重合,视觉上不雅观,往往要移除。
  HTML:

<ul id="test">
   <li>Test</li> <li>Test</li> <li>Test</li> <li>Test</li> <li>Test</li> 
</ul>

CSS:

 body,ul,li{margin:0;padding:0;} ul,li{list-style:none;} 
#test{ margin:20px; width:390px; background:#F4F8FC; border-radius:3px; border:2px solid #D7E2EC; } 
#test li{ height:25px; line-height:25px; padding:5px; border-bottom:1px dotted #D5D5D5; margin-bottom:-1px; }

效果:



五、多列等高
  此例关键是给每个框设置大的底部内边距,然后用数值相似的负外边距消除这个高度。这会导致每一列溢出容器元素,如果把外包容器的overflow属性设为hidden,列就在最高点被裁切。
  HTML:

<div id="wrap">
    <div id="left"> 
      <p style="height:50px">style="height:50px"</p> 
    </div> 
    <div id="center"> 
      <p style="height:100px">style="height:100px"</p> 
    </div> 
    <div id="right"> 
      <p style="height:200px">style="height:200px"</p> 
    </div> 
</div>

CSS:

 body,p{ margin:0; padding:0; }
 #wrap{ overflow:hidden; width:580px; margin:0 auto; }
 #left,#center,#right{ margin-bottom:-200px; padding-bottom:200px; }
 #left { float:left; width:140px; background:#777; } 
#center { float:left; width:300px; background:#888; } 
#right { float:right; width:140px; background:#999; } 
p {color:#FFF;text-align:center}

效果:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,445评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,889评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,047评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,760评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,745评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,638评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,011评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,669评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,923评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,655评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,740评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,406评论 4 320
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,995评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,961评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,023评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,483评论 2 342

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,727评论 1 92
  • 目录 背景 margin负值的原理2.1 基于参考线的原理图2.2 实际demo2.2.1 margin-left...
    流云家的梦溪阅读 919评论 0 1
  • [TOC] 前几天去了一家公司面试前端,问了我双飞翼的布局,说实话,之前真没好好研究过实现原理。面试回来,查了下,...
    琦乐无穷阅读 38,004评论 13 80
  • 最近在学习flex布局,在赞叹其便捷性的同时,回想起之前使用css2的时候实现等高或者等宽布局的麻烦。同时也看到[...
    小胖子嘿嘿嘿阅读 885评论 0 3
  • 江西玉山县有所水南寺,是一处古刹。里边住着位老僧叫月印,六十多岁了,终日在室内诵经,足不出户,戒行颇高。老和尚养了...
    夜梦千秋阅读 459评论 0 1