css 常见布局实现

三世轮回 提交于 2020-03-18 01:44:39

水平居中

垂直居中

1.图片水平垂直居中

  • 图片背景大小确定

   margin-left值等于图片所在容器的宽度(imbBoxWidth)减去图片本身宽度(imgWidth)的值的一半  

   margin-top值和margin-left很类似,只是把相对应的宽度值换成高度值

  • 图片大小不固定

   1.  对于容器  display:table-cell vertical-align:middle text-align:center ie6.7不支持 

        display:table-cell 属性指让标签元素以表格单元格的形式呈现,类似于td标签

   2.  添加一个与容器高度相同的标签span,兼容ie6,7

      在图片的容器中创建一个空元素(比如说span),设置span的“display:inline-block;height:100%;vertical-align:middle”。

        IE6-7中空的line-block元素宽度为“0”,在IE6-7下是没有效果的,给span加上“width:1px”,会给水平居中造成1px的误差。  

圣杯布局和双飞翼布局

  都是三栏布局,两边盒子宽度固定,中间宽度自适应。中间栏放到文档流前面,保证先行渲染。

  都是三栏全部float:left浮动。

  区别对于中间栏div的内容不被遮挡上,圣杯布局是中间栏在添加相对定位,并配合left和right属性,效果上表现为三栏是单独分开的(如果可以看到空隙的话

  双飞翼布局是在中间栏的div中嵌套一个div,内容写在嵌套的div里,然后对嵌套的div设置margin-left和margin-right,效果上表现为左右两栏在中间栏的上面,中间栏还是100%宽度。

 

  圣杯布局:用到浮动、负边距、相对定位,不添加额外标签

<div class="header">Header</div>
<div class="bd">
    <div class="main">Main</div>
    <div class="left">Left</div>
    <div class="right">Right
    </div>
</div>
<div class="footer">Footer</div>

   

 <style>
        body{padding:0;margin:0}
        .header,.footer{width:100%;  background: #666;height:30px;clear:both;}
        .bd{
            padding-left:150px;
            padding-right:190px;
        }
        .left{
            background: #E79F6D;
            width:150px;
            float:left;
            margin-left:-100%;
            position: relative;
            left:-150px;
        }
        .main{
            background: #D6D6D6;
            width:100%;
            float:left;

        }
        .right{
            background: #77BBDD;
            width:190px;
            float:left;
            margin-left:-190px;
            position:relative;
            right:-190px;
        }
    </style>

 双飞翼布局

<div id="hd">header</div> 
  <div id="middle">
    <div id="inside">middle</div>
  </div>
  <div id="left">left</div>
  <div id="right">right</div>
  <div id="footer">footer</div>

 

#hd{
    height:50px;
    background: #666;
    text-align: center;
}
#middle{
    float:left;
    width:100%;/*左栏上去到第一行*/     
    height:100px;
    background:blue;
}
#left{
    float:left;
    width:180px;
    height:100px;
    margin-left:-100%;
    background:#0c9;
}
#right{
    float:left;
    width:200px;
    height:100px;
    margin-left:-200px;
    background:#0c9;
}

/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/ 
#inside{
    margin:0 200px 0 180px;
    height:100px;
}
#footer{  
   clear:both; /*记得清楚浮动*/  
   height:50px;     
   background: #666;    
   text-align: center; 
} 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!