html5 移动端单页面布局
教程管理员 发布于2023-09-27 07:35 HTML教程 121
序
移动端的web网页使用的是响应式设计,但一般我们看到的网站页面都是跳转刷新得到的,比如通过点击一个menu后进入到另一个页面
今天来说下是移动端的单页面的布局。单页面就是一切操作和布局都是在一个页面下进行 不需要页面跳转 ,再通俗的说就是类似于平常的选项卡
但是他又比选项卡要复杂一点 因为他是在手机端 并且当做是一个页面
单页面的作用以及优势:
1.嵌套到native里实现app的混合开发
2.数据量小的页面用单页面便于开发和维护
3.无需跳转页面响应更快
Demo效果
扫描二维码 ,或直接用手机访问 http://www.feman.cn/h5/html5mobileLayout.html
代码实践
1 页面html结构
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1 user-scalable=0"/> <title>html5 移动端单页面布局</title> </head> <body> <!--页面主体部分--> <div class="main"> <section class="curr"> <img src="https://d13yacurqjgara.cloudfront.net/users/136389/screenshots/1732382/dashboardfash_perspective_1x.png" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/1061/screenshots/678418/pixelplant_ipad.jpg" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/255/screenshots/1332988/blog_1x.png" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/188162/screenshots/1143662/satigo_website_1x.jpg" alt=""> </section> <section class="hide"> <img src="https://d13yacurqjgara.cloudfront.net/users/4404/screenshots/757400/css3.jpg" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/1061/screenshots/620200/camerastore.jpg" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/269922/screenshots/1008644/files.jpg" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/12787/screenshots/1243088/dribbblemini_1x.png" alt=""> </section> <section class="hide"> <img src="https://d13yacurqjgara.cloudfront.net/users/84550/screenshots/1236264/clip.png" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/2158/screenshots/377946/hra.png" alt=""> </section> <section class="hide"> <img src="https://d13yacurqjgara.cloudfront.net/users/114529/screenshots/534146/scienza2.jpeg" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/33345/screenshots/1150666/zen-of-ruby_1x.png" alt=""> <img src="https://d13yacurqjgara.cloudfront.net/users/33345/screenshots/965067/company-info_1x.png" alt=""> </section> </div> <!--页面菜单按钮--> <div class="menu"> <ul> <li class="curr">Html5</li> <li>Css3</li> <li>Javascript</li> <li>About</li> </ul> </div> <script src="js/zepto.js"></script> </body> </html>
注:页面图片均来自dribbble
demo里面我用的全是图片静态展示 你可以添加自己的结构或动态程序
页面结构跟我们平常写的选项卡没什么区别,接下来我们用css装饰这个结构让他在手机上呈现出页面的效果
2 css
<style> /*初始化css*/ *{ margin:0; padding: 0;} li{ list-style-type: none;} img{ max-width: 100%; display: block; margin: 0 auto 5px auto;} html,body{ width: 100%; height: 100%; background: #e4e4e4; -webkit-tap-highlight-color: rgba(88,44,22,0.9); -webkit-touch-callout: none; -webkit-user-select: none; } /*主体页面样式*/ .main{ width: 100%; height: auto; position: relative;} .main section{ width: 100%; height: auto; position:absolute; left: 0; top:0; } .main section.hide{ display: none;} .main section.curr{ display: block;} /*菜单样式*/ .menu{ width: 100%; height: 45px; position: fixed; bottom:0; left:0; box-shadow: #2d2d2d 0 0 4px;background:#0099cc;} .menu.menucurr{ background: #ea4c88;} .menu ul{width: 100%; height: 100%; } .menu li{ width: 24.9%; height: 100%; float: left; line-height: 45px; text-align: center; background: #0099cc; color:#fff;} .menu li.curr{ background: #ea4c88;} .menu li:nth-child(1),.menu li:nth-child(2),.menu li:nth-child(3){ border-right:1px solid #663300;} </style>
移动端的页面多数情况下用百分比或者媒体查询来设置页面的宽高度 这样会达到响应的效果
这里解释几点
1.-webkit-tap-highlight-color: rgba(0,0,0,0);也可以写成-webkit-tap-highlight-color: transparent; 去掉点击时高光显示 你也可以更改里面的参数 达到你想要的点击显示高光效果
2.-webkit-touch-callout: none; //长按页面时不触发系统菜单
3.-webkit-user-select: none; //长按无法选择文本 这个很有用 一般如果body里面没有添加这个属性的手机页面 当我们长按某段文字的时候就会出现选中这段文字弹出“复制,全选”等选项 但在webapp开发里 这个就显得很不友好 所以尤其是在webapp开发的时候 为了达到与native一样的真实效果 必须的添加
4.html,body{ width: 100%; height: 100%;} 这个是整个文档的初始化宽高度 后面的子级都是按照这个数据设置
5.main和子级的height都设置为auto 你也可以不用设 但如果你的页面是允许滚动的话最好还是要设一下
6.我们把menu使用固定定位到页面底部 你也可以把他定位在顶部 或任何你想定位的地方
7.menu 里面的tab我们使用的是百分比分配 因为有border-right所以不能很准确的分配多少 这个应该会有什么更精准的方法平均分配 待研究 (这个已解决 用css3的display:flex 可以实现平分的效果)
3 js
<script> $(function(){ $(".menu li").each(function(index){ $(this).tap(function(){ $(this).addClass("curr").siblings().removeClass("curr"); $(".main section").eq(index).show().siblings().hide(); if(index==3){ $(".menu").addClass("menucurr"); }else{ $(".menu").removeClass("menucurr"); } }) }) }) </script>
引用的框架是zepto.js 目前移动开发比较流行的js框架 zepto的语法跟jquery是相通的 所以可以按照jquery的写法编写
这里的点击menu事件不是使用click而是tap 这是zepto为移动端专门编写的一个点击方法 确切的说应该叫轻触 他比click的点击速度要快 使用的是touch事件 这个在默认的zepto里面是没有的 需要把touch这个模块儿添加进来才可使用tap
这样一个移动端的单页面就完成了
这是个比较简单的单页面
根据这个思维还可以更灵活的编写一些动态的并且更绚丽的页面!
- 上一篇:HTML的常用标签
- 下一篇:HTML基本理解day7 | 青训营笔记
相关推荐
- 03-01 一份航空信件风格的PPT模板,非常有创意,内页采用稿纸风格,还包括邮票风格图片展示页面和数据页面。
- 03-01 一份高逼格欧美风杂志风通用PPT模板,排版布局现代时尚,醒目明快的灰黄配色,本模板分类于:精美PPT模板下载。
- 02-29 简约大色块文艺范PPT模板。一份简洁清新文艺范PowerPoint模板,清新大色块排版布局,以图文页为主。使用字体:迷你简中倩、ADELE。
- 02-25 时尚杂志风图文排版PPT模板。一套精美的欧美杂志风PowerPoint模板,以图文排版页面为主。
- 02-20 高端企业商业计划书PPT模板。一套商业计划书幻灯片模板,图文排版页面为主,动态播放,高端大气。
- 10-04 在HTML中取得请求中的参数
- 10-04 SharePoint 2013 母版页取消和HTML页关联
- 10-04 29行代码使用HTML5 Canvas API绘制一颗红心
- 10-04 浏览器加载和渲染html的顺序,Div和Table的区别
- 10-04 《HTML5完美游戏开发》——2.6 Processing.js实例和整合
- 控制面板
- 友情链接
- 最近发表
-
- 涂鸦而不乱简约艺术主题Office PPT免费模板背景素材下载
- 有创意的情人表白动态贺卡Office PPT免费模板背景素材下载
- 绿色简约技能竞赛电力Office PPT免费模板背景素材下载
- 极简几何商务蓝年终总结汇报Office PPT免费模板背景素材下载
- 蓝橙简约商务年终总结汇报Office PPT免费模板背景素材下载
- 绿色清新教育风课堂教学通用Office PPT免费模板背景素材下载
- 潮流复古艺术感年终总结Office PPT免费模板背景素材下载
- 浅绿商务风工作总结报告Office PPT免费模板背景素材下载
- 大气简约时尚年终总结汇报Office PPT免费模板背景素材下载
- 喜庆春节风公司年终誓师表彰大会Office PPT免费模板背景素材下载
- 最新留言
-