栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Html/CSS > CSS教程

CSS margin全面了解

CSS教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

CSS margin全面了解

一、margin可以为负值

在盒模型中,内容区的width/height、padding、border都不能为负值,但是margin例外,它可以为负值。

关于margin负值的使用技巧,了解不多,日后有机会再补充,此处先贴一个经典应用,margin-left负值结合浮动实现不改变DOM结构的流体布局。

此demo与CSS float浅析篇中的是同一个。

XML/HTML Code复制内容到剪贴板
  1.   
  2.   
  3.       
  4.           
  5.         不改变DOM结构的流体布局  
  6.           
  7.       
  8.       
  9.           
  10.               
  11.                   
  12.                 

    不改变DOM位置的流体布局

      
  13.                 

    假如有一段文本和一幅图像,在DOM节点中,文本在前,图像在后,怎么能把图像定位到右边呢?

      
  14.                 

    通常的做法是,调换DOM节点中图像与文本的位置,让图像在前,文本在后,然后将图像浮动到右边即可。

      
  15.                 

    但这样改变DOM节点顺序始终不妥,还有什么更好的方法呢?

      
  16.                 

    下面就介绍一种新的思路来完成布局。

      
  17.                 
        
    •                     
    • 将文本用div包起来,定义为box1;现在的结构是一个box1和一个img。
    •   
    •                     
    • 将box1宽度设为100%,左浮动;将img设置一个宽度,也左浮动,然后margin-left设为负的宽度值;此时图像就定位到文本的右边啦。
    •   
    •                     
    • 但是有一个问题,图像盖住了文本内容,这可怎么办?
    •   
    •                     
    • 重点来了,在box1中增加一个box2,box2把文本全部包起来,然后margin-right设为图像的宽度(+额外的间距),这样就解决问题啦!
    •   
    •                 
      
  18.                 
  
  •             
  •   
  •             

      
  •         
  •   
  •       
  •   
  • 二、margin的百分比数值

    当margin属性的值为百分数时,其总是以父元素的width为基数进行计算。

    请看下面这个demo,当初折磨了我N久的。。。只怪我知道得太晚了,说多了都是泪啊。。。

    XML/HTML Code复制内容到剪贴板
    1.   
    2.   
    3.       
    4.           
    5.         margin的百分数值  
    6.           
    7.       
    8.   
    9.       
    10.           
    11.               
    12.                 

      父元素的高度为300px,子元素的高度为150px,只要margin-top和margin-bottom都为75px,这个盒子就能垂直居中。

        
    13.                 

      OK,居中啦!!!

        
    14.             
      
  •           
  •           
  •               
  •                 

    既然子元素的高度是父元素高度的50%,那么只要margin-top和margin-bottom都为25%,应该也能垂直居中。

      
  •                 

    额,这什么鬼?说好的居中呢?

      
  •               
  •           
  •       
  •   
  • 三、垂直方向上margin的合并

    这个问题经常造成一些困惑,不过只需要记住一句话即可,垂直方向上的margin只要亲密接触就会合并,也只有亲密接触才会合并。

    垂直方向上margin的合并,如果发生在相邻元素,其实是很好理解的;但是如果发生在父元素与子元素之间,就有些怪异了。

    来看例子:

    XML/HTML Code复制内容到剪贴板
    1.   
    2.   
    3.       
    4.           
    5.         垂直方向上的margin合并  
    6.           
    7.       
    8.   
    9.       
    10.           
    11.               
    12.                 

      父元素的margin-top为50px,子元素的margin-top为25px;

        
    13.                 

      咦,子元素的margin-top呢?为什么都顶到父元素上边界了?

        
    14.                 

      额,因为父元素与子元素的margin-top亲密接触了呀,所以它们合并在一起了啊。

        
    15.               
    16.           
    17.           
    18.               
    19.                 

      可是我就是想让子元素距离父元素的上边界25px啊,我不想让它们合并呀。

        
    20.                 

      很简单,给父元素加个边框,它们就无法亲密接触了,就不会合并了啊。

        
    21.                 

      或者给父元素设置padding也是可以的喔。

        
    22.               
    23.           
    24.       
    25.   

    消除垂直方向上margin合并的方法:给父元素加border或者加padding,打破父元素与子元素margin之间的亲密接触即可。

    margin合并的规则:

    XML/HTML Code复制内容到剪贴板
    1.   
    2.   
    3.       
    4.           
    5.         margin合并规则  
    6.           
    7.       
    8.   
    9.       
    10.           
    11.             box1  
    12.             box2  
    13.             

      box1的margin-bottom为30px,box2的margin-top为20px,两个margin都是正数,取绝对值大的。

          
    14.           
    15.           
    16.             box3  
    17.             box4  
    18.             

      box3的margin-bottom为30px,box4的margin-top为-30px,两个margin一正一负,相加。

          
    19.           
    20.           
    21.             box5  
    22.             box6  
    23.             

      box5的margin-bottom为-30px,box6的margin-top为-50px,两个margin都是负数,取绝对值大的。

          
    24.           
    25.       
    26.   

    1.    两个margin都是正数,取绝对值大的;

    2.    一个margin是正数,另一个margin是负数,相加;

    3.    两个margin都是负数,取绝对值大的。

    以上这篇CSS margin全面了解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。

    原文地址:http://www.cnblogs.com/cc156676/archive/2016/07/21/5690270.html

    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/217697.html

    CSS教程相关栏目本月热门文章

    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号