精华内容
下载资源
问答
  • 1.请列举移动开发的几种方式 答案当前针对移动端的开发方式可以分为三种具体如下 移动Web就是在移动Web浏览器中运行的Web应用 NativeApp用Android和Object-C等原生语言开发的移动应用 HybridApp将移动Web页面封装在...
  • 移动Web手册

    2017-08-07 06:52:06
    移动Web手册(双色)》主要讲解了移动Web开发和传统PC网站开发的不同之处。作者首先对移动互联网相关的运营商、设备、操作系统和软件进行了简单的介绍,让读者理解移动开发的复杂之处。接下来对移动设备上的各种...
  • HTML5移动web开发实战.pdf,HTML5移动web开发实战.pdfHTML5移动web开发实战.pdfHTML5移动web开发实战.pdfHTML5移动web开发实战.pdfHTML5移动web开发实战.pdf
  • 移动Web手册.中文完整版.pdf。学习用,如有侵权请联系我删除
  • 本书主要围绕HTML5技术,讲述如何利用HTML5相关技术开发移动Web网站和WebApp应用程序。本书共分为四大部分,第一部分主要讲述Web技术的发展及HTML5标准在移动Web技术中的应用;第二部分主要介绍HTML5的新功能和新...
  • 唐俊开_[HTML5移动Web开发指南]_扫描版.rar唐俊开_[HTML5移动Web开发指南]_扫描版.rar唐俊开_[HTML5移动Web开发指南]_扫描版.rar唐俊开_[HTML5移动Web开发指南]_扫描版.rar唐俊开_[HTML5移动Web开发指南]_扫描版.rar...
  • HTML5移动Web开发实战教程,可以学习关于web开发的一些基础的只是,还有更多的实战经验交给你。
  • HTML5移动Web开发实战\源码,供大家学习使用;
  • 移动Web前端高效开发实战》书籍源码 《移动Web前端高效开发实战》书籍源码
  • 常用移动web开发框架

    千次阅读 2019-05-01 17:13:12
    纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch...

    阿里云优惠:最高¥2000云产品通用代金券
    https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=dansrwg4

    纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch都是比较成熟老牌的框架,项目中也有应用。国内也有公司,像BAT巨头也在探索和实现了适合自己的移动web框架。

    1、jQuery Mobile

    jQuery Mobile框架能够帮助你快速开发出支持多种移动设备的Mobile应用用户界面。jQuery Mobile最新版本是1.4.0,默认主题采用扁平化设计风格。jQuery Mobile1.4.0主要侧重于性能和控件方面的改进。除了全新的默认主题和SVG图标,还新增了开关控件、通用过滤器、箭头弹出框、滑动提示框等一系列功能,更是集成了jQuery
    

    UI的Tab部件。jQuery Mobile继承了jQuery的优势,并且提供了丰富的适合手机应用的UI组件。jQuery Mobile还有很多的第三方扩展。

    1.1 jQuery mobile flat-ui 主题

    https://github.com/ququplay/jquery-mobile-flat-ui-theme

    1.2jQuery mobile Bootstrap 主题

    https://github.com/commadelimited/jQuery-Mobile-Bootstrap-Theme

    2、Sencha Touch

    Sencha Touch做的Web
    

    App看起来更像Native App,用户界面组件和丰富的数据管理,全部基于最新的HTML 5和CSS3的 WEB标准,全面兼容Android和iOS设备。Sencha
    Touch提供了超过50个组件。

    3、阿里系web框架

    Kissy是阿里前端自己开发的前端框架,KISSY 是一款跨终端、模块化、使用简单的 JavaScript 框架。除了完备的工具集合诸如 DOM、Event、Ajax、Anim 等,KISSY 还面向团队协作做了独特设计,提供了经典的面向对象、动态加载、性能优化解决方案。作为一款全终端支持的 JavaScript 框架,KISSY 为移动终端做了大量适配和优化,让你的程序在全终端均能流畅运行。KISSY Mobile是一套面向移动端的功能特性集合,实现灵活配置的转场动画和View的解偶。KISSY 5.0已经全面支持移动端。Kissy架构可以参考这里。Kissy架构图:
    

    4、百度移动web框架

    百度移动web框架有三个了解了一下。

    4.1 GMU

    GMU(Global Mobile UI)是百度前端通用组开发的移动端组件库,具有代码体积小、简单、易用等特点,组件内部处理了很多移动端的bug,覆盖机型广,能大大减少开发交互型组件的工作量,非常适合移动端网站项目。 该组件基于zepto的mobile UI组件库,提供webapp、pad端简单易用的UI组件!
    

    4.2 Clouda+

    Clouda+是移动web应用开发整体解决方案,并特别针对百度轻应用场景进行了优化,旨在让webapp体验和交互媲美Native应用。
    

    4.3 efe

    efe百度商业体系前端团队推出的web框架,efe有如优势。

    4.3.1模块化、组合式的移动前端框架

    4.3.2基于
    Stylus 的移动端样式库

    他是提供了 JavaScript 模块、CSS 样式库与开发平台的完整前端解决方案。擅长移动端 SPA 项目、轻应用。
    
       他是专为移动端设计的 Mixin 风格样式工具库。在其基础上创建了 Rider UI,一个灵活的 UI 样式库。
    

    5、tencent

    5.1 Spirit

         Spirit并不是一个具体的框架或者工具,但是她是移动端一系列解决方案的整合与聚拢。她是Alloyteam开发团队在移动开发项目中通过大量实践、归纳、总结提炼而成,最终沉淀下来的一个体系,真正建立一套移动Web开发的集成解决方案。Spirit主要由5个部分组成:移动Web开发规范、JM、JMUI、Mobug、Mars。
    

    5.2 Frozen UI

    Frozen UI是腾讯ISUX团队(社交用户体验设计团队)根据最新的手机QQ设计规范制作的移动端Web框架,包括CSS基础样式和组件、JavaScript基础组件和一些动画效果库。为了方便记忆和增添趣味性,腾讯ISUX团队为它取了动画片《冰雪奇缘》的英文名,并把Elsa女王作为该项目的卡通代言人。
    
    项目主页:http://frozenui.github.io
    
    Github代码托管地址:https://github.com/frozenui/frozenui
    

    6、ionic

    Ionic提供了一个免费且开源的移动优化HTML,CSS和JS组件库,来构建高交互性应用。基于Sass构建和AngularJS 优化。
    
    Ionic既是一个CSS框架也是一个Javascript UI库。许多组件需要Javascript才能产生神奇的效果,尽管通常组件不需要编码,通过框架扩展可以很容易地使用,比如我们的AngularIonic扩展。
    
    Ionic遵循视图控制模式,通俗的理解和 Cocoa 触摸框架相似。在视图控制模式中,我们将界面的不同部分分为子视图或包含其他视图的子视图控制器。然后视图控制器“驱动”内部视图来提供交互和UI功能。一个很好的例子就是标签栏(Tab Bar)视图控制器处理点击标签栏在一系列可视化面板间切换。github。
    

    7、Amaze UI

      Amaze UI 采用业内先进的 Mobile first 理念,从小屏逐步扩展到大屏,最终实现所有屏幕适配,适应移动互联潮流。Amaze UI 含近 20 个 CSS
    

    组件、10 个 JS 组件,更有 17 款包含近 60 个主题的 Web
    组件,可快速构建界面出色、体验优秀的跨屏页面,大幅度提升你的开发效率。Amaze UI 非常注重性能,基于轻量的 Zepto.js 开发,并使用 CSS3 来做动画交互,平滑、高效,更适合移动设备,让你的 Web 应用可以高速载入。

    8、CardKit

    CardKit 是来自豆瓣的一个移动 UI 框架,使用 Card\Unit\Component 概念快速构建移动 Web 应用。应用外观跟原生应用无异。
    

    9、App.js

    App.js 是一个轻量级的 JavaScript UI 库,用来创建移动的 Web 应用,应用的外观跟原生的应用相同,性能也近乎一致。
    

    特点:

    跨平台,支持 Android 2.2+ 和 iOS 4.3+

    Widgets 和自定义主题

    页面调整管理

    10、Junior

    Junior为前端框架,用来构建基于HTML5的移动Web应用,外观与行为跟本地应用相似。它采用针对移动性能优化的CSS3转换,支持旋转灯箱效果,包含多样的 Ratchet UI组件。整个框架使用Zepto(类似jQuery语法的轻量级移动设备js类库),且整合了backbone.js的视图和路由。 Junior十分易于使用,且提供详细的文档及案例,便于学习。
    

    11、Jingle

    Jingle是一个SPA(Single
    

    Page Application)开发框架,用来开发移动端的html5应用,在体验上尽量去靠近native应用,希望有一天html5能够做到与native 一样的操作体验。提供了按钮、列表、表单、弹出框、轮换、上拉/下拉、日历等各种移动端常用的组件,简单适用.

    12、mui

    性能和体验的差距,一直是mobile app开发者放弃HTML5的首要原因。 浏览器天生的切页白屏、不忍直视的转页动画、浮动元素的抖动、无法流畅下拉刷新等问题,这些都让HTML5开发者倍感挫败,尤其拿到Android低端机运行,摔手机的心都有;
    

    另一方面,浏览器默认控件样式又少又丑,制作一个漂亮的控件非常麻烦,也有一些制作简单的ui框架但性能低下。

    mui框架有效的解决了这些问题,这是一个可以方便开发出高性能App的框架,也是目前最接近原生App效果的框架。
    

    13、Polymer

    Google给我们带来了Polymer。Polymer是是一个让你可以轻易创建web组件的框架。
    

    在他们完成开发web应用底层结构之后,他们开始专注于UI。Polymer 是
    material design 在 web 平台的实现.
    Polymer 团队与 material design 设计团队合作非常的紧密。 事实上, Polymer 在 material design 的研发阶段扮演着关键性的角色: 它被用于快速原型化和重现设计的概念.

    阿里云优惠:最高¥2000云产品通用代金券
    https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=dansrwg4

    展开全文
  • 移动Web前端高效开发实战》 [1] 全称《移动Web前端高效开发实战:HTML 5 + CSS 3 + JavaScript + Webpack + React Native + Vue.js + Node.js》,作者iKcamp,电子工业出版社2017年9月出版
  • HTML5移动Web开发指南,完整扫描版

    热门讨论 2013-11-21 16:28:11
    《HTML5移动Web开发指南》主要围绕html5技术,讲述如何利用html5相关技术开发移动web网站和web app应用程序。《HTML5移动Web开发指南》共分为四大部分,第一部分主要讲述web技术的发展及html5标准在移动web技术中的...
  • 移动web开发笔记

    万次阅读 2016-05-15 20:12:27
    移动web开发笔记移动web开发笔记

    移动web开发笔记

    参考:
    移动web开发入门
    移动端web开发技巧

    基础概念

    像素单位

    CSS pixels与device pixels CSS pixels

    浏览器使用的抽象单位, 主要用来在网页上绘制内容。 device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色、亮度。 等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性。经过分析和总结,我们可以得出这么一条公式:
    1 CSS pixels = (devicePixelRatio)^2 device pixels
    (^2是平方的意思,至于 devicePixelRatio是什么东西,后面会讲解) 。

    PPI/DPI

    PPI,有时也叫DPI,所表示的是每英寸所拥有的像素(pixel)数目,数值越高,即代表显示屏能够以越高的密度显示图像。(注:这里的像素,指的是device pixels。)搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后处以对角线(我们平常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的iPhone 4的PPI为330,要比苹果官方公布的326要高一点点。

    devicePiexelRatio

    pixel - px ( picture element )
    
    dpi / ppi - 每英寸像素 ( dot per inch )
    
    dips - 设备独立像素 ( device-independent pixels )
    
    devicePixelRatio - 物理像素 / dips 
    

    文字大小控制

    px, rem
    
    固定大小 - px
    
    多屏适配,统一修改 - rem
    相对长度单位。相对于根元素(即html元素)font-size计算值的倍数
    
    rem - font size of the root element (W3C)
    

    viewport

    参考:移动前端开发之viewport的深入理解

    <meta name="viewport"
          content="width=device-width,
                   height=device-height,
                   inital-scale=1.0,
                   maximum-scale=1.0,
                   user-scalable=no;"
    />

    在苹果的规范中,meta viewport 有6个属性,分别如下:
    - width - viewport的宽度[pixel_value |device-width]
    - height - viewport的高度[pixel_value |device-height]
    - initial-scale - 初始的缩放比例[float_value]christer1229
    - maximum-scale - 允许用户缩放到的最大比例
    - minimum-scalbujue - 允许用户的最小缩放值
    - user-scalable - 用户是否可以手动缩放 [yes | no]

    响应式布局

    原则

    • 移动优先
    • 渐进增强

    实现方式

    • 媒体查询
    • 使用JS
    • 使用第三方框架

    布局方案

    百分比布局(流体布局)

    将元素原本的定宽除父容器的宽度得到百分比设置为宽度,使用百分比,文字使用 em。

    • 优点:
      流动布局页面对用户更友好,因为它能自适应用户的设置。
      页面周围的空白区域在所有分辨率和浏览器下都是相同的,在视觉上更美观。
      如果设计良好,流动布局可以避免在小分辨率下出现水平滚动条。
    • 缺点:
      设计者更难控制用户所见,并可能忽略掉一些错误,因为在特定的分辨率下看起来好的;
      图片,视频以及其他设置了宽度的内容可能需要多种宽度以适应不同分辨率的用户;
      在特别大的分辨率下,内容会被拉成长长的一行,变得难以阅读;
      会有画面失真问题

    弹性(flexible)布局

    用rem替代px
    原理:定一个最大宽度,设备屏幕超过这个宽度之后,rem大小不再变化,否则,rem大小设置为屏幕宽度的几分之一,页面中的长度单位值用rem代替px,这样随着页面的宽度变化能够进行等比例缩放。
    rem实际是页面根元素的字体大小,通过js改变rem值的代码如下:

    ;
    ( function( win ) ) {
        var doc = win.document;
        var docEl = doc.documentElement;//获取文档元素
        var tid;
    
        function refreshRem() {
            var width = docEl.getBoundingClientRect().width;//获取设备宽度
            if ( width > 540 ) {
                width = 540;
            }
            var rem = width / 10;//设置rem为屏幕宽度的十分之一
            docEl.style.fontSize = rem + 'px';
        }
        win.addEventListener('resize', function() {//屏幕宽度改变时
            clearTimeout(tid);//清除之前的计时器
            tid = setTimeout(refreshRem, 300);//300ms后改变rem大小
        }, false);
    
        win.addEventLister('pageshow', function( e ) {//页面显示时
            if (e.persisted) {
                clearTimeout(tid);
                tid = setTimeout(refreshRem, 300);
            }
        }, false);
        refreshRem();
    })( window );

    参考:移动端页面使用rem来做适配

    flex-box布局

    flex-box,参考:
    Flex 布局教程:语法篇
    优点:布局方便,灵活性高;
    缺点:兼容性问题;

    图片处理

    普通设置:

    img {
        max-width: 100%;
    }

    或:

    img {
        width: 100%;
        max-width: 300px;
    }//限制最宽不超过300px;

    响应式图片:

    参考:
    响应式图片srcset全新释义sizes属性w描述符
    Srcset和sizes

    即根据屏幕密度现实对应尺寸图片
    src:指定资源(在浏览器不认识srcset和size时会加载这个)
    srcset:srcset的值是可用图像版本的URL列表;每个图片的宽度都用w描述符来表明。
    sizes:使用长度与媒体查询配合,浏览器会检测每一个媒体查询,直到匹配到为止。使用查询配合的长度作为“选择资源”拼图的最后一块:图像渲染宽度或者相对于视图。
    eg.

    <img src="small.jpg"
     srcset="large.jpg 1024w,
             medium.jpg 640w,
             small.jpg 320w"
     sizes="(min-width: 36em) 33.3vw,
            100vw"
     alt="A rad wolf" />

    媒体查询

    1. 可以通过<link>标签的media属性为样式表指定设备类型
    <link rel="stylesheet" type="text/css" media="screen" href="screen-style.css">
    <link rel="stylesheet" type="text/css" media="screen and (orientation:portrait)" href="style.css"> //纵向屏幕
    <link rel="stylesheet" type="text/css" media="screen and (max-width:960px)" href="style.css"> //宽度小于900px时
    1. 在css中同样可以使用
    @media screen and (max-width: 960px){
        body{
            background: #000;
        }
    }
    @media (max-width: 960px){
        body{
            background: #000;
        }
    }
    @media screen and (min-width:960px) and (max-width:1200px){
        body{
            background:yellow;
        }
    }
    1. @import方法
      @import可以引用样式文件,同样也可以用来引用媒体类型。@import引入媒体类型主要有两种方式,一种是在样式中通过@import调用另一个样式文件;另一种方法是在<head></head>标签中的<style></style>中引入,但这种使用方法在IE6~7都不被支持,如样式文件中调用另一个样式文件时,就可以指定对应的媒体类型。
    @importurl(reset.css) screen;   
    @importurl(print.css) print;

    <head>中的<style>标签中引入媒体类型方法。

    <head>
    <style type="text/css">
        @importurl(style.css) all;
    </style>
    </head>

    为方便查阅,下面列出了所有可供媒体查询检测的特性
    - width:视口宽度。
    - height:视口高度。
    - device-width:渲染表面的宽度(对我们来说,就是设备屏幕的宽度)。
    - device-height:渲染表面的高度(对我们来说,就是设备屏幕的高度)。
    - orientation:检查设备处于横向还是纵向。
    - aspect-ratio:基于视口宽度和高度的宽高比。一个16∶9比例的显示屏可以这样定义aspect-ratio: 16/9。
    - device-aspect-ratio:和aspect-ratio类似,基于设备渲染平面宽度和高度的宽高比。
    - color:每种颜色的位数。例如min-color: 16会检测设备是否拥有16位颜色。
    - color-index:设备的颜色索引表中的颜色数。值必须是非负整数。
    - monochrome:检测单色帧缓冲区中每像素所使用的位数。值必须是非负整数,如monochrome: 2。
    - resolution:用来检测屏幕或打印机的分辨率,如min-re一种检测 IE 是否加载完成的方式,使用 doScroll 方法调用,详情可见http://javascript.nwbox.com/IEContentLoaded/
    原理就是对于 IE 在非 iframe 内时,只有不断地通过能否执行 doScroll 判断 DOM 是否加载完毕。在上述中间隔 50 毫秒尝试去执行 doScroll,注意,由于页面没有加载完成的时候,调用 doScroll 会导致异常,所以使用了 try -catch 来捕获异常。
    结论:所以总的来说当页面 DOM 未加载完成时,调用 doScroll 方法时,会产生异常。那么我们反过来用,如果不异常,那么就是页面DOM加载完毕了。solution: 300dpi。还可以接受每厘米像素点数的度量值,如min-resolution: 118dpcm。
    - scan:电视机的扫描方式,值可设为progressive(逐行扫描)或interlace(隔行扫描)。如720p HD电视(>devide-width指屏幕宽高,width指渲染窗口宽高
    720p的p即表明是逐行扫描)匹配scan: progressive,而1080i HD 电视(1080i中的i表明是隔行扫描)匹配scan: interlace。
    - grid:用来检测输出设备是网格设备还是位图设备。
    - 在上述所有特性中,除scan和grid之外,都可使用min和max前缀来创建一个查询范围。

    HTML5

    新表单类型

    • placeholder
      只需在input元素中加入placeholder属性,其属性值就会默认显示为占位符文字,输入框获取焦点时该文字自动消失。当输入框失去焦点且没有任何输入值时,占位符文字则会再次显示。
    • required
      在支持HTML5的浏览器中,在input元素中追加布尔类型的属性required(也就是说你可以选择追加或不追加该属性),则表明该表单域为必填项。如果表单提交时该必填项没有任何信息,浏览器则会显示警告信息。警告信息的显示方式(包括显示内容和样式)取决于浏览器与输入框类型。
      range、color、 button和hidden类型的输入元素则不能使用required,因为这几种输入类型几乎都有默认值。

    • autofocus
      HTML5的autofocus属性可以让表单在加载完成时就有一个表单域被默认聚焦(或选中),以便于用户输入。
      例如有多个表单域追加了autofocus属性,在Chrome(v16)中会聚焦最后一个使用autofocus属性的表单域,而Firefox(v9)恰恰相反,会聚焦第一个使用autofocus的表单域。

    • autocomplete

    也可以通过给表单本身(不是fieldset)设置属性来禁用整个表单的自动完成功能。示例代码如下:

    <form id="redemption" method="post" autocomplete="off">
    • list(及对应的datalist元素)
      list属性以及对应的datalist元素可以让用户在输入框中开始输入值的时候,显示一组备选值。
      list属性中的值(awards)同时也是datalist元素的id。这样就可以让datalist与输入项关联起来。虽然将option包裹在select中不是必需的,但这样做便于为老版本浏览器提供降级方案。

    HTML5的新输入类型

    • type=”email”——支持它的浏览器会期望用户的输入匹配电子邮箱的格式。
    • type=”number”——支持该特性的
      浏览器期望输入一个数字。这种输入类型默认还提供控制按钮,允许用户简单地点击向上或向下来改变数值。
      你可能注意到在上面的代码中,我们还设置了允许输入的最小值和最大值范围,具体代码如下:
    type="number" min="1929" max="2015"

    超出范围的数字会(应该)得到特殊对待。
    - type=”url”——你猜对了,URL输入类型用于输入URL地址。
    - type=”tel”是另一种用于收集联系人信息的输入类型。tel表示表单域期望输入一个电话号码- type=e=”search”——和普通文本输入框的表现基本一样,仅在个别浏览器中渲染得有点细微差别。
    你可用pattern属性通过正则表达式来定义表单域的数据
    - type=”color”——会在支持该特性的浏览器中生成一个颜色选择器,让用户可以选择十六进制的颜色值。
    - 日期和时间输入类型
    和color类型一样,目前对date提供原生支持的浏览器寥寥无几,大多数浏览器默认都将其渲染为标准的文本输入框。超级棒的Opera已经实现了这个功能
    range输入类型会生成一个滑动条。

    CSS3

    笔记

    设备控制

    • 打开数字键盘
      <input type="tel">
    • 隐藏地址栏
      setTimeout(function(){ window.scrollTo(0, 1); }, 0);
    • 在iPhone,iPad,iTouch的safari上可以使用添加到主屏按钮将网站添加到主屏幕上
      <link rel="apple-touch-icon" href="apple-touch-icon-iphone.png" />
      <link rel="apple-touch-icon" sizes="72x72" href="apple-touch-icon-ipad.png" />
      <link rel="apple-touch-icon" sizes="114x114" href="apple-touch-icon-iphone4.png" />

    设备交互

    1. input fixed失效问题
      参考:
      iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
      【小贴士】虚拟键盘与fixed带给移动端的痛!
      Web移动端Fixed布局的解决方案
      出现原因:
      移动端虚拟键盘出现的条件是:文本框(文本类)获得焦点,但是文本框获得焦点未必会弹出键盘;
      收起虚拟键盘的条件是:文本框失焦
      总而言之,我们认为会出现或者消失虚拟键盘的时候都可能不工作
      在移动设备上,如果文本框在上方,点击不会有什么问题:
      在设备的最下面的话,整个块会上移,以将input区域显示出来
      这个时候几个棘手的问题就出现了:
      ① 虚拟键盘的出现对页面来说是不可知的,这句话的理解是:没有键盘出现事件,没有办法获取键盘高度
      ② 键盘是“贴”在了viewport上,表面上不会对dom产生“任何”影响,但是这个时候一些定位元素的表现却变得“怪异”。

    软键盘唤起后,页面的 fixed 元素将失效(即无法浮动,也可以理解为变成了 absolute 定位),所以当页面超过一屏且滚动时,失效的 fixed 元素就会跟随滚动了。

    这便是 iOS 上 fixed 元素和输入框的 bug 。其中不仅限于 type=text 的输入框,凡是软键盘(比如时间日期选择、select 选择等等)被唤起,都会遇到同样的问题。

    解决方案:
    使fixed的父元素不滚动,将滚动区域限制在与footer和header同级的内容部分。

    性能优化

    参考:移动开发规范概述
    要考虑Android低端机与2G网络场景下性能 注意!

    发布前必要检查项

    所有图片必须有进行过压缩
    考虑适度的有损压缩,如转化为80%质量的jpg图片
    考虑把大图切成多张小图,常见在banner图过大的场景
    

    加载性能优化, 达到打开足够快

    数据离线化,考虑将数据缓存在 localStorage
    初始请求资源数 < 4
    图片使用CSS Sprites 或 DataURI
    外链 CSS 中避免 @import 引入
    考虑内嵌小型的静态资源内容
    初始请求资源gzip后总体积 < 50kb
    静态资源(HTML/CSS/JS/Image)是否优化压缩?
    避免打包大型类库
    确保接入层已开启Gzip压缩(考虑提升Gzip级别,使用CPU开销换取加载时间) 注意!
    尽量使用CSS3代替图片
    初始首屏之外的静态资源(JS/CSS)延迟加载
    初始首屏之外的图片资源按需加载(判断可视区域)
    单页面应用(SPA)考虑延迟加载非首屏业务模块
    开启Keep-Alive链路复用
    

    运行性能优化, 达到操作足够流畅

    避免 iOS 300+ms 点击延时问题 注意!
    缓存 DOM 选择与计算
    避免触发页面重绘的操作
    Debounce连续触发的事件(scroll / resize / touchmove等),避免高频繁触发执行 注意!
    尽可能使用事件代理,避免批量绑定事件
    使用CSS3动画代替JS动画
    避免在低端机上使用大量CSS3渐变阴影效果,可考虑降级效果来提升流畅度
    HTML结构层级保持足够简单
    尽能少的使用CSS高级选择器与通配选择器
    Keep it simple
    

    在线性能检测评定工具使用指南

    访问 Google PageSpeed 在线评定网站
    在地址栏输入目标URL地址,点击分析按钮开始检测
    按 PageSpeed 分析出的建议进行优化,优先解决红色类别的问题
    
    展开全文
  • 移动web的适配

    千次阅读 2018-11-19 15:14:37
    近期有幸听到他人对移动web开发的分享,特来补充上一篇文章,向大神讨教。 Part 1 理解关于长度单位的一些概念 1、设备像素或逻辑像素 指设备能控制显示的最小物理单位,意指屏幕上一个个的点 (还是不理解??太...

    我在另一篇文章中谈到过一些移动端分辨率自适应问题,主要是基于个人实际开发中遇到的问题提出的解决方法。
    近期有幸听到他人对移动web开发的分享,特来补充上一篇文章,向大神讨教。

    Part 1 理解关于长度单位的一些概念

    1、设备像素或逻辑像素
    指设备能控制显示的最小物理单位,意指屏幕上一个个的点
    (还是不理解??太正常了,接着往下看)
    2、CSS像素或设备独立像素
    指CSS样式代码中使用的逻辑像素,即px(在iPhone中单位为pt)
    (这个好理解吧)
    3、像素密度(PPI)
    指设备能控制显示的最小物理单位,意指屏幕上一个个的点
    (嘻嘻,=设备像素或逻辑像素)
    PPI越高,分辨率也就越高
    4、像素比(dpr)
    设备像素比=设备像素/CSS像素
    比如:iPhone6的像素比为2 = 750/375
    在这里插入图片描述
    在这里插入图片描述
    在开发中,UI设计狮以设备像素制作设计图;
    前端攻城狮把设备像素按照像素比进行换算,得到CSS像素,以此为单位制作网页

    进一步举例理解,在普通屏和2dpr下,css像素和设备像素的情况
    在这里插入图片描述
    以下两种情况都会带来一定的图片不正常的问题
    在这里插入图片描述
    在这里插入图片描述
    Part 2 关于视口的概念

    1、Layout viewport(布局视口)
    浏览器默认设置了一个viewport 元标签,定义一个的虚拟视口,用于解决早期的页面在手机上显示的问题。iOS, Android基本都将这个视口分辨率设置为 980px,所以pc上的网页基本能在手机上呈现,只不过元素看上去很小,一般默认可以通过手动触摸方式缩放网页。
    2、Visual viewport(视觉视口)
    物理屏幕的可视区域,屏幕显示器的物理像素。同样尺寸的屏幕,像素密度大的设备,硬件像素会更多。(如手机屏幕iPhone6为375px)
    3、Ideal viewport(理想视口)
    通常是我们说的屏幕分辨率

    他们之间的关系总结一句话:改变布局视口,让视觉视口达到理想视口
    (若小于视觉视口就会出现滚动条)

    Part 3 移动端适配的解决方案

    一般我们会先在<head>标签中加<meta name=“viewport”>

    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
    

    其中,width设置布局视口的宽,initial-scale设置页面的初始缩放程度,maximum-scale设置了页面的最大缩放程度,minimum-scale设置了页面的最小缩放程度,user-scalable即是否允许用户对页面进行缩放操作

    下面介绍几种更好的适配方案,重点来了!!!
    1、@media媒体查询
    具体百度即可查到,不赘述
    弊端:要根据不同的手机宽高作穷举,特别对于各种各样的Android手机,要穷举太多

    2、淘宝方案flexible.js
    淘宝前端团队自己做了一套能适配的flexible.js,这个要在<body>前引入,不需要另外引入<meta name=“viewport”>
    弊端:查看源码(源码)可以看到,在flexible.js中1rem=75px,这样我们在开发时要用rem,每次换算都很麻烦,比较除以75很容易除不尽之类的
    解决方案:可以将源码改一下,改成width/7.5或者width/10,方便计算

    3、动态设置rem
    提到上面的改源码,其实质就和这个方法很类似了。这个方法就是我在移动端分辨率自适应问题这篇文章中谈到的,自己写js去动态设置rem,不同的是这里要加<meta name=“viewport”>,附上一段比较完整的js代码
    在这里插入图片描述

    4、使用vw、vh单位
    这是一组新的单位,规定1vw=视口宽度1%;1vh=视口高度1%

    弊端:例如设计图是按照750px做的,而元素的宽为600px,那么就要用600/750*100vw=80vw得到我要写在代码中的数值,显然还是一个问题:不好算!
    解决方法:可以用CSS预编译器(如less等)先封装一段计算,再去调用这段计算就不需要手动换算

    希望以上方法能有点帮助,请指正

    (顺带附上各种主流移动设备的参数查询链接,点击这里进入

    展开全文
  • 含有html5移动Web网页开发模板.共9个.
  • 移动Web实现指南:面向移动设备的网站优化、开发和设计》简介:  《移动Web实现指南:面向移动设备的网站优化、开发和设计》引导读者使用一种非常全局的方法来思考网站的移动化设计。全书介绍了移动化规划、移动...
  • 有时候导航栏的长度过于长,我们为了界面的美观和用户体验,会将导航栏在一行(或则一列)显示,超出部分隐藏,而且不用管内容的长短,有利于前后台数据的交互,大部分情况是:在移动web网站中,容器中的ul过长,...

    滑动的导航栏

    1. 有时候导航栏的长度过于长,我们为了界面的美观和用户体验,会将导航栏在一行(或则一列)显示,超出部分隐藏,而且不用管内容的长短,有利于前后台数据的交互,大部分情况是:在移动web网站中,容器中的ul过长,我们通常会将ul超出容器的部分隐藏
    2. 移动网站上的横向导航栏
    1. 移动网站上的纵向滚动导航栏
    1. 控制导航栏滚动的重要性
      电商,问答,直播,新闻…大部分平台都会使用到移动导航栏,特别是在移动web,典型的应用场景位于移动设备App和web,如何控制导航栏的滚动

    iScroll

    iScroll是一个高性能,资源占用少,无依赖,多平台的javascript滚动插件

    • 文档教程
      http://caibaojian.com/iscroll-5/
    • 下载地址
      https://github.com/cubiq/iscroll
    • 简单的使用(这里以横向导航栏滚动为例子),具体效果可以看上面推荐的网站
      1. 我们尽可能保持DOM结构的简洁
      2. IScroll是一个类,每个需要使用滚动功能的区域均要进行初始化
      3. 查看文档的基本功能可知,默认情况下只有纵向滚动条可以使用。如果你需要使用横向滚动条,需要将scrollX 属性值设置为 true
      4. 当然,isScroll有更强大的作用,我们使用它是为了解决我们的需求和提高我们的开发效率

    HTML

    <div id="wrapper">
        <ul>
        	<li class=""><a href="javascript:;">热门推荐</a></li>
        	<li class="active"><a href="javascript:;">潮流女装</a></li>
        	<li class=""><a href="javascript:;">品牌男装</a></li>
        	<li class=""><a href="javascript:;">内衣配饰</a></li>
        	<li class=""><a href="javascript:;">家用电器</a></li>
        	<li class=""><a href="javascript:;">电脑办公</a></li>
        	<li class=""><a href="javascript:;">手机数码</a></li>
        	<li class=""><a href="javascript:;">母婴频道</a></li>
        	<li class=""><a href="javascript:;">图书</a></li>
        	<li class=""><a href="javascript:;">家居家纺</a></li>
        	<li class=""><a href="javascript:;">居家生活</a></li>
        	<li class=""><a href="javascript:;">家具建材</a></li>
        	<li class=""><a href="javascript:;">热门推荐</a></li>
        	<li class=""><a href="javascript:;">潮流女装</a></li>
        	<li class=""><a href="javascript:;">品牌男装</a></li>
        	<li class=""><a href="javascript:;">内衣配饰</a></li>
        	<li class=""><a href="javascript:;">家用电器</a></li>
        	<li class=""><a href="javascript:;">电脑办公</a></li>
        	<li class=""><a href="javascript:;">手机数码</a></li>
        	<li class=""><a href="javascjavascript:;ript:;">母婴频道</a></li>
        	<li class=""><a href="javascript:;">图书</a></li>
        	<li class=""><a href="javascript:;">家居家纺</a></li>
        	<li class=""><a href="javascript:;">居家生活</a></li>
        	<li class=""><a href="javascript:;">家具建材</a></li>
        </ul>
    </div>	
    

    我们这里是移动web上的使用,所以需要做适配方案

    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    

    CSS

    <style>
    		#wrapper{
    			height: 300px;
    			background: red;
    			overflow: hidden;
    		}
    		*{
    			margin: 0;
    			padding: 0;
    			font-size: 13px;
    			list-style: none;
    		}
    		ul{
    			width: 2400px;
    		}
    		li{
    			width: 100px;
    			height: 50px;
    			background: #ccc;
    			float: left;
    			text-align: center;
    			line-height: 50px;
    			cursor: pointer;
    		}
    		li.active{
    			background: hotpink;
    			color: red;
    
    		}
    	</style>
    

    JS的调用(初始化)

    <script src="js/iscroll.js"></script>
    // 引入我们的插件
    <script type="text/javascript">
    	var myScroll = new IScroll('#wrapper',{
        mouseWheel: true,
        scrollbars: true,
        scrollX: true
        // 横向滚动导航栏
    });
    // 初始化
    </script>
    

    效果

    GIF动态效果

    原生JS实现滑动的导航栏

    1. iScroll只能称之为工具,它可能会出现一些bug,当然可以选择更优的插件,但是,原生JS还是必不可少的
    2. 这里以纵向的导航栏为例子,并综合到案例中去
      左边做滑动
    3. 实现左边的滑动

    HTML

    html和上面的横向例子一样

    CSS设置li不浮动,ul的宽度和li一样即可,超出父盒子隐藏,父盒子(#wrapper)相对定位(relative),子盒子(ul)绝对定位(absolute)效果一样即可

    1. JS的封装
      // 1. ulMove跟随着鼠标的移动
      // 2. 当上面移动超过0时,手指离开时移动到原位
      // 3. 当下面移动超过ul的高度时,手指离开时移动到原位
      // 4. 限制ul的移动,不能让它移动得太过
      // 4.1 往下拉时,不能让其距离顶部(jd_bar)超过一定距离,这里限制为100
      // 4.2 往上拉,不能让其距离顶部(jd_bar)超过一定距离,这里限制为100
    // ele是滑动的容器,一般是需要移动的导航栏ul,fartherEle是装着它的容器,一般是ul的父元素
    function touchScroll(ele,fartherEle){
    	//开始触碰距离手指距离屏幕顶端的位置,初始化为0
    	var startDistance = 0
    	//记录再次移动ul时上次ul定位的位置
    	var endDistance = 0
    	//手指移动的距离
    	var moveDistance = 0
    	//需要移动元素的高度
    	var ulHeight = ele.offsetHeight
    	//容器(父元素)的高度
    	var barH = fartherEle.offsetHeight
    	//barHide,当ele向上滑时,ul滑到底部隐藏的距离
    	var barHide = ulHeight - barH
    	//开始触碰ul时
    	ele.addEventListener('touchstart',function(e){
    	//手指距离屏幕顶端的距离
    		startDistance = e.touches[0].clientY
    	})
    	//手指在屏幕上滑动
    	ele.addEventListener('touchmove',function(e){
    	//这是限制ul距离上下都只能是100px,后面用到
    		var maxTop = 100
    		//手指在ul移动的距离(endDistance)
    		moveDistance = e.touches[0].clientY - startDistance + endDistance
    		//限制ul定位的位置,距离父盒子顶部不能超过100
    		if(moveDistance>=maxTop){
    			moveDistance = maxTop
    		}
    		//限制ul定位的位置,距离父盒子底部部不能超过100
    		if(moveDistance<=-(barHide + maxTop)){
    			moveDistance = -(barHide + maxTop)
    		}
    		//移动时取消后面的过渡效果
    		this.style.transition = 'none' 
    		//此时,ul的移动范围(定位)已经设定,可以跟随着手指的移动而移动
    		this.style.top = moveDistance + 'px'
    	})
    	ele.addEventListener('touchend',function(e){
    	//当移动ul距离顶部超过0时(top>0),使其ul缓动滑动到父盒子顶部
    		if(moveDistance>=0){
    			moveDistance = 0
    			this.style.transition = 'top 1s'
    		}
    	//当移动ul距离底部超过0时(top>0),使其ul底部缓动滑动到父盒子底部
    		if(moveDistance <= -barHide){
    			moveDistance = -barHide
    			this.style.transition = 'top 1s' 
    		}
    		//记录此时ul的定位位置,用于下次
    		endDistance = moveDistance
    		//范围限制好。可以滑动了
    		this.style.top = endDistance + 'px'
    	})
    }
    

    调用

    touchScroll(document.querySelector('ul'),document.querySelector('#wrapper'))
    

    效果

    效果

    展开全文
  • 移动Web UI组件库汇总

    千次阅读 2019-08-09 22:43:10
    移动Web UI库列表 1、Framework7 Framework7 - is a free and open source mobile HTML framework to develop hybrid mobile apps or web apps with iOS & Android native look and feel. It is also an ...
  • 以下为我将专栏《移动Web开发实战》重新从不同的角度进行整体的梳理之后,在团队分享的PPT。在这里分享给大家。 写PPT之前,先将要分享的内容用脑图梳理出来,有了框架填内容就比较快了。 1、禁止ios...
  • 移动web中的常用技术选型

    万次阅读 2020-05-31 16:18:32
    我们在开发移动端网页时,由于手机屏幕尺寸的不同,需要一些适配方案以达到界面自适应的效果,这里记录一下移动web开发的一些基本概念和常用适配方案,先了解一下视口的概念: 一、视口(viewport). 视口是指浏览器显示...
  • 移动Web前端开发高效实战(一)

    千次阅读 2017-10-31 22:51:51
    摘要:日前,笔者拿到一本有国内知名团队iKcamp团队著作的书籍,在对书籍的阅读过程当中,发现许多...(github仓库为https://github.com/fanyang123/Web_Ksc)全书主要涉及到的知识有:HTML5,CSS3,javascript,webpack
  • 首先要明确移动web和webapp是不同的 1:移动web开发 这部分跟web前端开发差别不大,使用的技术都是html+css+js。区别为手机浏览器是webkit的天下,pc端是三足鼎立IEfirefox chorme。手机网页可以理解成pc
  • HTML5移动web开发指南笔记

    千次阅读 2016-06-07 16:01:04
     Android:Andriod BrowserIOS:Mobile SafariBlackBerry:WebkitSymbian S60: Web Browser for S60 其浏览器的核心都是基于Webkit Webkit简介:  一种浏览器引擎,同时也是一个开源的项目 Web浏览器带来...
  • 移动web前端框架一、jQuery Mobile

    千次阅读 2018-08-04 11:34:23
    简述:jQuery Mobile是 jQuery发布的针对手机和平板设备、经过触控优化的Web框架。它基于jQuery,在不同移动设备平台上可提供统一的用户界面。该框架基于渐近增强技术,并利用HTML5和CSS3特性。 jQuery UI和jQuery...
  • HTML5移动Web开发指南

    2013-12-16 22:20:11
    《HTML5移动Web开发指南》主要围绕html5技术,讲述如何利用html5相关技术开发移动web网站和web app应用程序。《HTML5移动Web开发指南》共分为四大部分,第一部分主要讲述web技术的发展及html5标准在移动web技术中的...
  • 移动Web UI库列表 1、Framework7  Framework7 - is a free and open source mobile HTML framework to develop hybrid mobile apps or web apps with iOS &amp; Android native look and feel. It is also an ...
  • 十大移动web开发工具

    千次阅读 2015-05-11 10:43:21
    以下列出的这些是目前十大移动web开发工具,移动开发者可以(根据具体情况)用这些工具来创建apps,实现丰富的功能。欢迎提出宝贵意见。 1)mobl-lang Mobl是一款免费且开源的语言,可以加快移动app的...
  • 移动web开发框架研究

    万次阅读 多人点赞 2014-11-13 20:31:45
    纯粹的总结一下移动web开发框架,移动web开发框架有jQuery Mobile 、Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家族,Sencha Touch来自于ExtJS。jQuery Mobile 和Sencha Touch...
  • 移动web开发清除默认样式设置

    千次阅读 2016-07-01 10:25:55
    /*reset css*/ *,::before,::after{ margin:0; padding:0; /*清除移动端默认的点击高亮... -webkit-tap-highlight-color:transparent; /*设置以边框开始计算宽度*/ -webkit-box-sizing:border-box;... box-sizing:
  • HTML5开发移动web应用—JQuery Mobile(1)

    千次阅读 2016-03-06 18:11:52
    JQuery Mobile是一个简单易用的web移动app开发框架。使用它就像使用jQuery一样,引入必要的文件即可。 最基础的jQuery Mobile文件的结构代码如下: 在此处插入标题 在此处插入正文 在此处插入页脚...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 442,898
精华内容 177,159
关键字:

移动web