博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CSS常见布局
阅读量:4958 次
发布时间:2019-06-12

本文共 3133 字,大约阅读时间需要 10 分钟。

一、单列布局

  1. 水平居中

    1.1 使用inline-block和text-align 

.parent{
text-align:center;} .child{
display:inline-block;}

     1.2 使用margin:0 auto实现    

.child{
width:200px;margin:0 auto;}

     1.3 使用绝对定位实现

.parent{
position:relative;} .child{
position:absolute;left:50%;margin-left:-100px;width:200px;} /*margin-left的负值为盒子宽度的一半*/

     1.4 使用flex布局实现

.parent{
display:flex;justify-content:center;}

  2. 垂直居中

    2.1 使用vertical-align

.parent{
line-height:100px} .child{
display:inline-block;vertical-align:middle;}

    2.2 使用绝对定位实现

.parent{
position:relative;} .child{
position:absolute;top:50%;margin-top:-100px;height:200px;} /*margin-top的负值为盒子高度的一半*/

    2.3 使用flex实现

.parent{
display:flex;align-items:center;}

  3. 水平垂直居中

    3.1 使用inline-block,text-align和vertical-align

.parent{
line-height:100px;text-align:center;} .child{
display:inline-block;vertical-align:middle}

    3.2 使用绝对定位实现

.parent{
position:relative;} .child{
position:absolute;top:50%;left:50%;margin-top:-100px;margin-left:-100px;width:200px;height:200px;} /*margin-top的负值为盒子高度的一半,margin-left的负值为盒子宽度的一半*/

    3.3 使用flex实现

.parent{
display:flex;justify-content:center;align-items:center;}

二、多列布局

  1. 圣杯布局三列布局,左右定宽,中间宽度自适应;中间栏要在浏览器中优先展示渲染;允许任意列的高度最高。

HTML:

header
main
left
right

    (1) 基础样式

*{
margin:0;padding:0} body{
min-width:800px;}.header,.footer{
border: 1px solid #333; background: #aaa; text-align: center;}.container{
border:2px solid yellow;}.left{
width:200px; background:skyblue; } .right{
width:200px; background:pink; } .main{
width:100%; background:tomato; }
.main,.left,.right{   min-height:100px; }

   

    (2) 三列均设置左浮动 

.left,.main,.right{
float:left;}

    (3) 清除浮动

.container{
zoom:1;}.container:after{
content:""; display:block; clear:both; }

    (4) 让left和right上移

.left{
margin-left:-100%; /*利用margin-left的负值,将left列移动到上一行的开头*/ width:200px; background:skyblue;}.right{
margin-left:-200px; /*利用margin-left的负值,将right列移动到上一行的末尾*/ width:200px; background:pink;}

left列和right列已经上移,但是可以看见,此时main已被遮盖。

    (5) 解决遮盖问题

    给.containter左右内边距,大小分别为left列的宽和right列的宽。

.container{
padding:0px 200px; border:2px solid yellow; zoom:1;}

    然后利用相对定位,将left列和right列定位到两侧空白处。

.left{
position:relative; left:-200px; margin-left:-100%; width:200px; background:skyblue;}.right{
position:relative; right:-200px; margin-left:-200px; width:200px; background:pink;}

   遮挡问题已解决,main可见啦。

   至此,圣杯布局已完成,中间列宽度自适应。

   2. 双飞翼布局:三列布局,左右定宽,中间宽度自适应;中间栏要在浏览器中优先展示渲染;允许任意列的高度最高。

   双飞翼布局和圣杯布局基本一样,不同之处在于解决遮盖问题的方式不同

   双飞翼布局在main元素中添加了一个子元素content,并给这个子元素设置margin-left和margin-right,以至于content里的内容不被遮盖。

   HTML:

header
content
left
right

  CSS:

.content{
margin:0 200px}

   双飞翼布局也完成了,个人感觉比圣杯布局更简洁;完整代码就不上了,很简单的,不熟悉的可以动手试试哦。

转载于:https://www.cnblogs.com/crackedlove/p/10033692.html

你可能感兴趣的文章
客户数据库出现大量cache buffer chains latch
查看>>
機械の総合病院 [MISSION LEVEL: C]
查看>>
实战练习细节(分行/拼接字符串/字符串转int/weak和copy)
查看>>
Strict Standards: Only variables should be passed by reference
查看>>
hiho_offer收割18_题解报告_差第四题
查看>>
AngularJs表单验证
查看>>
静态方法是否属于线程安全
查看>>
02号团队-团队任务3:每日立会(2018-12-05)
查看>>
SQLite移植手记1
查看>>
C# windows程序应用与JavaScript 程序交互实现例子
查看>>
HashMap详解
查看>>
js05-DOM对象二
查看>>
mariadb BINLOG_FORMAT = STATEMENT 异常
查看>>
C3P0 WARN: Establishing SSL connection without server's identity verification is not recommended
查看>>
iPhone在日本最牛,在中国输得最慘
查看>>
动态方法决议 和 消息转发
查看>>
WPF自定义搜索框代码分享
查看>>
js 基础拓展
查看>>
C#生成随机数
查看>>
iOS CoreData介绍和使用(以及一些注意事项)
查看>>