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

http://www.w3school.com.cn/tiy/t.asp 预览工具

一、左右列固定,中间列自适应布局

此例适用于左右栏宽度固定,中间栏宽度自适应的布局。由于网页的主体部分一般在中间,很多网页都需要中间列优先加载,而这种布局刚好满足此需求。

<!DOCTYPE html>

<html>

<head>

<style> 

  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;

    }

</style>

</head>

<body>

 <div class="main">

        <div class="main_body">Main</div>

    </div>

    <div class="left">Left</div>

    <div class="right">Right</div>

</body>

</html>

 

二、去除列表右边框

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

 

<!DOCTYPE html>

<html>

<head>

<style> 

 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;

    }

</style>

</head>

<body>



  <div id="test">

        <ul>

            <li>子元素1</li>

            <li>子元素2</li>

            <li>子元素3</li>

            <li>子元素4</li>

            <li>子元素5</li>

            <li>子元素6</li>

        </ul>

    </div>

</body>

</html>

 

三、负边距+定位:水平垂直居中

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

<!DOCTYPE html>

<html>

<head>

<style> 

 body{margin:0;padding:0;}

    #test{

        width:200px;

        height:200px;

        background:#F60;

        position:absolute;

        left:50%;

        top:50%;

        margin-left:-100px;

        margin-top:-100px;

    }

</style>

</head>

<body>



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

</body>

</html>

四、去除列表最后一个li元素的border-bottom

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

 如果li的border-bottom颜色与ul的border颜色是一样的时候,在视觉上是被隐藏了。如果其颜色不一致的时候还是有问题,给ul写个overflow:hidden;就可以解决这个问题。

<!DOCTYPE html>

<html>

<head>

<style> 

body,ul,li{margin:0;padding:0;}

    ul,li{list-style:none;}

    #test{

        margin:20px;

        width:390px;

        background:#F4F8FC;

        border-radius:10px;

        border:2px solid #D7E2EC;

    }

    #test li{

        height:25px;

        line-height:25px;

        padding:5px;

        border-bottom:1px dotted #D5D5D5;

        margin-bottom:-1px;

    }

</style>

</head>

<body>



  <ul id="test">

        <li>Test</li>

        <li>Test</li>

        <li>Test</li>

        <li>Test</li>

        <li>Test</li>

    </ul>

</body>

</html>

http://www.cnblogs.com/jscode/archive/2012/08/28/2660078.html

http://www.smashingmagazine.com/2009/07/27/the-definitive-guide-to-using-negative-margins/

 

你可能感兴趣的:(margin)