http://www.25xt.com/html5css3/8092.html

响应式设计

1 媒体查询 适用于不同固定宽度设计

媒体类型 :

    screen 屏幕

    print 打印机

    handheld 手持设备

    all 通用

常用媒体查询参数

    width: 视口宽

    height: 视口高

    device-width: 设备宽度

    device-height: 设备高度

    orientation: 检测设备处于横向 landscape 还是竖屏 portrait

2 百分比布局

3 弹性图片 图片max-width:100% 图片容器根据媒体查询改变尺寸

4 重新布局 显示与隐藏 移动设备力求显示简洁

  1 同比例缩减元素尺寸

  2 调整页面结构布局

  3 隐藏冗余的元素

  经常需要切换位置的元素使用(绝对定位),减少重绘提高渲染性能

  权衡:性能最优 和  显示最优

移动端的适配

我们使用rem作单位,本项目中标准为1rem = 100px,适配750px设备。

浏览器执行下列代码,改变根元素的font-size,做到移动端的适配。

<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no">
(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth > 750 ? 360 : docEl.clientWidth ;
if (!clientWidth) return;
docEl.style.fontSize = clientWidth / 750 * 100 + 'px';
};
if (!doc.addEventListener) return;
doc.addEventListener('DOMContentLoaded', recalc, false);
if (docEl.clientWidth > 750) return;
win.addEventListener(resizeEvt, recalc, false);
})(document, window);

特殊样式处理

1 高清图片

  移动web页面上渲染图片,为了避免图片产生模糊 , 图片宽高应该用物理像素单位渲染 即 100*100 应该使用100dp*100dp

  width: (w_value/dpr)px; 例如 100*100图片 应该使用 50px*50px 尤其是retina屏幕

height: (h_value/dpr)px;

2 一像素边框 问题在于高清屏,如果设置这里1px border, 1px使用2dp 看着就不是很清晰

解决方法 1 border:0.5px 仅仅ios8可以

2 通用 sacleY(.5)

    .xxx{position:relative}

    .xxx:before{position:absolute;top:-1px;left:0px;content:'',width:100%;height:1px;border-top:1px solid #ddd; transform:scaleY(0.5)} (1px边+1px高)缩小0.5

相对单位 rem

  em:根据父节点的font-size为相对单位

  rem:根据 html的font-size为相对单位

rem的基值设置多少好?

因为为了适应各大手机屏幕 rem = screen.width/20 或 screen.width/10

  // 默认

  html{font-size:32px;}

  iphone6

    @media (min-device-width:375px) {html{font-size:37.5px;}}

  iphone6 plus

    @media (min-device-width:414px) {html{font-size:41.4px}}

  例如:iphone5rem基值为32px ,渲染一张64*64的div ,使用 2rem*2rem去渲染

  换算公式

    width: px/rem基值  64/32 = 2rem

    height: px/rem基值

不使用rem的情况:font-size 字体应该应该更偏向于阅读即固定字体大小

单行文本溢出解决: .xxx{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}

多行文本溢出解决: .xxx{display:-webkit-box!import;overflow:hidden; text-overflow:ellipsis;world-break:break-all; -webkit-box-orient:vertical;-webkit-line-clamp:2;} 显示2行

移动端交互优化:

  click no; tap事件基础;弹性滚动;

  300毫秒:移动web click事件响应要慢上300ms--safari区分单击和双击,后来iphone沿用 android继承

  tap事件代替click ---tap自定义事件  touchstart touchend记录时间,手指,在touchend时进行比较,如果手指在同一位置(允许移动一个非常小的位移值)且时间间隔较短(200ms)且过程中未触发touchmove就被认为触发了移动端的click--一般称它为tap

  移动框架库 Zepto.js

  tap有点透bug --点击层上面有遮罩层, 点击遮罩层 时 click也会触发 --解决方法1 让遮罩层延迟300ms后触发 transition缓动动画 2 fastclick 听说最新zepto已经解决这个bug

  touch基础事件 触摸是移动设备交互的核心事件

    touchstart:手指触摸屏幕触发(已经有手指放屏幕上不会触发)

    touchmove: 手指在屏幕上滑动,连续触发

    touchend: 手指离开屏幕时候触发

    touchcancel: 系统取消touch时候触发(不常用)

  除常见事件属性外,触摸事件包含专有的触摸属性

    touches: 跟踪触摸操作的touch对象数组

    targetTouches: 特定事件目标的touch对象数组

    changeTouches: 上次触摸改变的touch对象数组

  每个touch对象包含的属性

    clientX: 触摸目标在视口中的x坐标

    clientY:触摸目标在视口中的y坐标

    identifer: 标识触摸的唯一id

    pageX: 触摸目标在页面中的x坐标(包含滚动)

    pageY:触摸目标在页面中的y坐标(包含滚动)

    screenX:触摸目标在屏幕中的x坐标

    screenY:触摸目标在屏幕中的y坐标

    target: 触摸的dom节点目标

 bug: android只会触发一次touchstart,一次touchmove,touchend不触发 解决方法:touchmove中加入 event.preventDefault() 会导致默认行为不发生,如scroll, 使页面不能滚动 

 弹性滚动:快速滚动到端点的时候,滚动条会收缩并让我们多滑动一段距离

  移动web页面也是有这样的能力的,但是滚动有几种情况需要考虑:

    1 body层滚动:系统特殊化处理

      自带弹性滚动,overflow:hidden失效 ,gitf和定时器暂停

      

    2 局部滚动

      没有弹性滚动,没有滚动惯性,不流畅

      body{overflow:scroll;-webkit-overflow-scrolling:touch} android不支持原生弹性滚动,可以借助三方库iScroll实现

下拉刷新:touch

上拉加载: scroll事件

meta 设置

http://blog.csdn.net/zxf13598202302/article/details/51594661

M-移动端的webapp页面布局教程和webapp实战分析的更多相关文章

  1. webApp 页面布局

    1. 流式布局 概念:流式布局是页面元素宽度按照屏幕分辨率进行适配调整,但是整体布局不变. 设计方法:布局都是通过百分比来定义宽度,但是高度大都是用px固定的. 弊端: 虽然可以让各种屏幕适配,但是显 ...

  2. webApp 页面适配布局

    webApp 页面布局 1. 流式布局 概念: 流式布局是页面元素宽度按照屏幕分辨率进行适配调整,但是整体布局不变. 设计方法: 布局都是通过百分比来定义宽度,但是高度大都是用px固定的. 弊端: 虽 ...

  3. 关于 静态页面布局 中的一些BUG

    作为一枚初级程序猿,难免在制作静态页面时会遇到一些BUG,在此,我从网上找了一些资料并且结合自己的项目开发经验,总结了一些在静态页面布局时可能会遇到的问题,希望能对初级程序猿有一定的帮助(资料请参考: ...

  4. html5 移动端单页面布局

    序     移动端的web网页使用的是响应式设计,但一般我们看到的网站页面都是跳转刷新得到的,比如通过点击一个menu后进入到另一个页面 今天来说下是移动端的单页面的布局.单页面就是一切操作和布局都是 ...

  5. 一步一步构建手机WebApp开发——页面布局篇

    继上一篇:一步一步构建手机WebApp开发——环境搭建篇过后,我相信很多朋友都想看看实战案例,这一次的教程是页面布局篇,先上图: 如上图所示,此篇教程便是教初学者如何快速布局这样的页面.废话少说,直接 ...

  6. SharePoint 2013 入门教程之创建页面布局及页面

    在SharePoint的使用过程中,页面布局和页面时很重要的两个概念,主要用于数据个性化展示,下面,我们简单介绍一下SharePoint的页面布局和页面的个性化. 一. SharePoint页面模型概 ...

  7. 无废话ExtJs 入门教程十六[页面布局:Layout]

    无废话ExtJs 入门教程十六[页面布局:Layout] extjs技术交流,欢迎加群(201926085) 首先解释什么是布局: 来自百度词典的官方解释:◎ 布局 bùjú: [distributi ...

  8. HTML5新结构标签和移动端页面布局

    --------------------HTML5新结构标签--------------------1.h5新增的主要语义化标签如下: 1.header 页面头部.页眉 2.nav 页面导航 3.ar ...

  9. HTML5入门教程:响应式页面布局

    摘自:https://www.sohu.com/a/225633935_647584 随着互联网时代的发展,我们对网页布局有了新的要求,大气,美观,能够在不同的设备上呈现令人焕然一新的效果.此时,一个 ...

随机推荐

  1. Redis 常用数据结构及其控制命令整合

    Redis 键值支持5种基本结构,分别是字符串,列表,哈希,集合,有序集合.每一种数据结构都有对应的取值和设值命令,辅助命令,除此之外,还有一些全局命令,用来管理Redis存储的所有 键. 全局命令 ...

  2. NPOI导Excel样式设置(转)

    一.创建一个Excel //创建一个工作簿 XSSFWorkbook workbook = new XSSFWorkbook(); //创建一个页 ISheet sheet = workbook.Cr ...

  3. 【C++小白成长撸】--N阶幻方(魔阵)矩阵

    解决方法:1.第一个元素放在第一行中间一列 2.下一个元素存放在当前元素的上一行.下一列. 3.如果上一行.下一列已经有内容,则下一个元素的存放位置为当前列的下一行. 在找上一行.下一行或者下一列的时 ...

  4. cocos2dx lua中异步加载网络图片,可用于显示微信头像

    最近在做一个棋牌项目,脚本语言用的lua,登录需要使用微信登录,用户头像用微信账户的头像,微信接口返回的头像是一个url,那么遇到的一个问题就是如何在lua中异步加载这个头像,先在引擎源码里找了下可能 ...

  5. 新CCIE笔记-路由器的配置

    CCIE重修笔记之路由器基本配置与最简单的路由. 路由器与交换机的基本配置命令 全局配置模式下有多种子模式 (华为可以跳跃切换模式) 思科命令行技巧 Tab键补全,也可以直接保留缩写 问号'?'类似l ...

  6. python--购物车优化

    基本要求:用户入口1.商品信息存在文件里 2.已购商品.余额记录,长期保存, 即第一次启动是需要输入预算的,以后就拿剩下的钱买东西 商家入口 1.可以添加商品,删除商品,修改商品价格 2.按q可以退出 ...

  7. 团队作业8——第二次项目冲刺(Beta阶段)--5.21 second day

    团队作业8--第二次项目冲刺(Beta阶段)--5.21 second day Day two: 会议照片 项目进展 今天是beta冲刺的第二天,组长还在准备考试当中,我们继续做前端改进和后端安排,今 ...

  8. spring的list ,set,map,properties注入(set,get注入)

    ①Message.java: package com.hts.entity; import java.io.Serializable; import java.util.List; import ja ...

  9. 第06周-接口、内部类与Swing

    1. 本周作业简评与建议 作业简评 Q1.覆盖clone需要:a.要implements标记接口 Cloneable接口.b.要区分浅拷贝与深拷贝.c.一般来说要调用super.clone,然后在此基 ...

  10. 201521123113 《Java程序设计》第1周学习总结

    1. 本章学习总结 1.java是一个面向对象的编程语言,相对于c++来说代码较简便又好用.第一次接触java时感觉每句代码比较难写,但学习了一些快捷方法后就很方便了. 2.java运行于JVM,因此 ...