• 移动web开发


    流式布局

    其实  流式布局  就是百分比布局,通过盒子的宽度设置成百分比来根据屏幕的宽度来进行伸缩,不受固定像素的限制,内容向两侧填充。

    这样的布局方式  就是移动web开发使用的常用布局方式

     Viewport

    1. 我们猜想下pc页面在移动设备上显示情况。

    放不下,缩放?

    1. 我们测试下pc页面在移动设备上显示。

    默认的缩放的显示的

    1. 认识viewport

    在移动端用来承载网页的这个区域,就是我们的视觉窗口,viewport(视口),这个区域可是设置高度宽度,可是按比例放大缩小,而且能设置是否允许用户自行缩放。

    width:宽度设置的是viewport宽度,可以设置device-width特殊值

    initial-scale:初始缩放比,大于0的数字

    maximum-scale:最大缩放比,大于0的数字

    minimum-scale:最小缩放比,大于0的数字

    user-scalable:用户是否可以缩放,yesno10);

    meta标签把viewport的宽度设为device-width,同时initial-scale=1user-scalable = 0就构建了一个标准的移动web页面

     Retina

     

    所谓Retina”是一种显示技术,可以将把更多的像素点压缩至一块屏幕里,从而达到更高的分辨率并提高屏幕显示的细腻程度。

    物理像素 像素点

    屏幕尺寸  1px

     首页切图

    <!--整体布局盒子-->
    <div class="jd_layout">
    /*主体*/
    .jd_layout {
    100%;
    max- 640px; /*设计稿一般都是640px 是不是会放大页面 清晰?*/
    min- 300px; /*由于一些老设备可能比320还小*/
    margin: 0 auto;
    <!--这样的固定结构?在移动端可以调用enter键 属于小键盘当中的  改成搜索按钮-->  调用键盘
    <form action="#">
    <input type="search" placeholder="搜索"/>
    </form>
    base.css
    *,::before,::afte
         /*设置所有的盒子都是以边框开始计算  使用的都流式布局*/
        -webkit-box-sizing: border-box;/*要求兼容主流浏览器 webkit内核的必须*/
        box-sizing: border-box;
        /*清除移动端默认的点击高亮效果 */
     
                       -webkit-tap-highlight-color: transparent;
     
     
     /*清除移动端默认的输入框的默认样式*/
        -webkit-appearance: none;
     

    如果11的显示在移动设备当中  图标会失真

    在行业中通用的设计稿 640px

    首页的布局:是以百分比布局为主的  定最小宽度和最大宽度的布局。

    适用:图片比较多的首页,门户,电商 等。

    移动端事件

    Touch

    touchstart:当手指触碰屏幕时候发生。不管当前有多少只手指

    绑定事件的方法:

    dom.addEventListener('touchstart',function(e){});

    事件返回的e对象包含那些移动端特有的属性:

    targetTouches 目标元素的所有当前触摸

    changedTouches 页面上最新更改的所有触摸

    touches 页面上的所有触摸

    touchmove:当手指在屏幕上滑动时连续触发。

    绑定事件的方法:

    dom.addEventListener('touchmove',function(e){});

    事件返回的e对象包含那些移动端特有的属性:

    targetTouches 目标元素的所有当前触摸

    changedTouches 页面上最新更改的所有触摸

    touches 页面上的所有触摸

    会调用eventpreventDefault()可以阻止默认情况的发生:阻止页面滚动

    touchend:当手指离开屏幕时触发。

    绑定事件的方法:

    dom.addEventListener('touchend',function(e){});

    事件返回的e对象包含那些移动端特有的属性:

    changedTouches 页面上最新更改的所有触摸

    touchcancel:系统停止跟踪触摸时候会触发。

    例如在触摸过程中突然页面alert()一个提示框,此时会触发该事件,这个事件比较少用

    触摸事件的响应顺序

    1、ontouchstart

    2、ontouchmove

    3、ontouchend

    4、onclick  300ms延时

    Event

    originalEvent (原生事件) 是jquery 封装的事件。

    targetTouches 目标元素的所有当前触摸

    changedTouches 页面上最新更改的所有触摸

    touches 页面上的所有触摸

    /*记录滑动的时候的x的坐标 会随时改变*/
            moveX = e.touches[0].clientX;

    注意:在touchend事件的时候event只会记录changedtouches

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

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

    pageX:触摸目标在页面中的x坐标。

    pageY:触摸目标在页面中的y坐标。

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

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

     过渡和动画结束事件

    transitionEnd   过渡结束后触发。

    绑定事件的方法:

    dom.addEventListener('webkitTransitionEnd',function(e){ });

    dom.addEventListener('transitionEnd',function(e){ });

    animationEnd   动画结束后触发。

    绑定事件的方法:

    dom.addEventListener('webkitAnimationEnd',function(e){ });

    dom.addEventListener('animationEnd',function(e){ });

    Gesture 事件(不常用)

    gesturestart

    当一个手指触摸屏幕之后,第二个手指再触摸屏幕时触发。

    gesturechange

    当上面的事件触发后立即触发。

    gestureend

    第二根手指离开屏幕时触发,之后将不会再次触发gesturechange

    event当中会返回另外两个参数

    scale 根据两个手指的滑动距离计算的缩放比例 初始1

    rotation根据两个手指的滑动距离计算的旋转角度 初始 0

     全屏单页面布局

    试用百分比的方式:

    /*满屏*/
    html,body{
        height: 100%;
    }

    移动端事件原理

    在移动端通常  tap swipe 等事件的封装原理

    Tap

    由于在移动端click会有300ms左右的延时,为了响应速度更快移动端框架一般会封装一个加tap的事件,原理:利用touch事件当没有滑动过并且响应时间在一定的时间内(比click快)那么这样的一个过程就是一个tap事件。

    Swipe

    在移动端有手势事件,也是一些移动端框架封装出来的那么这种事件也是touch事件开始的位置和结束的位置来判断手势的情况。是向下滑还是向右滑,是向下滑还是向上滑。

     购物车页面切图

    购物车页面是一个移动端最常使用的布局方式,完全的试用通栏流式布局的方式,宽度自适应。

    这个页面需要注意的地方。

    怎么自定义checkbox:属性选择器

    移动端弹出框的特点:animte.css的使用,思路理解。

     推荐网站

    这个网站可以提供一些常用的动画,可以在做移动开发的时候可以参考这个网站的效果完成动画。

    Zepto是一个轻量级的针对现代高级浏览器的JavaScript库, 它与jquery有着类似的api。 如果你会用jquery,那么你也会用zepto

    常用于移动端网站的内容触摸滑动

    是纯javascript打造的滑动特效插件,面向手机、平板电脑等移动终端。

    能实现触屏焦点图、触屏Tab切换、触屏多图切换等常用效果。

    开源、免费、稳定、使用简单、功能强大,是架构移动终端网站的重要选择!

    无论是在iphoneipodandroid 或是更早前的移动webkit都没有提供一种原生的方式来支持在一个固定高度的容器内滚动,它可以支持这样的滑动效果。

     项目三种布局分析

    首页的适用场景

    门户电商的首页   而且内容比较丰富  

    分类页面的使用场景

    是单页面  全屏的布局当中会使用

    异步的交互  ajax    web app 的开发模式当中会使用到

    Web  app  网页程序 网页应用  

    移动web页面优点: 跨平台  android  ios

    Hybird app 现在流行起来的  混合应用  开发模式  webview

    套用  嵌入 移动web页面的 应用所有的移动页面都可以

    Native  app 原生应用

    购物车页面

    任何地方都可以用到这样的布局。

    页面开发注意事项

    1 所有盒子以边框开始计算

    /*设置宽度以边框开始计算*/

     

    -webkit-box-sizing: border-box;

     
    box-sizing: border-box;

    在移动端通常使用的是百分比布局,那么这样的布局如果使用border或者padding或使容器的宽度超出屏幕的宽度产生滚动条。那么我们的解决方案是什么试用css3属性 box-sizing设置所有的盒子重边框开始计算宽度。

    2  Input清除默认的样式

    /*在移动端怎么清除默认的样式*/
    /*在移动端清除浏览器默认样式*/
    -webkit-appearance: none;

    在移动设备的浏览器当中表单一般会有默认的属性  通过bordernone

    outline:none是无法完全清楚的,还是会有一些浏览器默认的属性,比如:

    内阴影,立体感、、、向这些浏览器默认加上的样式我们怎么去除呢?

    我们有一个属性  -webkit-appearance 这个属性指的是设置成 none

      3 最小宽度和最大宽度的限制

    max- 640px;  /*在行业当中的移动端的设计图一般使用的是640px*/

    如果设计稿是750px

    min- 300px;  /*在移动设备当中现在最小的尺寸320px*/

    适用:图片比较多的首页,门户,电商 等。

    作用  保证页面在尺寸比较大的设备当中保证页面的效果也就是清新度

     保证页面在小尺寸的设备当中有较好的布局效果。

    4  Img的下间隙问题

    <div>

    abcdefghijklmnopqrstuvwxyz

    <img src="../images/nv-fy.jpg" alt=""/>

    </div>

    文字基线默认的 baseline 是以X的下边开始的

    Img是行内块级元素  它也会有默认的基线对齐。那么和文字一样也会距离底部有一定的间隙。Font-size  0   对齐的方式

     5 搜索按钮调用

    <!--在移动端点击弹出输入法  enter键会显示搜索-->

     

    <form action="#">

     

        <input type="search" placeholder="提示"/>

     

    </form>

    在移动端调用输入法的时候会弹出小键盘,键盘一般是enter键,那么在搜索框当中我们要求调用是搜索按钮,那么这样的结构才能调用出来。 

    6  移动端的滑动效果

    在移动端特有的事件touch中,

    包含了  touchstarttouchmovetouchend三个事件,

    首先:

    我们可以通过touchstart事件中返回的event对象中的第一个触摸点信息中的client坐标,

    然后:

    我们再通过监听touchmove事件的时候获取到滑动的时候的触摸点,在互获取event对象中返回的client坐标,这样就可以计算滑动的时候改变的距离。

    同时改变当前元素的translate就可以。

    最后:

    touchend的时候利用记录下当前元素的定位。

    注意的是:在移动端是利用transform来做定位。

    滑动的时候改变距离的方向问题。

    7   过渡结束事件

    dom.addEventListener('webkitTransitionEnd',function(e){ });

    dom.addEventListener('transitionEnd',function(e){ });

    在这里要注意的是:为了兼容浏览器在绑定事件的时候需要同时绑定一个带webkit前缀的事件和不带的这样达到兼容主流浏览器。

    还有:给目标元素绑定事件后,每一次过渡结束都会触发transitionEnd事件。

    8   使用过渡和改变注意问题

    在移动端为了兼容老版本的一些webkit浏览时在css中或者js中一定要做兼容处理。

    Css中的处理方法是加上-webkit-前缀和一个不加的。

    Js中处理方法是style设置的时候需要设置一个webkit前缀的属性和一个不加的。

    9  两栏其中一栏宽度自适应

    我们首先知道文本环绕的的概念:

    那么当文本在另一个容器当中,容器是overflowhidden的时候。那么这个时候这个盒子就变成了一个绝缘的盒子,不去影响任何外部的元素并且内容使用剩余的宽度。

    这样也可是做一个自适应的两栏布局方式。浮动的元素写在前面   

    10 按钮问题

    这里的按钮设置的是  40*44的大小  但是内容只有20px为什么要这么设置呢?

    在移动端如果按钮太小 触发起来相对来说比较困难,用户体验非常不好。那么在设置按钮的时候需要设置的更大一点。

    注意不能使用margin,应为a标签触发不了。

    background-clip: content-box;

    background-origin:content-box;

     
  • 相关阅读:
    22天学习java基础笔记之day08
    22天学习java基础笔记之day07
    22天学习java基础笔记之day06
    22天学习java基础笔记之day05
    架构师_设计模式_行为型_迭代器
    架构师_设计模式_行为型_命令模式
    架构师_设计模式_行为型_责任链模式
    架构师_设计模式_行为型_模板方法
    架构师_设计模式_结构型_装饰器模式
    架构师_设计模式_结构型_桥接模式
  • 原文地址:https://www.cnblogs.com/zhanggaojun/p/5747751.html
Copyright © 2020-2023  润新知