`

移动端H5网页“上中下布局”的另类实现思路

 
阅读更多

转自:http://www.css3china.com/?p=256

文章中还有几个链接介绍负margin

QQ截图20140221223815

记得曾经做过这样的一个面试题,面试题要求如下:

  1. 相册空间\硬盘空间的进度条,考虑百分比的控制;
  2. 左中右三栏等高,整个页面的宽度不固定,左右宽度固定,中栏自宽度适应,论坛的文章标题也自适应宽;
  3. 加“…”的地方,考虑过长溢出省略处理;
  4. 假如这是一个访问PV达2000W/日,因成本限制,网络带宽可能满足不了此访问量,会出现滞连情况,样式文件可能加载不了,且中栏内容是最重要且要呈现在用户眼前的。(也就是说,在无样式不完全加载情况下,中栏内容要优先左右两栏前);
  5. 关注标签语义化;
  6. 关注提交的页面原型便于团队合作,开发实现;
  7. 关注HTTP请求和带宽消耗所带来的体验和成本。

这几点要求中,除了考察一个网页的标签语义化、页面性能、开发技巧以外,页面三栏等高布局、中间列优先加载应该算是开发过程当中的整个核心思路和决定整个页面成败的关键点。

关于三栏等高布局,网上已经有了举不胜举的实现方法和思路,且不说这些思路的好与坏,大家可以百度百度、谷歌谷歌,自作评价。

个人觉得各大互联网公司做的比较好的三栏或者是两栏布局有以下几个站点:

当然两栏或三栏布局,目前在各互联网网站应用的实例非常之多,就不在此一一列举。

在所有的这些案例当中,应用最多的一个css属性非margin莫属了,margin的值为“负值”。

 

有关margin负值,这里有篇经典文章:

负值之美:负margin在页面布局中的应用

想必看完这篇文章,大家已经对负边距有了更深一层次的认识。

于是得到了以下计算公式:

Margin负边距 + 三栏等高布局 + 中间列优先加载 = 圣杯布局(业内盛传的布局概念)的一部分。

 

在三列等高中间列优先加载的实现过程当中,尝试再尝试,最终沉淀出了以下“非公认的优秀代码”:

html:

<div class="wrapper">

  <!–头部 start–>
  <header>header</header>
  <!–头部 end–>

  <!–主体内容 start–>
   <div class="main_1">
       <div class="main_2">
          <div class="main_3 cf">
              <!–中间列 start–>
              <section class="content">
                  <ul>
                      <li class="">
                          <a href="#">测试内容www.css3china.com</a>
                      </li>
                      <li class="">
                          <a href="#">测试内容www.css3china.com</a>
                      </li>
                      <li class="">
                          <a href="#">测试内容www.css3china.com</a>
                      </li>
                  </ul>
              </section>
              <!–中间列 end–>
              <!–左侧边栏 start–>
              <aside class="aside_l">
                  aside_l
              </aside>
              <!–左侧边栏 end–>
              <!–右侧边栏 start–>
              <aside class="aside_r">
                  aside_r
              </aside>
             <!–右侧边栏 end–>
          </div>
      </div>
  </div>
  <!–主体内容 end–>

  <!–底部导航版权 start–>

  <footer>footer</footer>
  <!–底部导航版权 end–>

 </div>

css:

html, body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td{margin:0;padding:0;}
html, body{height:100%;line-height:22px;color:#333;-webkit-text-size-adjust:none;}
body{height:100%;background:#fff;min-width:600px;font:16px '微软雅黑',Arial,Helvetica,sans-serif;}
img, a img, input{vertical-align:middle;}
img, a img, button {border:0;cursor:pointer;}
input, textarea{outline:none;-moz-outline:none;}
table, td ,th, tr{border-collapse:collapse;border:0;}
ul, ol, li{list-style:none;}
h1,h2,h3,h4,h5,h6{font-size:12px;}
a{color:#333333;text-decoration:underline;}
/*****清除浮动*****/
.cf:after{content:".";display:block;height:0;clear:both;visibility:hidden;font-size:0;}
.cf{display: inline-table;}
* html .cf{height:1%;}
.cf{display: block;}
/*****头脚****/
header, footer{height:44px;background:#555555;line-height:44px;text-align:center;color:#FFFFFF;}
/*****三栏布局*****/
.main_1{background:#666666;padding-right:170px;}
.main_1 .main_2{background:#666666;padding-left:180px;}
.main_1 .main_3{background:#999;position:relative;}
.content, .aside_l, .aside_r{height:100%;float:left;position:relative;text-align:center;}
.aside_l, .aside_r{line-height:50px;}
/*****中间列*****/
.content{width:100%;}
.content ul{padding:10px;font-size:14px;line-height:22px;}
/*****左栏*****/
.aside_l{width:180px;left:-100%;margin-left:-180px;}
/*****右栏*****/
.aside_r{width:170px;margin-right:-170px;}

猛戳DEMO

同理在开发移动端webapp时,我们同样需要面对各种布局以适应不同的产品需求,例如:上中下布局,曾经就是让重构头疼的一个问题。

关于webapp上中下布局,白树给我们整理一篇非常有料的文章:

移动web页面支持弹性滚动的3个方案

怎么样,是不是像打了鸡血一样兴奋,再也不用发愁移动端布局的事了!

 

接下来我为大家介绍一种新的实现移动端“上中下布局”的简单思路,同理于圣杯布局(margin负边距的巧妙应用)。

html:

 <div class="container">
     <header class="header">header</header>
     <section class="main">
         <div class="wrapper" id="wrapper"><!–  iscroll  容器 –>
             <div class="con"><!–  iscroll  滚动层 –>
                 <ul class="list">
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                     <li><a class="" href="#">测试内容www.css3china.com</a></li>
                 </ul>
             </div>
         </div>
     </section>
     <footer class="footer">footer</footer>
 </div>

css:

html, body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td{margin:0;padding:0;}
html, body{height:100%;line-height:22px;color:#333;-webkit-text-size-adjust:none;}
body{height:100%;background:#fff;min-width:600px;font:16px '微软雅黑',Arial,Helvetica,sans-serif;overflow:hidden;}
img, a img, input{vertical-align:middle;}
img, a img, button {border:0;cursor:pointer;}
input, textarea{outline:none;-moz-outline:none;}
table, td ,th, tr{border-collapse:collapse;border:0;}
ul, ol, li{list-style:none;}
h1,h2,h3,h4,h5,h6{font-size:12px;}
a{color:#333333;text-decoration:underline;}
.container{height:100%;}
.header{background:#555555;height:44px;position:relative;z-index:100;line-height:44px;text-align:center;color:#FFFFFF;}
.main{background:#999999;height:100%;margin:-44px 0;padding:44px 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.wrapper{height:100%;overflow-y:auto\9;position:relative;}
.wrapper .con{padding:10px;}
.footer{background:#555555;height:44px;margin-top:-44px;position:relative;z-index:100;line-height:44px;text-align:center;color:#FFFFFF;}

chrome猛戳DEMO吧!ie猛戳DEMO吧!

代码中标红代码为针对IE做的兼容,webkit内核使用iscroll插件实现滚动,IE使用浏览器默认滚动!

注意点:main的高度必须为整个网页的高度,即为height:100%,所以需要继承容器container{height:100%}的高度,container继承body{height:100%;}的高度,以此类推。

最终使用margin负值和relative、z-index设置元素的位置和层级关系。从而使用纯css实现了不用css3、不专门针对IE做特殊兼容处理的移动端“上中下布局”。

原文地址:http://www.css3china.com/?cat=16

分享到:
评论

相关推荐

    移动端H5上下滑屏翻页demo

    总的来说,这个H5 demo提供了一种实现移动端上下滑屏翻页效果的方法,它具有良好的可扩展性和自适应性,可以帮助开发者快速构建响应式的移动端网页。对于想要学习或使用此类功能的人来说,这是一个有价值的资源。...

    手摸手,带你实现移动端H5瀑布流布局.doc

    移动端H5瀑布流布局是一种流行的网页布局方式,视觉上呈现出一种像瀑布一样垂直落下的排版。每张图片并不是显示的正正方方的,而是有的长有的短,呈现出一种不规则的形状。但是它们的宽度通常都是相同的。 移动端...

    移动端H5前端设计项目源码

    这个项目包含了一系列文件和目录,每个都有其特定的作用,是实现交互式、响应式的网页设计的关键组成部分。 首先,我们来看看`人民拍客.html`,这是一个HTML文件,它是网页的基础结构,包含了页面的骨架和内容。...

    移动端H5 UI框架

    移动端H5 UI框架是开发移动应用网页界面的重要工具,它为开发者提供了预设计的组件、样式和布局,以便快速构建美观且响应式的用户界面。在本文中,我们将深入探讨这个主题,了解H5 UI框架的基本概念,以及如何利用...

    一个移动端H5Video标签播放视频的实现

    在移动端使用H5的`&lt;video&gt;`标签来播放视频已经成为现代网页开发的常见实践,尤其在移动设备上,用户越来越倾向于通过浏览器直接观看在线视频。本文将深入探讨如何利用JavaScript和HTML5的`&lt;video&gt;`标签在移动端实现...

    整套移动端h5页面源码

    在IT行业中,移动端H5页面源码是构建移动互联网应用的一种常见方式,尤其在电商项目中广泛应用。H5,即HTML5,是超文本标记语言的第五次重大修订,为网页开发提供了更多功能和交互性。本套源码提供了一整套移动端的...

    uniapp的移动端h5的横屏电子签名

    自定义一个h5页面,实现可以横屏手写电子签名的功能,且支持回显(图片可以转化为签字版的canvas,且支持在此基础上继续进行手写签名)由于uniapp微信小程序支持横竖屏切换配置,但是移动端h5不支持。自定义一个h5...

    移动端H5商城模板源码-34个页面

    在IT行业中,移动端H5商城模板源码是开发者和设计师常用的一种资源,它能快速构建一个功能完善的在线购物平台。本资源"移动端H5商城模板源码-34个页面"是一个基于原生HTML和JavaScript技术开发的商城类H5应用模板,...

    移动端H5弹窗 完完整整,拿来即用

    综上所述,这个移动端H5弹窗资源提供了完整的弹窗实现,不仅包含基本的确认弹窗,还有带取消/确认选项的弹窗,并集成发送Ajax请求的功能,是移动端开发者的实用工具。通过理解和运用这些知识点,你可以快速地在自己...

    移动端H5页面设计实战.docx

    移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx移动端H5页面设计实战.docx...

    ecshop 移动端h5操作手册

    在3.6版本中,ECShop引入了移动端H5功能,以适应移动互联网的发展,使商家能够更好地触达手机和平板设备上的消费者。本手册将深入探讨如何在ECShop 3.6版本中管理和利用H5功能,以提升移动端用户体验。 1. **H5概述...

    移动端H5图片轮播缩放

    在移动端H5开发中,图片轮播和缩放功能是非常常见且重要的元素,尤其是在展示产品、分享信息或者创建互动体验时。本资源基于Sencha Touch框架,为移动设备提供了高效且用户友好的图片轮播与缩放解决方案。下面将详细...

    移动端H5页面设计实战.pdf

    CSS3媒体查询、CSS3动画和Canvas等技术使得在网页上实现复杂的交互和动效成为可能。现代手机浏览器普遍支持HTML5核心技术,包括触摸事件处理、声音和视频播放、CSS变换渲染以及设备传感器数据的获取。这些技术的广泛...

    移动端H5页面控制台打印信息:vconsole

    在移动端H5页面开发中,由于手机浏览器的限制,开发者往往无法直接在设备上查看到JavaScript的控制台输出信息,这给调试带来了诸多不便。为了解决这个问题,开发者社区提出了一个名为vConsole的解决方案。vConsole是...

    移动端h5网页app.zip

    12套 HTML5移动端网页app模板h5前端设计代码手机自适应(商城、订餐、招聘等) 整套 : 移动端模板: html+css+js 下载浏览器打开即可运行浏览,完整的业务流程界面,完整的图片资源。 微信公众号、小程序webview 都...

    NoSleep-移动端H5页面永不休眠插件

    标题中的"NoSleep"是一个专为移动端H5页面设计的插件,它的主要功能是防止设备在用户浏览网页时自动进入休眠模式。这意味着用户在观看H5内容时,无论是Android还是iOS系统的手机,都能保持屏幕常亮,不会因为设备的...

    基于HBuilder X移动端h5毕业设计作品集源码

    基于HBuilder X移动端h5毕业设计作品集源码。 熟悉了利用hx h5+的开发转uniapp基本不用再考虑开发工具了,相同血脉几乎相同的套路,曾经的h5+也可以直接混入使用当然仅限APP端。 HBuilderX 版本 编译模式:自定义...

    比较好的移动端h5框架

    综上所述,Frozenui作为移动端H5框架的一个优秀选择,凭借其丰富的组件库、响应式布局、轻量级特性、易用性以及良好的社区支持,为开发者提供了强大的开发工具。对于那些希望快速构建高质量移动端Web应用的开发者而...

    移动端手机H5网页滑屏效果

    在移动端H5网页设计中,滑屏效果是一种常见的交互方式,尤其在展示型网站和产品介绍页面中广泛应用。这种效果让用户体验更为流畅,能够轻松浏览多个页面或内容块,而无需进行多次点击。本篇文章将深入探讨如何实现...

    移动端H5开发 Turn.js实现很棒的翻书效果

    移动端H5开发中实现翻书效果是一个在移动设备上模拟现实书籍翻页效果的功能。近年来,随着移动设备的普及和触摸交互的流行,越来越多的开发者需要在移动网站上提供类似实体书的阅读体验。Turn.js是一款强大的...

Global site tag (gtag.js) - Google Analytics