移动端基础知识


屏幕尺寸、屏幕分辨率、屏幕像素密度(出场就设定好的)

屏幕尺寸:   
        指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米。
                常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。

屏幕分辨率:(iphone6  750*1334)
        指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素来表示一个手机的分辨率,
                如1960*1080。(这里的1像素指的是物理设备的1个像素点)

屏幕像素密度/像素密度/屏幕密度:
        屏幕上每英寸可以显示的像素点的数量,单位是ppi,即“pixels per inch”的缩写。
        屏幕像素密度与屏幕尺寸和屏幕分辨率有关

物理像素,CSS像素

 设备像素/物理像素:(分辨率)出场就设定好的
            买手机的时候会有一个 n x m 的分辨率,那是屏幕的n x m个呈像的点,
                一个点(小方格)为一个物理像素。
                    它是屏幕能显示的最小粒度.

            设备像素也被称为物理像素,他是显示设备中一个最微小的物理部件。
                 每个像素可以根据操作系统设置自己的颜色和亮度。

            任何设备的物理像素的数量都是固定的 

CSS像素:
            CSS像素是一个抽象的单位,主要使用在浏览器上,用来精确的度量(确定)Web页面上的内容。

            它是为web开发者创造的,在css或者javascript中使用的一个抽象的层

            一般情况下,CSS像素被称为与设备无关的像素(device-independent像素),简称为“DIPs”。
            在一个标准的显示密度下(普通屏),一个CSS像素对应着一个设备像素。



设备独立像素:设备独立像素/独立设备像素/独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,
            这个点代表一个可以由程序使用的虚拟像素(比如: css像素),
                然后由相关系统转换为物理像素。

        设备独立像素,相当于移动端的css像素

位图像素:一个位图的像素是栅格图像(如:png, jpg, gif等)最小的数据单元  
        1个位图像素对应于1个物理像素,图片才能得到完美清晰的展示(不是则会失真)       

对于web开发者而言:
            我们使用的每一个css和javascript定义的像素本质上代表的都是css像素,我们在开发过程中
            并不在意一个css像素到底跨越了多少个设备像素。我们将这个依赖于屏幕特性和用户缩放程度的
            复杂计算交给了浏览器。

像素比(出场就设定好的)

像素比:它的官方的定义为:设备物理像素和设备独立像素的比例,(单位为dpr)
        也就是 devicePixelRatio = 物理像素 /设备独立像素
            window.devicePixelRatio

视口和浏览器窗口

    在pc端:
        普通的桌面,视口的默认宽度和浏览器视口的宽度一致
        内容区:(不包括滚动条)
                document.documentElement.clientWidth
        内部区域:(包括滚动条)
                window.innerWidth
        整个浏览器窗口:(包含外边框)
                window.outerWidth
        屏幕的宽度:(兼容性不好)
                screen.width


    在移动端:
      布局视口(layout viewport):6
            一般默认为980px(css像素的宽度)
            1. 手机上,为了容纳为桌面浏览器设计的网站,默认的布局视口的宽度远大于屏幕的宽度
            2. 布局视口相当于承载浏览器网页的容器
            3. 可以通过document.documentElement.clientWidth来获取 
                在pc端,单独一个width为20%的元素最终拿到的值要根据初始包含块的width来决定,因为我们横向的布局都是
            按初始包含块开始填的,在移动端一样,不过我们这个时候应该叫它布局视口。
      可视视口(visual viewport):
           1. 视觉视口与设备屏幕一样宽,并且它的css像素的数量会随用户的缩放而改变
           2. 宽度可以通过window.innerWidth 来获取,
           (但在Android 2, Oprea mini 和 UC 8中无法正确获取移动端浏览器厂商要实现的目标:
            在小屏幕的移动设备上,尽可能的缩小网站来让用户看到网站的全貌)
      理想视口:
           <meta name="viewport" content="width=device-width, initial-scale=1">
            width为布局视口的宽度,device-width为设备独立像素的宽度
            width也可以设置为固定数值,但大部分andiord手机不支持,IOS支持;
           设置meta标签后,布局视口 = 可视视口 = 理想视口

未设置meta标签时,元素的大小在不同屏幕上比例是一定的,设置meta标签后元素占的设备独立像素的值一定,当大小数是按比例的

meta

<meta name="viewport" content="width=device-width" />
    width [pixel_value | device-width] width 
    -- 直接去设置具体数值大部分的安卓手机是不支持的 但是IOS支持

1. 在桌面浏览器中,最干净的那个视口就是约束你的css布局的视口,它决定了用户能看到什么
2. 在移动设备上,视口被分为了两个:布局视口限制了你的css布局,视觉视口会决定用户能看到什么
3. 在移动设备上,还有一个理想视口,它是对于特定设备上特定浏览器的布局视口的一个理想尺寸
4. 可以把布局视口的尺寸设置为理想视口,本质上,这就是移动端设计的基础

缩放

    用户放大或者系统放大时   视觉视口所包含的css像素的个数变少
    用户缩小或者系统缩小时   视觉视口所包含的css像素的个数变多
    (物理像素的大小不变,变大或变小的是css像素)
    缩放不会影响布局视口的尺寸大小,只不过面积发生变化

在PC端:

块元素: 1. 元素大小不变 (只是呈现的面积变大了) 
        2. 视口变小了(即,html变小了)
内联元素: 1. 大小随字体变化
          2. 视口变小 

在移动端:

1. 元素大小不变(无论块或内联)
2. 视口大小不变

事件

两种绑定方式

(DOM0)1.obj.onclick = fn;   

(DOM2)2.
  ie:obj.attachEvent(事件名称,事件函数);
        1.没有捕获(非标准的ie 标准的ie底下有 ie6到10)
        2.事件名称有on
        3.事件函数执行的顺序:标准ie-》正序   非标准ie-》倒序
        4.this指向window
  其他:obj.addEventListener(事件名称,事件函数,是否捕获);
        1.有捕获
        2.事件名称没有on
        3.事件执行的顺序是正序
        4.this指触发该事件的对象
        5.是否捕获 : 默认是false    false:冒泡   true:捕获


  避免兼容问题:
    function bind(obj, evname, fn) {
    if (obj.addEventListener) {//除ie低版本外都可以进入
        obj.addEventListener(evname, fn, false);
    } else {
        obj.attachEvent('on' + evname, function() {
            fn.call(obj);
        });
    }
}

两种绑定方式的区别

取消冒泡的手段:event.cancelBubble = true;
             event.stopPropagation();

Dom0:1. 默认冒泡,
     2. 一个元素上只能绑定一个同类事件,如果继续绑定的话,第二个事件函数会覆盖第一个
Dom2: (移动端推荐使用)
     1. attachEvent 默认冒泡
        addEventListener    
                      是否捕获 : 默认是false    
                      第三个参数: false:冒泡  true:捕获
    2. 一个元素上可以绑定多个同类事件,它们都会被执行

事件解绑

DOM0:想解除事件就相当简单了,只需要再注册一次事件,把值设成null
        原理就是最后注册的事件要覆盖之前的,最后一次注册事件设置成null,
            也就解除了事件绑定。

DOM0事件模型还涉及到直接写在html中的事件:
        因此不会传入event对象,同时,this指向的是window,不再是触发事件的dom对象。

DOM2:removeEventListener
        解除事件语法:btn.removeEventListener("事件名称", "事件回调", "捕获/冒泡");
     detachEvent(ie)

移动端事件

    (DOM0)1.obj.onclick = fn;   

    (DOM2)2.
    ie:obj.attachEvent(事件名称,事件函数);      
    标准:obj.addEventListener(事件名称,事件函数,是否捕获);

        ontouchstart  手指触摸  ====    onmousedown 
        ontouchmove   手指移动  ====    onmousemove
        ontouchend    手指抬起  ====    onmouseup

    dom0在移动端不推荐:
     在模拟器中不生效,只能在真机上测试,开发不方便
    dom2在移动端:
    在模拟器中也生效,且不会覆盖

取消系统默认行为

        event.preventDefault();

为什么取消系统默认行为
        当我们手指触发屏幕时,touchstart,但是页面并没有发生跳转
        这时候,我们需要取消系统默认行为
        根据我们需求再去添加效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值