css一键布局(css多种方式实现双飞翼布局)
类别:Web前端 浏览量:995
时间:2022-04-02 16:33:07 css一键布局
css多种方式实现双飞翼布局圣杯布局、双飞翼布局效果图
从效果图来看圣杯布局、双飞翼布局效果是一样一样的。
圣杯布局、双飞翼布局就是左右两侧宽度固定,中间内容宽度自适应,即100%
圣杯布局
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } .clearfix:before, .clearfix:after{ display: table; content: " "; clear: both; } .container{ padding: 0 200px; } .header, .footer{ height: 200px; font-size: 28px; background-color: #f3f3f3; } .left{ position: relative; /* 2、将.left再次拉到最左边,否则.main的左侧会有200px的空白 */ left: -200px; float: left; width: 200px; min-height: 300px; /* 1、将.left拉到最左边,原来.left是掉下去的 */ margin-left: -100%; background-color: #f00; } .main{ float: left; width: 100%; min-height: 300px; background-color: #c32228; } .right{ position: relative; /* 2、将.right再次拉到最右边,否则.main的右侧会有200px的空白 */ right: -200px; float: left; width: 200px; /*/1、将.right拉到最右边,原来.right是掉下去的 */ margin-left: -200px; min-height: 300px; background-color: #f90; } </style>
<li class="header">header</li> <li class="container clearfix"> <li class="main">main</li> <li class="left">left</li> <li class="right">right</li> </li> <li class="footer">footer</li>
浮动实现双飞翼布局
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } .clearfix:before, .clearfix:after{ display: table; content: " "; clear: both; } .header, .footer{ height: 200px; font-size: 28px; background-color: #f3f3f3; } .left{ float: left; width: 200px; min-height: 300px; /* 将.left拉到最左边,原来.left是掉下去的 */ margin-left: -100%; background-color: #f00; } .main{ float: left; width: 100%; min-height: 300px; /* .left、.right各占了200px,因此需要将其抵消掉 */ padding: 0 200px; background-color: #c32228; } .right{ float: left; width: 200px; /* 将.right拉到最右边,原来.right是掉下去的 */ margin-left: -200px; min-height: 300px; background-color: #f90; } </style>
<li class="header">header</li> <li class="container clearfix"> <li class="main"> <li class="main-inner">main</li> </li> <li class="left">left</li> <li class="right">right</li> </li> <li class="footer">footer</li>
table-cell实现双飞翼布局(IE8也兼容哦~)
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } .container{ display: table; } .header, .footer{ height: 200px; font-size: 28px; background-color: #f3f3f3; } .left, .right, .main{ /* 外层容器使用table-cell布局,设置元素为table-cell布局后它们就能在一行显示了,display: table-cell;设置宽度无效, 因此他们的宽度由内容撑开。 */ display: table-cell; } .left-inner{ width: 200px; min-height: 300px; background-color: #f00; } .main{ width: 100%; } .main-inner{ min-height: 300px; background-color: #c32228; } .right-inner{ width: 200px; min-height: 300px; background-color: #f90; } </style>
<li class="header">header</li> <li class="container clearfix"> <li class="left"> <li class="left-inner">left</li> </li> <li class="main"> <li class="main-inner">main</li> </li> <li class="right"> <li class="right-inner">right</li> </li> </li> <li class="footer">footer</li>
绝对定位实现双飞翼布局
使用绝对定位实现有个小问题:父容器的高度只能由.main的高度来决定
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } .container{ position: relative; padding: 0 200px; } .header, .footer{ height: 200px; font-size: 28px; background-color: #f3f3f3; } .left{ position: absolute; top: 0; left: 0; width: 200px; min-height: 300px; background-color: #f00; } .main{ min-height: 300px; background-color: #c32228; } .right{ position: absolute; top: 0; right: 0; width: 200px; min-height: 300px; background-color: #f90; } </style>
<li class="header">header</li> <li class="container clearfix"> <li class="left">left</li> <li class="main">mian</li> <li class="right">right</li> </li> <li class="footer">footer</li>
使用flex实现双飞翼布局(有兼容性问题)
<style> *{ margin: 0; padding: 0; box-sizing: border-box; } .clearfix:before, .clearfix:after{ display: table; content: " "; clear: both; } .container{ display: flex; } .header, .footer{ height: 200px; font-size: 28px; background-color: #f3f3f3; } .left{ flex: 0 0 200px; width: 200px; min-height: 300px; background-color: #f00; } .main{ flex: 1; width: 100%; min-height: 300px; background-color: #c32228; } .right{ flex: 0 0 200px; width: 200px; min-height: 300px; background-color: #f90; } </style>
<li class="header">header</li> <li class="container clearfix"> <li class="left">left</li> <li class="main">main</li> <li class="right">right</li> </li> <li class="footer">footer</li>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
热门推荐
- windows 10家庭版上安装docker(win10家庭版安装Docker的方法步骤)
- python验证码处理教程(python简单验证码识别的实现方法)
- vue集成文件上传插件(vue 实现上传组件)
- vue.js入门教学第15讲(Vue.js 使用AntV X6的示例步骤)
- python电脑自动发送邮件(python学习--使用QQ邮箱发送邮件代码实例)
- docker获取自己的容器id(docker 如何添加证书)
- linux基础教程磁盘配额的设计(WDCP Linux服务器磁盘爆满的处理方法)
- django自定义后台界面(Django csrf 两种方法设置form的实例)
- http404解决方案(http403禁止访问怎么解决?http403禁止访问错误原因汇总)
- js绘制平滑路径(如何利用Javascript生成平滑曲线详解)