移动端前端适配方案20170707

1.Meida Queries

meida queries 的方式可以说是我早期采用的布局方式,它主要是通过查询设备的宽度来执行不同的 css 代码,最终达到界面的配置。核心语法是:

@media screen and (max-width: 600px) { /*当屏幕尺寸小于600px时,应用下面的CSS样式*/
  /*你的css代码*/
}

优点

  • media query可以做到设备像素比的判断,方法简单,成本低,特别是对移动和PC维护同一套代码的时候。目前像Bootstrap等框架使用这种方式布局
  • 图片便于修改,只需修改css文件
  • 调整屏幕宽度的时候不用刷新页面即可响应式展示

缺点

  • 代码量比较大,维护不方便
  • 为了兼顾大屏幕或高清设备,会造成其他设备资源浪费,特别是加载图片资源
  • 为了兼顾移动端和PC端各自响应式的展示效果,难免会损失各自特有的交互方式

弹性布局

它的viewport是固定的:<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">

根据rem将页面放大dpr倍, 然后viewport设置为1/dpr.

  • 如iphone6 plus的dpr为3, 则页面整体放大3倍, 1px(css单位)在plus下默认为3px(物理像素)
  • 然后viewport设置为1/3, 这样页面整体缩回原始大小. 从而实现高清。

这样整个网页在设备内显示时的页面宽度就会等于设备逻辑像素大小,也就是device-width。这个device-width的计算公式为:

设备的物理分辨率/(devicePixelRatio * scale),在scale为1的情况下,device-width = 设备的物理分辨率/devicePixelRatio 。

通过以下代码来控制rem基准值(设计稿以720px宽度量取实际尺寸)

!function (d) {
    var c = d.document;
    var a = c.documentElement;
    var b = d.devicePixelRatio;
    var f;

    function e() {
      var h = a.getBoundingClientRect().width, g;
      if (b === 1) {
        h = 720
      }
      if(h>720) h = 720;//设置基准值的极限值
      g                = h / 7.2;
      a.style.fontSize = g + "px"
    }

    if (b > 2) {
      b = 3
    } else {
      if (b > 1) {
        b = 2
      } else {
        b = 1
      }
    }
    a.setAttribute("data-dpr", b);
    d.addEventListener("resize", function () {
      clearTimeout(f);
      f = setTimeout(e, 200)
    }, false);
    e()
  }(window);
时间: 2024-10-29 06:04:44

移动端前端适配方案20170707的相关文章

移动端font-size适配方案(续)

概述 之前写过一篇移动端font-size适配方案,但是在实践过程中,还是发现当时的思维太局限了,视野太窄了,所以现在补充更新一下,记录下来,供以后开发时参考,相信对其他人也有用. 我上一篇博文主要有2个误区,下面我一一记下来. 这篇博文参考了移动端适配方案(下). 适配方案 有多种适配方案: 百分比布局:固定高度,宽度自适应.就是固定高度,宽度用百分比.可以想象,对于不同的屏幕,所有的东西都有横向拉伸,导致非常不好看. px布局:固定宽度,viewport缩放.就是全部用px,然后用js控制i

移动端的适配方案

目录 移动端的适配方案 百分比适配 viewport缩放适配 DPR缩放适配 rem适配 hotcss适配(使用dpr+rem,简单好用) vw/vh适配(为适配而生,最优方案) 移动端的适配方案 不同的尺寸的手机设备上,页面相对合理的展示(自适应)或者保持统一效果的等比缩放 百分比适配 根据父级计算百分比,需要配合其他布局使用 <div class="container"> <div></div> <div></div> &

web移动端屏幕适配方案

因为手机屏幕的分辨率大小不一 ,如果使用传统的静态布局,把每个元素的宽高样式写死,在不同的屏幕中就有各种各样的显示效果.这显然不是我们想要的结果.我们需要的是根据屏幕分辨率的不同,来适配不同的样式大小.使不同的手机分辨率下都有相同的样式布局 1.rem适配 1rem就是html标签font-size的大小,在rem适配方案中,我们以rem作为基值来设定元素的大小.1rem单位越大,元素的大小也就越大,1rem单位越小,元素的大小也就越小 实现方法:通过js获取屏幕的分辨率来动态设置1rem的大小

PC端、移动端页面适配方案

前言 页面自适应PC端.移动端大体上可以分为两种: 1.在同一个页面进行自适应布局,通常使用CSS3 @media 媒体查询器实现 2.两套页面,在后端进行统一适配,根据不同的浏览器UA返回对应的页面 本文记录在java后端进行PC端.移动端页面适配的方案 工程结构 想要实现后端统一适配,首先要规范好工程结构 后端代码,跟之前差不多,响应的viewName路径,直接从业务模块开始,适配工作交给aop:两套页面,对应的业务模块,分别放在两个目录下面 aop适配器 统一的适配工作交由aop环绕切面进

移动端主流适配方案

1.流式布局(百分比布局)    案例:京东移动端 优点:简单方便,只需要固定高度,宽度自适应: 缺点:大屏幕手机实际显示的不协调. 2.响应式布局 优点:可以节约成本,不用再做专门的web app网站(外包公司.小公司.博客): 缺点:工作量大.维护很难:国内大型企业在移动端很少用. 3.固定宽度     案例:荔枝FM 640 优点:与设备做等比例的缩放: 缺点:在大屏幕手机下两边留白,操作按钮小. 4.目前主流做法rem    案例:淘宝移动端 rem:font size of root

探讨移动端布局适配方案

一.前提知识 移动端的屏幕尺寸有多种,其中要知道几个知识 物理像素:即设计稿的尺寸 逻辑像素:实体机器的真正像素 下面是我们经常适配的屏幕尺寸 一.rem布局 rem是以根元素字体大小作为参照的布局方式 如下 //以750px设计稿为例,物理像素是375px.设置div宽度为整个容器宽度一半 html{font-size:12px} div{width:375/2/12 rem} 屏幕的尺寸是不同的,为了保证布局大小一致,我们需要做判断屏幕的宽度,如下例子: rem布局的缺点是要根据不同的屏幕大

移动端屏幕适配方案

本文来源:http://mp.weixin.qq.com/s?__biz=MjM5MTA1MjAxMQ==&mid=201811994&idx=1&sn=1c3bae60e2fe13d3bc3aeecaa6a4ef00&scene=23&srcid=abqLbfgvESx4DGNysdG8#rd pc上的网站在移动端上怎么办? 1:如果把移动端的可视区域(320-768)的话,大部分网站都会因为太窄而显示错乱: 2:所以浏览器默认把viewport设置为一个较宽的值

移动端适配方案

Flexible适配方案 最早的文章,是15年阿里手淘团队的移动端适配方案. 设计师常选择iPhone6作为基准设计尺寸,交付给前端的设计尺寸是按750px * 1334px为准(高度会随着内容多少而改变). 前端开发人员通过一套适配规则自动适配到其他的尺寸. 先了解一些基本概念 视窗viewport 简单理解,viewport是严格等于浏览器的窗口,在桌面浏览器中,viewport就是浏览器窗口的宽度高度. 但是在移动端的viewport太窄,为了能更好的为css布局服务,所以提供了两个vie

移动端高清、多屏适配方案

移动端高清.多屏适配方案 背景 开发移动端H5页面 面对不同分辨率的手机 面对不同屏幕尺寸的手机 视觉稿 在前端开发之前,视觉MM会给我们一个psd文件,称之为视觉稿. 对于移动端开发而言,为了做到页面高清的效果,视觉稿的规范往往会遵循以下两点: 首先,选取一款手机的屏幕宽高作为基准(以前是iphone4的320×480,现在更多的是iphone6的375×667). 对于retina屏幕(如: dpr=2),为了达到高清效果,视觉稿的画布大小会是基准的2倍,也就是说像素点个数是原来的4倍(对i