基于flex弹性布局实现“头尾固定,中间滚动”的页面(纯CSS实现)
来源:互联网 发布:java开放性思维面试题 编辑:程序博客网 时间:2024/05/22 00:25
之前写过一个小项目,首先这个页面布局是这个样子滴,举个栗子,京东的首页:
这算是一种还算常见的页面样式吧,头部和底部固定(或者底部固定没有头、头部固定没有底),有的会用fixed去做,但有在很多手机上会出现很多的奇葩的问题。
思前想后,后来我决定使用弹性布局去做,至少在手机浏览器中都是支持的,虽然写法上可能为了考虑老版本要多谢一些兼容性的无用CSS,配合HTML5 history API还可以实现一个无刷新跳转,并且用户可点击前进后退和刷新页面。最近有遇到一个开发需求:单个H5页面,于是乎我干脆把之前写的小项目的CSS+HTML布局单拎出来,方便以后使用,其实实现方法很无聊很弱智:
首先是整个页面的骨架(HTML部分):
<body><section class="page"><header class="header">我是头部</header><section class="content"><div>asdasd</div></section><footer class="footer"><nav class="foot-nav"><b>首页</b><b>其他</b><b>中心</b></nav></footer></section></body>
很简单,就是一个头(.header)、内容区(.content)、脚部(.footer),然后被一个.page包裹就实现了满屏,骨架超简单,在附上CSS实现:
/*清除手机的一些基本样式*/html {font-size:62.5%;width:100%;height:100%;-webkit-font-smoothing:antialiased;}body {text-align:center;-webkit-user-select:none;width:100%;height:100%;/*background:#fff;*/ /*默认背景颜色*//*font-size:1.2rem;*/ /*默认字体大小*//*color: #000;*/ /*默认字体颜色*/font-family:"Microsoft YaHei","Helvetica Neue",Helvetica,STHeiTi,sans-serif;-webkit-text-size-adjust:none;}* {margin:0;padding:0;list-style:none;}i, em, b {font-style:normal;font-weight:normal;}:-moz-placeholder {color:#ccc;}::-moz-placeholder {color:#ccc;}::-webkit-textarea-placeholder {color:#ccc;}:-ms-textarea-placeholder {color:#ccc;}img{width:100%;vertical-align:top;}input,textarea,select{-webkit-appearance:none;font-size:1.2rem;border:0;background:transparent;font-family:"黑体","Microsoft YaHei","Helvetica Neue",Helvetica,STHeiTi,sans-serif;outline:none;}input,a,span{-webkit-tap-highlight-color: rgba(0,0,0,0);}/*flex最外框*/.page{display:-webkit-box;-webkit-box-orient:vertical;height:100%;}/*flex内容区*/.page .content{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch;background-color:#ccc;}/*flex头部*/.header{display: -webkit-box;}.header *{display: block;}/*flex底部,按钮平均分布*/.footer{overflow: hidden;background:#fff;}.foot-nav{display:-webkit-box;height: 2rem;line-height: 2rem;}.foot-nav *{display: block;-webkit-box-flex: 1;-webkit-flex:1;flex:1;}
就是上面一段CSS,就会被浏览器解析成这样:
头部和底部都是被子元素撑开的,并不用指定高度,,底部的button不管来几个也都是平均分布的,完全不用去计算一堆margin、padding以及position等等,弹性布局超赞有木有,当年的CSS2+HTML4时代要想实现这样的布局超麻烦有木有
然后再来个弹出层,一个简单的基于头尾固定的H5小页面就出来了:
<div class="layer-wraper"><div class="layer-inside">哈哈哈哈哈居中居中<p>呜呜呜呜</p></div></div>
/*弹出层样式(自动居中)*/.layer-wraper{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,255,0,0.7);display:table;width:100%;height:100%;z-index:1000;}.layer-inside{display:table-cell;vertical-align:middle;}
使用table布局自动居中,并且这时使用fixed充满屏幕(百分比情况下fixed还算可靠),这样一个绿色的半透明背景并且自动居中的弹出层基本样式救出来了:
弹性布局大法好,应付一般的页面都不是问题,除非设计的脑子被僵尸吃了,硬要一些变态的需求以及狗shit一样的设计
0 0
- 基于flex弹性布局实现“头尾固定,中间滚动”的页面(纯CSS实现)
- 基于flex弹性布局实现“头尾固定,中间滚动”的页面(纯CSS实现)
- 基于flex弹性布局头尾固定,中间滚动效果实现
- 纯CSS实现三列布局(两边固定,中间自适应)
- 纯css实现table表格固定列和表头,中间横向滚动的思路-附案例
- 纯css实现table表格固定列和表头,中间横向滚动的思路-附案例
- css头尾固定中间高度自适应布局
- flex上下固定中间滚动布局
- Flex布局实现圣杯布局,左右两列固定、中间列自适应的三列式布局
- FLEX实现两侧边栏固定中间自适应布局
- android实现顶部底部标题栏固定 中间可滚动,仿QQ空间的主界面布局
- 用flex实现弹性布局
- 中间文字,两边横线(纯css实现的哦)
- css 一列固定一列自适应布局-flex布局实现
- css经典布局——头尾固定高度中间高度自适应布局
- css经典布局——头尾固定高度中间高度自适应布局
- (div+css)上下固定中间自适应高度网页布局的实现(FF,IE)
- (div+css)上下固定中间自适应高度网页布局的实现(FF,IE)
- 一个简单HTML实现一个选项卡
- Ubuntu14.04下面利用TFTP上传和下载文件过程
- 查找带回
- 常见的开源许可协议及如何选择(整理)
- 2017.02.22回顾
- 基于flex弹性布局实现“头尾固定,中间滚动”的页面(纯CSS实现)
- 一家反欺诈公司的面试经历——3.hibernate中的session的三种状态
- 用design做界面菜果的坑
- MSP430F1612 TimerA PWM输出
- sql where、group by、having、roder by 顺序
- 2008年北理复试上机题
- IntelliJ IDEA 2016 破解方法
- 一家反欺诈公司的面试经历——4.equals方法的重写
- Spark on Yarn集群搭建