移动前端自适应适配方法总结

移动端前端适配方案(总结) -- 面试重点

不要再问我移动适配的问题了

一、响应式布局:

// Extra small devices (portrait phones, less than 576px)
// No media query for `xs` since this is the default in Bootstrap // Small devices (landscape phones, 576px and up)
@media (min-width: 576px) { ... } // Medium devices (tablets, 768px and up)
@media (min-width: 768px) { ... } // Large devices (desktops, 992px and up)
@media (min-width: 992px) { ... } // Extra large devices (large desktops, 1200px and up)
@media (min-width: 1200px) { ... }

二、移动端适配

移动设计图: 640px,iopne6: 750px

PC屏: 1240px, 960px

概念:

屏幕尺寸: 屏幕对角线(英寸)

屏幕分辩率: 物理像素(像素点) 1024*1980 px

  • 1px: 1横向像素 * 1纵向像素
  • 就是卖手机标注的屏幕像素

屏幕像素密度(PPI): 一英寸内的拥有的像素

设备独立像素:

是一种可以被程序所控制的虚拟像素,在Web开发中对应CSS像素

  • 占满屏幕的虚拟的开发像素

像素比: 物理像素/设备独立像素

2.1 为什么适配:

像素:

位图像素: 图片的像素

  • 当位图像素 = 物理像素才能完美显示

视口:

**视觉视口: **(就是文档的实际在浏览器中的大小)

  • 就是html元素
  • 随用户的缩放改变,即网页开发配置的尺寸被改变
  • 网站设计稿,是小于等于视觉视口的

布局视口:(设备出厂定好了, 不能改变, 就是屏幕大小,不是屏幕分辩率)

  • 浏览器默认的不出现滚动条的屏幕大小,所以,在移动端, 网页设计尺寸, 不超过布局视口就不出现滚动条,(即配置的视觉视口大于布局视口)
  • 滚动条只于布局视口有关
  • 移动端要保证, 视觉视口 = 布局视口 , 才能完整网页
<meta name='viewport' width = 'device-width'/>
// 布局视口等于视觉视口
  • width = 'device-width' 这个相当于移动端的协议,必须签, 不签的话, 调式工具的 像素比, 就会出错 ; 签了才是DPR=2, 或者DPR=3;
  • pc端viewport无效

**理想视口: **

  • 签了协议的视口

获取视口的方法:

PC: 只有一个视口

document.docmentElenment.clientWidth (不包空滚动条)

window.inderWidth = 包括滚动条

screen.width = 分辨率

完美视口:

<meta name='viewport' width = 'device-width, inition-scale=1.0'/>

移动端:

document.docmentElenment.clientwidth = 布局视口

window.inderWidth = 视觉视口(不用,兼容不好)

screen.width = 布局视口/或理想视口(不用)

缩放:

用户缩放

PC: 会影响视觉视口,布局视口

移动端: 会影响视觉视口, 不影响布局视口

系统缩放

改变理想视口,做缩放

旋转:

完美视口,能解决旋转兼容问题

图片:(设计 位图像素 == 物理像素(分辨率))

锐化: 图片缩小

失真: 图片放大

**适配: ** 不同设备等比还原设计图

1、rem适配:

  • 改变了一个元素在不同设备上占据的css像素的个数
  • html的高宽==视觉视口,width,height,只读;用户缩放会影响

rem基于html的fontSize的大小; 所以所设计图与html的font-size进行等比

(function(){
var styleNode = document.createElement('style')
var htmlW = document.documenElement.clientWidth / 16 //将视觉视口分成16份 styleNode.innerHtml = `html{font-size:${htmlW} !important}` // 利用css才有!imporant属性, 将根字体固定,防止误改
document.head.appendChild(styleNode)
})()
  • 利用css才有!imporant属性, 将根字体固定,防止误改

**优点 : ** 没有破坏完美视口

**缺点: ** px到rem太复杂

2、viewport适配

  • 改变视觉视口的大小, html的宽度, 使之等于设计图
  • 不同设备css像素一样, 视觉视口缩放不一样
(function(targetWidth){
let targetWidth = 640;
var scale = documentElement.clientWidth/targetWidth
var meta = document.querySelector(meta[name='viewport'])
meta.content = `initial-scale=${scale},minimum-scale=${scale},maximum-scale=${scale}, user-scaleble=no`
})()

优点: 所量即所得

缺点: 没有实现完美视口

3、 百分比适配(页面简单可以)

4、vw方案

  • vw也是一个相对单位,它相对的是布局视口,1vw就是1%的布局视口宽度。

5、flexible, 是查询屏幕,生成font-size的大小, 所以在不需要适配的时候, 还是要@media 做限定

**一物理像素: **

1、 图片做border线

2、meta标签:

  • rem适配+scale缩放,border用px(taobao方案)
  • 这样会改变,适配, 不推荐

3、css3属性;

  • @media + transform: scale(1/dpr)缩放 (主流:)

4、box-shadow:

  • -webkit-box-shadow:0 1px 1px -1px rgba(0, 0, 0, 0.5);

web前端之移动端:知识汇的更多相关文章

  1. web前端篇:html基础知识

    目录 1.web前端: 2.HTML概述 2.1HTML介绍 2.2HTML在计算机中如何表现 3.HTML基础语法 4.练习题: 1.web前端: 什么是web? web 就是网页,是一种基于B/S ...

  2. Web前端上万字的知识总结

    下面是自己学HTML+DIV+CSS+JS时的学习笔记,给大家分享以下,相互学习.大二时候寒假在家无聊的时候想做点事,总结了一下web前端基础的东西,下面的每个字都是自己手敲的. 1.<html ...

  3. Web前端入门必学知识

    入门主要有三个部分   一.html+css部分:      1.前端的入门门槛极低,体现在HTML和CSS上运行环境就是浏览器,html+css这部分特别简单,网上搜资料,书籍视频非常多.css中盒 ...

  4. 初学者入门web前端:C#基础知识:函数

    入行前端对函数的掌握程度有可能直接影响以后工作的效率,使用函数可以高效的编写编码,节省时间,所以我整理了C#中最基础的函数知识点,虽然我在学习中 遇到很多问题,但是只要能够解决这些问题,都是好的. 一 ...

  5. 【web前端】移动端控制台插件,手机端页面查看相关页面控制台信息

    一般调试手机端页面时,基本是在PC端使用手机模式进行断点或console调试.或查看有用的控制台信息的,但依旧有部分功能无法在PC端调试,经常需要使用alert进行断点,然后在手机端看效果,但是这样并 ...

  6. web前端之浏览器: 知识汇总

    一.URL到页面 准备阶段: 输入URL,Enter进入查找 浏览器在本地查找host文件,匹配对应的IP: 找到返回浏览器并缓存 没有,则进入路由查找: 找到返回浏览器并缓存 再没有,再进入公网DN ...

  7. web前端之html基础知识初级

    html 基础标签 单标签 1.注释标签: ctrl+/ 换行标签: 横线标签: 标题标签: 段落标签: 表示强调标签: 文字 属性:文字加颜色 color:改变文字颜色 size:改文字大小属性 例 ...

  8. 100本最棒的web前端图书推荐

    前端技术,要学习的内容太多了,当你不知道从哪里开始的时候,你就先从看书开始,边看书边码代码,这个是学习编程必须的过程,因为你看一百遍,还不如自己写一遍,写一遍,第一可以加印象,第二便于更好的理解. 熟 ...

  9. [转] Web前端开发工程师常用技术网站整理

    1.常用工具相关 有道云笔记 http://note.youdao.com/signIn/index.html 36镇-最好用的共享收藏夹 http://www.36zhen.com/ 浏览器同步测试 ...

随机推荐

  1. CodeForces 86 D Powerful array 莫队

    Powerful array 题意:求区间[l, r] 内的数的出现次数的平方 * 该数字. 题解:莫队离线操作, 然后加减位置的时候直接修改答案就好了. 这个题目中发现了一个很神奇的事情,本来数组开 ...

  2. 环境变量_JAVA_LAUNCHER_DEBUG,它能给你更多的JVM信息

    关于环境: 本文中的实战都是在docker容器中进行的,容器的出处请参照<在docker上编译openjdk8>一文,里面详细的说明了如何构造镜像和启动容器. 在上一篇文章<修改,编 ...

  3. 【Offer】[31] 【栈的压入、弹出序列】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列{1,2,3 ...

  4. 2018阿里-研发工程师JAVA Software Engineer, Java

    岗位描述Job Description如果你想了解JAVA开发在阿里巴巴互联网生态系统中无与伦比的应用广度与深度: 如果你对基础技术感兴趣,你可以参与基础软件的设计.开发和维护,如分布式文件系统.缓存 ...

  5. Docker入门到实践——简单操作

    1.对比传统虚拟机总结 特性 容器 虚拟机 启动 秒级 分钟级 硬盘使用 一般为MB 一般为GB 性能 接近原生 弱于 系统支持量 单机支持上千个容器 一般几十个 2.基本概念 Docker包括三个基 ...

  6. helm生产环境离线安装

    1.安装helm 生产环境离线的情况下,使用tiller前端运行还是后端运行可以根据自己需求,如果希望tiller可以稳定的运行,可以尝试docker跑以下,作者没有尝试不知是否会成功.但是不通过he ...

  7. 排序入门练习题3 谁考了第k名 题解

    题目出处:<信息学奥赛一本通>第二章 上机练习1 题目描述 在一次考试中,每个学生的成绩都不相同,现知道了每个学生的学号和成绩,求考第k名的学生的学号和成绩. 输入格式 输入的第一行包含两 ...

  8. 新建servlet工程

    1.选择新建Dynamic  Web Project 2.选择服务器和版本(2.5) 3.src目录下新建一个包 4.包里面新建一个类 5.实现Servlet接口(通过http协议访问) 6.serv ...

  9. [Code] 大蛇之数据工程

    作为“所谓码农”的首篇,本章内容理应涵盖基本编程技法. Python这个东西.简洁,作为载体,是个不错的选择呦. 链接资源: Python文档:https://docs.python.org/3/ 教 ...

  10. 二叉树总结(五)伸展树、B-树和B+树

    一.伸展树 伸展树(Splay Tree)是一种二叉排序树,它能在O(log n)内完成插入.查找和删除操作. 因为,它是一颗二叉排序树,所以,它拥有二叉查找树的性质:除此之外,伸展树还具有的一个特点 ...