php网页如何适应手机端,PC网页的移动端适配兼容性应该如何实现自动适配

2023-11-04

概念

移动时代的今天,现如今随着智能手机的不断发展,移动端搜索的比例也在不断增加,而传统的PC站点在手机端的用户体验度很差,这容易导致大量用户的流失,所以做一个对应的手机站是非常有必要的前端代码的编写永远逃不过“兼容”二词,从前PC时代,因为IE的傲娇,导致程序猿们一直在兼容IE的道路上挣扎,如今移动设备的普及,仿佛让我们看到了希望,仿佛马上就要摆脱IE了,可是!一波还未平息,一波又来侵袭~移动端确实不用考虑IE了,各种CSS新特性也用的爽到飞起,但一座大山压了过来,那就是分辨率的适配,移动端由于展示区域比较小,因此对于页面在不同分辨率手机上的展示细节也要求更加严格,这时像PC端有些固定宽高的布局方式显然不适应,我们被要求对于不同大小手机页面能自适应,真是非常有(tong)趣(ku)呢

话不多说,下面就总结了一些移动端常用的适配手法:

一、百分比

使用场景:只要求宽度随屏幕自适应,比如文字块

百分比在PC端自适应上也经常用到,着实相当好用,但它一般用于宽度自适应的设置,高度设置百分比时,要求其父类元素有明确高度。

1、利用百分比实现填充全屏

为了让元素设置height:100%生效,并且正好为窗口高度,则需要给html和body元素以及它所有的父元素都设置高度100%。

例如:

1

2

3

4

5

6

7

填充全屏啦

在使用height: 100%;时需要注意的一些事项Margins 和 padding 会让你的页面出现滚动条,也许这是你不希望的。

如果你的元素实际高度大于你设定的百分比高度,那元素的高度会自动扩展。

写到这里我突然想插个题外话,对于absolute定位的元素,用height:100%显然也是无效的,因为此时它已经脱离了文档流,此时它的高度由自身内容撑开。这是如果我希望它填满父盒子,怎么做?这里有个黑魔法,设置它的top,left,bottom,right均为0,这时盒子就会被拉伸至填满父盒子。

2、利用百分比实现宽高比固定

有时,我们希望宽度自适应,高度随宽度变化而变化,并有固定的宽高比。

让我们缕缕,用height百分比显然不行,height百分比是以父元素高度为基准的,而我们需要以宽度为基准来设置高度。

所以这里可以用到padding-top或者padding-bottom,padding是以父元素的width为基准的。我们可以设置元素的height:0,然后用padding-bottom将元素撑开,以实现固定宽高比。

二、rem

使用场景:对于图片等对高度自适应有要求的场景

rem单位:以页面根字体的大小,也就是html元素字体的大小为基准,例如

1

2

3html{

font-size:16px;

}

那么1rem等于16px。

所以使用时,我们只要让根字体大小随屏幕大小自适应,那页面中所有使用rem单位来设置宽高的元素,大小也会随屏幕大小自适应了。

根据不同屏幕大小设置根字体大小有两种方法:

1、css方法设置rem

利用媒体查询,根据不同的屏幕大小进行设置,缺点就是一般只列举一些代表性的屏幕大小,自适应不能充分覆盖所有范围

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38html{

font-size:10px

}

@media screen and (min-width:321px) and (max-width:375px){

html{

font-size:11px

}

}

@media screen and (min-width:376px) and (max-width:414px){

html{

font-size:12px

}

}

@media screen and (min-width:415px) and (max-width:639px){

html{

font-size:15px

}

}

@media screen and (min-width:640px) and (max-width:719px){

html{

font-size:20px

}

}

@media screen and (min-width:720px) and (max-width:749px){

html{

font-size:22.5px

}

}

@media screen and (min-width:750px) and (max-width:799px){

html{

font-size:23.5px

}

}

@media screen and (min-width:800px){

html{

font-size:25px

}

}

2、JS方法设置rem

利用JS设置根字体大小,所以若改变发生在渲染完成之后,则会引起回流,导致闪屏现象。因此使用这种方法时,应将JS代码放入head头部中并且在CSS引入之前。

1

2

3

4

5

6

7

8

9

10

11

12(function (doc, win) {

var docEl = doc.documentElement,

resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',

recalc = function () {

var clientWidth = docEl.clientWidth;

if (!clientWidth) return;

docEl.style.fontSize = 20 * (clientWidth / 375) + 'px';

};

recalc();

if (!doc.addEventListener) return;

win.addEventListener(resizeEvt, recalc, false);

})(document, window);

上面clientWidth为实际屏幕的宽度,而375为设计稿基于的参考屏幕宽度,20则是当实际屏幕宽度等于参考屏幕宽度时,1rem的大小。代码的关键参数20和375是这样设置的:

a) 由于提供的设计稿现在基本都是以iPhone6/7/8为参考的,宽度为750px,dpr为2,所以计算rem时的参考屏幕宽度可以设置为375。

b) 由于chrome的最小字体是12px,又为了计算方便,所以可以设置1rem的大小为20px

应用过程中,比如我们拿到了一个750的设计稿,那么首先,将设计稿里的数值除以2,得到按手机屏幕大小布局的数值(这也是375的由来)。然后,再除以20就可以将设计稿中的px转化为rem了。

三、媒体查询

使用场景:一般利用媒体查询来进行特殊处理,比如

1、iphoneX这类全屏的适配

2、在适配dpr为3的iPhone Plus或者pad横屏等超级大屏时,需要根据业务需求设置临界值,然后展示不同内容或者替换不同分辨率图片(也就是常说的2倍图、3倍图的使用)等

四、vw、vh

vw是以屏幕宽度为基准的百分比单位,1vw=1% * deviceWidth

vh是以屏幕高度为基准的百分比单位,1v=1% * deviceHeight

vw,vh确实很好用,但是目前使用时仍需考虑兼容性的问题,在国内一些手机自带浏览器里(比如华为)会失效,并且据说碰上X5内核时也容易踩坑 。

五、适配最常见的操作方法

据观察,PC站和手机站匹配最常用的几种方法是移动适配、JS跳转、Meta声明、302规则等等,由于每种方法的操作方式不同,产生的效果也不同,具体的优缺点也需要区别对待,在此就给大家比较一下这4种适配方法的优缺点以及需要注意的地方:

1、移动适配

现在很多搜索引擎都提供移动适配的功能,例如百度的开放适配和360的移动适配,利用百度站长工具提交PC页-手机页对应关系Sitemap,或者利用360站长工具提交PC页-手机页对应关系txt就能实现PC站内容和手机站一一适配。 这样做的优点是只需要在搜索引擎工具提交资料,无需对站点本事做改动,而且网站内容一一对应,并不只局限于网站首页。 缺点就是只能在百度或者360移动搜索中生效,其他没用提交适配文件的搜索中就无效了。

2、JS跳转

JS跳转对于某些行业来说有着重要的作用,尤其是对于用户转换率网站首页较高的网站,只需要在网站的头部加一段JS代码判定是否是移动端访问,然后所有的流量就会全部流向手机站的主页。 JS跳转的优点是适用于所以的移动搜索,并不局限于百度和360,可以提高用户的转换率。 缺点是难以实现每个页面的一一对应,而且容易被某些搜索引擎判定作弊,从而受到惩罚。

3、Meta声明

Meta声明的格式一般为,站长可以将这段代码加在PC站的头部,由Meta信息来指明该PC页对应的手机页的URL,以及该URL对应页面的格式。 Meta声明的优点是代码简单易懂,操作方便。 缺点是只能在百度移动搜索中生效,对于其他搜索引擎无效。

4、302规则

302规则指的是,当判定移动端访问网站时,302临时跳转到一个网址(手机站),例如可以在htaccess文件里加上一段判定手机的代码,做个302重定向。 这样做的好处是,不需要再额外在网站的前端代码中加任何东西,也不需要向搜索引擎提交规则,可是据测试,有可能会导致PC站被降权。 虽然302是暂时性的重定向,但过于频繁的302是很有可能给网站带来不利的影响的,具体的尺度需要站长自己去把握。 以上4种适配方法是最为常见的操作方法,通常PC站做了以上处理后,一段时间以后移动端搜索出来的结果,下面匹配的网址就变成了移动站网址,不过标题还是PC站标题。 至于到底哪种方法更好,更倾向于第一种,毕竟百度移动搜索占据着网站的大部分流量,而且用户体验度也最好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php网页如何适应手机端,PC网页的移动端适配兼容性应该如何实现自动适配 的相关文章

  • BRDF公式

    转自 https www cnblogs com wbaoqing p 9810386 html 根据BRDF公式 高光项部分 只能物体的表面的粗糙度有关 Roughness有关 大部分公式都是 根据Cook Torrance 的微表面高光
  • 用Python搭建2层神经网络实现mnist手写数字分类

    这是一个用python搭建2层NN 一个隐藏层 识别mnist手写数据集的示例 mnist py文件提供了mnist数据集 6万张训练图 1万张测试图 的在线下载 每张图片是 28 28 28 28 28 28的尺寸 拉长为 1
  • windows安装MSYS2(mingw && gcc)

    一 简介 本文主要介绍如何在windows环境下安装msys环境 二 软件安装步骤 2 1 官网下载 msys官网链接 https www msys2 org 下载完成 2 2 软件安装 根据网页提示选择需要安装的目录 并等待安装完成 安装
  • 区间预测

    区间预测 MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测 目录 区间预测 MATLAB实现QRLSTM长短期记忆神经网络分位数回归多输入单输出区间预测 效果一览 基本介绍 模型描述 程序设计 参考资料 效果一览
  • 【小程序】如何实现一个可折叠的列表

    作者刚接触小程序开发不久 打算用 CSDN 把学习过程中遇到的一些问题记录下来 都是一些浅显易懂的内容 希望对你也有所帮助 如文章标题所示 作者要实现一个可折叠的列表 先来看一下页面效果 这种展示方式的实现非常简单 话不多话 直接上代码 首
  • 用EasySysprep封装Win7系统

    前面我介绍了使用Dism 封装Windows 7系统 不过最后还是没达到我想要的效果 不过经过一番查阅之后 我发现我想要的效果好像没办法简单的使用单一工具达到 我希望做成的效果是类似于Win10 一个ISO镜像内置各种驱动及最新的更新 安装
  • Image size of 512922x322 pixels is too large. It must be less than 2^16 in each direction

    plt figure figsize 10 8 sns regplot x data num y data y marker o ci 95 scatter kws color b alpha 0 2 s 3 fit reg False 线
  • iOS开发环境xcode搭建

    1 到 https developer apple com download 或者在APP store下载 2 下载完成后会在launchpad显示 点击安装
  • python计算机视觉- 相机模型与参数标定

    文章目录 相机投影模型 针孔相机模型 像主点偏移 内参矩阵 畸变现象 畸变矫正 外参矩阵 两类参数 相机标定 线性回归 最小二乘 非线性优化 标定过程 实验过程 MATLAB进行标定 相机投影模型 针孔相机模型 针孔照相机模型是计算机视觉中
  • 我以前的博客在ITEYE上

    我以前的博客 https www iteye com blog user jiasudu 这个是我以前的博客 密码忘记了 就不搬家了 大家可以去看看 主要是十多来年记录ofbiz的资源 可以说是大全
  • 第九站:速学JavaScript中的函数

    js函数 欢迎来到 JavaWeb的奇妙冒险 教学系列 在本站中 我们将深入探索Web开发的精彩世界 在学习的过程中 我们既要保持轻松愉快 又要确保高质量的教学内容 准备好进入第九站的学习之旅了吗 让我们开始吧 文章目录 js函数 介绍 定
  • IDEA 登陆Gitee账户登录不上解决方案

    Mark一个IDEA2021 1连接gitee的bug 点击VCS想要share on Gitee时出现idea loading information for gitee窗口 然后始终连接不上Gitee 可能的解决方案 检查自己的Gite
  • [报错解决]name 'keras_applications' is not defined

    加载模型报错 解决方案 pip install keras applications 1 0 4 no deps pip install keras preprocessing 1 0 2 no deps pip install h5py
  • Python脚本批量造数据、跑定时任务协助测试

    目录 批量造数据 结合python pytest fixture 实现定时任务接口调用 目录结构 定时任务 批量造数据 连接Mysql的信息 1 import pymysql 2 数据库连接信息 3 多个库要有多个conn 4 conn p
  • CVE-2022-23222 Linux Kernel ebpf 权限提升漏洞

    漏洞背景和描述 eBPF extended Berkeley Packet Filter 是一种可以在 Linux 内核中运行用户编写的程序 而不需要修改内核代码或加载内核模块的技术 简单来说eBPF 让 Linux 内核变得可编程化了 由
  • 零基础学习WEB前端开发(六):HTML超链接标签

    一 超链接 二 用法及分类 基本语法 外部链接 内部链接 空连接 下载链接 其他元素链接 锚点链接 一 超链接 HTML使用标签 a 来设置超文本链接 超链接可以是一个字 一个词 或者一组词 也可以是一幅图像 您可以点击这些内容来跳转到新的
  • Generated Knowledge Prompting for Commonsense Reasoning

    本文是知识图谱系列相关的文章 针对 Generated Knowledge Prompting for Commonsense Reasoning 的翻译 常识推理的生成知识提示 摘要 1 引言 2 生成知识提示 3 实验设置 4 实验结果
  • 一个自动将状态机生成代码的软件

    如果你是一个程序员 对状态机应该有一定的了解 甚至会经常使用 使用状态机的时候 一般都是自己设计程序去实现状态机 但 当要维护代码时 就会显得不方便 特别是比较复杂的时候 我幻想着有一个软件 能在图形界面上设计状态图 然后自动生成C C 代
  • 都掏出来了,大学四年珍藏的26个宝藏网站,全部整理好给大家!!!

    文章目录 前言 哔哩哔哩 慕课网 编程学习网站 菜鸟教程 W3cSchool 刷题网站 力扣 牛客网 在线编程模块 CodeTop 赛码网 蓝桥杯ACM刷题网站 实用工具 Processon ioDraw 在线JSON解析 在线进制转换 博

随机推荐

  • Verilog状态机

    状态机定义 有限状态机 Finite State Machine 表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型 有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路 一般来说 除了输入部分和输出部分外 有限状态机
  • java中的多线程、同步代码块、同步方法、锁

    一 java中实现多线程的三种方式 1 继承Thread类的方式进行实现 2 实现Runnable接口的方式进行实现 3 利用Callable接口和Future接口方式实现 1 继承Thread类的方式进行实现 步骤 自定义一个类继承Thr
  • 常见的SQL注入分类

    SQL注入分类 用SQLmap来判断 类别 按 SQLMap 分类SQL 注入类型有以下 5 种 1 UNION query SQL injection 可联合查询注入 2 Stacked queries SQL injection 可多语
  • C++的变量存储类型的生命周期与作用域

    auto类型 非静态的局部变量存储类型都是auto 这些数据存储在栈区 不初始化变量的值时随机的 C 中的auto还可以自动推导类型 生命周期 块内 作用域 块内 程序 include
  • OPT3001光照传感器驱动教学

    OPT3001自学笔记 OPT3001是一款低功耗环境光照度采集IC 之前的项目中有用到这颗芯片 因此在这里给大家分享一下 如果这篇文章刚好能帮到你那就更好了 一 OPT3001的寄存器 单片机是通过IIC协议读写OPT3001的寄存器来控
  • 软件测试基础理论学习记录一

    今天是学习 软件测试 的第一天 由于刚开始的综述比较简单 就一次性把前三章看完了 主要包括软测背景 软件开发过程和软测实质三部分内容 1 软件测试背景 通过几个比较有名的软件错误案例 如Intel奔腾浮点除法缺陷等 引出 软件缺陷 的概念
  • Rust数据结构——排序算法(一)

    Rust数据结构 排序算法 一 0x01 常见的排序算法 排序算法是数据结构中很常见的算法 如果你了解过数据结构 那么对 常见的排序算法有哪些 这个问题的回答都懒得答了 那么我还是来列举下吧 选择排序 插入排序 希尔排序 冒泡排序 快速排序
  • TypeScript 常用的工具类型

    TypeScript 常用的工具类型 总结了常用的工具类型 文章目录 TypeScript 常用的工具类型 Awaited
  • App测试经典面试题及参考答案

    正己守道 厚德载物 App测试面试题及参考答案 最近整理了一些关于App测试的面试题 本参照答案是本人在工作实践中总结 仅代表个人观点 如有错误 请谅解 1 问 说一些你在测试过程中常用到的adb命名 答 回答本问题时 首先不要想到哪个命名
  • Python中的继承

    Python中的继承 文章目录 Python中的继承 继承的概念 一 继承的语法 单继承 多继承 二 子类与父类 1 子类重写父类方法 2 子类调用父类的同名方法和属性 super 调用父类方法 小汇总 结语 继承的概念 面向对象编程 OO
  • NSX-T 架构(3)

    传输节点 Edge 在第一篇我们提到了Edge Edge节点 VMware NSX Edge节点是专用于运行无法分发到管理程序的网络服务的服务设备 它们被分组在一个或多个集群中 代表一个能力池 Edge不是一个干活的实例 它是个池 里面专门
  • 龙书笔记(5)

    今天说下颜色和光照 一 颜色 1 颜色表示 RGB数据可用2种不同的结构表示 1 D3DCOLOR eg D3DCOLOR brightRed D3DCOLOR ARGB 255 255 0 0 四个参数的顺序是 Alpha r g b 2
  • 用户界面的需求分析与设计原则

    一 引言 用户界面是人与计算机之间的媒介 用户通过用户界面来与计算机进行信息交换 因此 用户界面的质量 直接关系到应用系统的性能能否充分发挥 能否使用户准确 高效 轻松 愉快地工作 所以软件的友好性 易用性对于软件系统至关重要 目前国内软件
  • python课程设计——单项选择标准化考试

    功能要求 本系统采用序列或字典保存单个试题 每个数据应当包括 题干 选项 答案等信息 本系统功能 1 试题录入 可以随时添加试题 2 试题抽取 每次从试题库中可以随机抽出N道题 N由键盘输入 3 答题 用户可实现输入自己的答案 4 自动判卷
  • MySQL基础语句

    文章目录 前言 帮助信息 注释 数据库操作类语句 连接数据库 查看数据库列表 展示所有数据库 查询当前数据库叫啥 创建数据库 删除数据库 修改数据库编码格式 使用某个数据库 查看当前数据库下所有数据表 表操作 表的约束 查询表结构 查询某个
  • 看懂低压降稳压器(LDO)一篇就够了

    电源管理是电子系统中的的一个基本模块 智能手机 电脑和我们所熟知的绝大多数电子产品都需要这个模块去实现本身的功能 随着人们对电子产品便携性的追求 计算能力的增长 以及传感器的多样化 电源管理设计有了更高的要求 为了满足新的电源设计上的更高的
  • ctfshow php特性

    web89 要求使用get方式传递数据 intval函数如果数组里有值 就输出1 构造payload num 0 web90 这里使用了 intval num 0 函数调用 其中第二个参数为 0 表示使用合适的进制进行转换 intval 函
  • 巴比特

    摘要 元宇宙变得越来越重要 因为它为企业提供了一种与来自世界各地的用户进行交流和协作的新途径 从小企业到大公司 每个品牌都可以踏入虚拟世界 并从中获益 那么一般的企业如何将业务转移到元宇宙呢 这7个步骤了解一下 热点资讯 Meta 宣布大幅
  • 偏微分方程(Partial Differential Equation II)

    数学物理方法 正交曲面坐标系下的分离变量 球函数 勒让德方程的解 勒让德函数 连带勒让德函数 球谐函数 柱函数 贝塞尔方程的解 贝塞尔函数 球贝塞尔方程 偏微分方程 Partial Differential Equation I 偏微分方程
  • php网页如何适应手机端,PC网页的移动端适配兼容性应该如何实现自动适配

    概念 移动时代的今天 现如今随着智能手机的不断发展 移动端搜索的比例也在不断增加 而传统的PC站点在手机端的用户体验度很差 这容易导致大量用户的流失 所以做一个对应的手机站是非常有必要的前端代码的编写永远逃不过 兼容 二词 从前PC时代 因