HTML5 移动页面自适应手机屏幕四类方法

2023-10-27

1、使用meta标签:viewport

H5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。

viewport 是用户网页的可视区域。翻译为中文可以叫做"视区"。

手机浏览器是把页面放在一个虚拟的"窗口"(viewport)中,通常这个虚拟的"窗口"(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。

viewport标签极其属性:

<meta name="viewport" content="width=device-width,initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no"/>

每个属性的详细介绍:

属性名 取值 描述
width 正整数 或 device-width 定义视口的宽度,单位为像素
height 正整数 或 device-height 定义视口的高度,单位为像素,一般不用
initial-scale [0.0-10.0] 定义初始缩放值
minimum-scale [0.0-10.0] 定义缩小最小比例,它必须小于或等于maximum-scale设置
maximum-scale [0.0-10.0] 定义放大最大比例,它必须大于或等于minimum-scale设置
user-scalable yes/no 定义是否允许用户手动缩放页面,默认值yes

2、使用css3单位rem

rem是CSS3新增的一个相对单位(root em,根em),使用rem为元素设定字体大小时,是相对大小,但相对的只是HTML根元素。通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

目前,除了IE8及更早版本外,所有浏览器均已支持rem。对于不支持它的浏览器多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。下面就是一个例子:

p {font-size:14px; font-size:.875rem;}

默认html的font-size是16px,即1rem=16px,如果某div宽度为32px你可以设为2rem。

通常情况下,为了便于计算数值则使用62.5%,即默认的10px作为基数。当然这个基数可以为任何数值,视具体情况而定。设置方法如下:

Html{font-size:62.5%(10/16*100%)}

具体不同屏幕下的规则定义,即基数的定义方式:可以通过CSS定义,不同宽度范围里定义不同的基数值,当然也可以通过js一次定义方法如下:

<script type="text/javascript">
   (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 / 320) + 'px';//其中“20”根据你设置的html的font-size属性值做适当的变化
        };

      if (!doc.addEventListener) return;
      win.addEventListener(resizeEvt, recalc, false);
      doc.addEventListener('DOMContentLoaded', recalc, false);
    })(document, window);
</script>

3、使用媒体查询

媒体查询也是css3的方法,我们要解决的问题是适应手机屏幕,这个媒体查询正是为解决这个问题而生。

媒体查询的功能就是为不同的媒体设置不同的css样式,这里的“媒体”包括页面尺寸,设备屏幕尺寸等。

例如:如果浏览器窗口小于 500px, 背景将变为浅蓝色:

@media only screen and (max-width: 500px) {
    body {
        background-color: lightblue;
    }
}

4、使用百分比

百分比指的是父元素,所有百分比都是这样的。子元素宽度50%,那么父元素的宽度就是100%;

所以body默认宽度是屏幕宽度(PC中指的是浏览器宽度)子孙元素按百分比定位(或指定尺寸)就可以了,这只适合布局简单的页面,复杂的页面实现很困难。

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

HTML5 移动页面自适应手机屏幕四类方法 的相关文章

  • 禁用页面的浏览器打印选项(页眉、页脚、边距)?

    我在 SO 和其他几个网站上看到过以几种不同的方式提出这个问题 但大多数都太具体或过时了 我希望有人能在这里提供明确的答案 而不是迎合猜测 当有人在浏览器中打印时 有没有办法使用 CSS 或 javascript 更改默认打印机设置 当然
  • CSS 停止表格行内的分页符

    我试图避免在可能超过一页的 HTML 表的行内出现分页符 我正在使用 Internet Explorer 打印预览以及 BCL EasyPDFSDK 转换为 PDF 来测试这一点 我将以下 CSS 样式以各种组合应用到 td 元素 但对于每
  • 如何使用 D3 (或只是 javascript)将表单选项设置为“选择”

    有没有一种方法可以搜索选择表单元素中的所有选项 并将具有匹配值的选项指定为 已选择 var xStat G var statOptions Points PTS Goals G Assists A Penalty Minutes PIM c
  • 将 matplotlib png 转换为 base64 以在 html 模板中查看

    背景 你好 我正在尝试制作一个简单的网络应用程序 按照教程计算阻尼振动方程 并将结果的 png 返回到 html 页面 然后将其转换为 Base64 字符串 Problem 该应用程序运行正常 只是在计算结果时返回损坏的图像图标 可能是因为
  • 提交按钮具有 name 属性是否可以接受?

    通常 提交按钮可以正常工作 无需name属性 然而 有时同一个表单需要有两个提交按钮 因此需要使用name属性来识别在服务器端单击了哪个按钮 为了澄清我正在谈论
  • IE 9 的子元素不透明,我无法使用 captify 阻止它

    好的 我正在使用一段名为 Captify 的 javascript 它为您的图像添加了一个带有文本的小弹出窗口 适用于所有接受 IE9 的浏览器 IE9 会淡化弹出 div 中的所有内容 我已阅读其子元素问题 但无法修复它 由于在网上任何地
  • Typeahead.js 干扰 Bootstrap 输入组

    如何防止 Typeahead js 拆分我的 Twitter Bootstrap 3 输入组 每当我将 Typeahead javascript 指向属于输入组一部分的文本区域时 连接的文本区域和提交按钮就会停止连接 这只是 Typeahe
  • HTML if 语句在 CDN 失败时加载本地 JS/CSS

    当从 CDN 或任何外部服务器加载 CSS JS 文件时 有可能 即使概率很低 由于外部故障而丢失该文件 在这种情况下 html 页面将因缺乏适当的 CSS 和 JS 而被损坏 有没有一种实用的方法可以在 CDN 故障时加载本地版本 IF
  • 正确缩放 Javascript Canvas 游戏

    我正在尝试根据屏幕尺寸动态缩放画布游戏 我了解如何根据屏幕尺寸调整画布大小 但我也想调整内容大小 基本上我希望游戏在每台设备上看起来都一样 我目前遇到的问题是 当拥有 4k 屏幕的人玩游戏时 他们可以轻松看到整个地图 当有人的屏幕非常小时
  • 显示页面的背景颜色并将文本居中对齐

    我们的页面如下所示 link http websi career我们想要这样显示 1 我们需要显示文本和textfields在中心 2 我们需要为页面的某些部分添加背景颜色 career page box page title margin
  • 使用javascript隐藏html元素

    JavaScript function hide article var htmlElement document getElementsByTagName article 0 htmlElement setAttribute visibi
  • jQuery 无法在外部 JavaScript 中工作

    我是 jQuery 新手 遇到了一些奇怪的问题 我正在使用 jQuery 的change and click方法 在我的 HTML 文件中使用时它们工作正常
  • 如何将水平 ul 列表中的项目与图像垂直对齐?

    我有以下 html 代码 div ul li a href index php site login About a li li a href index php site login FAQ a li li a href http twi
  • Video.js - 阻止点击播放功能

    我正在使用 video js 将视频嵌入到 HTML 页面中 它将用作仅适用于 ipad 的 Web 应用程序 因此我相信它使用的是本机 HTML5 播放器 我正在尝试禁用点击播放功能 以便用户必须使用控件 但我在这样做时遇到了麻烦 我尝试
  • 如何正确转义 HTML 属性中的引号?

    我在网页上有一个下拉菜单 当值字符串包含引号时 该下拉菜单会损坏 其值为 asd 但在 DOM 中它始终显示为空字符串 我已经尝试了所有我知道的方法来正确转义字符串 但无济于事
  • 元素上的框阴影行为

    Update 在我提交错误报告后 https bugs chromium org p chromium issues detail id 763337 https bugs chromium org p chromium issues de
  • 如何像在浏览器中一样检索准确的 HTML

    我正在使用 Python 脚本来呈现网页并检索其 HTML 它适用于大多数页面 但对于其中一些页面 检索到的 HTML 不完整 我不太明白为什么 这是我用来废弃此页面的脚本 由于某种原因 每个产品的链接不在 HTML 中 Link http
  • 如何链接到具有特定经度和纬度的 Google 地图?

    我有一个小应用程序 可以提供当前位置 经度和纬度 现在我必须浏览带有经度和纬度的谷歌地图 请建议我如何做到这一点 最好的方法是使用q参数 以便显示带有标记点的地图 例如 https maps google com q
  • 仅使用 CSS 向电话号码添加空格

    我有一个生成 HTML 电话号码的页面 如下所示 div class phone 01987123456 div 我想要的只是在数字内添加一个空格 如下所示 01987 123456 生成的数字和 HTML 始终相同 但我只能访问客户端代码
  • 将水平线添加到 html rmarkdown 文档隐藏文本部分

    我正在制作一个与 HTML 页面结合的 Rmarkdown 文档 我不想用标题或项目符号分隔某些文本部分 而是想在它们之间绘制水平线 根据http rmarkdown rstudio com authoring basics html ht

随机推荐

  • Vmstat基础使用

    Vmstat https www cnblogs com ggjucheng archive 2012 01 05 2312625 html vmstat展示信息
  • 20201020关于List<Map>的过滤 和 求和 BigDecimal的注意点

    过滤出符合条件的数据 List
  • J2EE学习中一些值得研究的开源项目

    原文地址 http java csdn net a 20100127 258561 html 这篇文章写在我研究J2SE J2EE近三年后 前3年我研究了J2SE的Swing Applet Net RMI Collections IO JN
  • 官方Xcode及模拟器SDK下载

    如果你嫌在 App Store 下载 Xcode 太慢 你也可以选择从网络上下载 Xcode下载 Beta版打的包是不能提交到App Store上的 绝对官方源 绝对官方源 绝对官方源 不能确定自己的 Xcode 是否有问题 简单的一条命令
  • win10网络重置后果很严重(联想电脑)

    1 win的网络重置功能 2 重置后是这样的 啥都没有 更别说联网了 我不知道是不是只有联想才会这样 本来在网络连接有好动东西 现在啥都没有 看了好多博客 都没有解决问题 好多人都重装系统了 3 如果你是联想电脑 系统重装也没有用 以前朋友
  • 解决Docker镜像国内无法下载问题

    近期由于docker镜像仓库禁止国内下载 国内各平台均无法下载更新最新docker镜像 为解决此问题 大家可以使用dockerproxy代理下载 使用方法 大家只需打开docker proxy代理网站 在快捷命令中输入所需镜像和版本 点击
  • Django_xAdmin项目(三)之xAdmin进阶开发

    替换django xadmin自带的users模块 1 xadmin gt plugins gt auth py 加载替换系统user的方法 from django contrib auth import get user model 替换
  • 构建统一CIM数字底盘,实现基于BIM的全流程管控

    2009年 SuperMap发布了首款二三维一体化GIS软件 首次提出了二三维一体化GIS技术 随后 二三维一体化的应用系统不断涌现 二三维一体化技术逐步成为三维GIS发展和研究的主流 2017年 SuperMap在二三维一体化 GIS 技
  • 数据结构视频教程 -《[中山大学]算法与数据结构(C语言版)[胡青主讲]》

    整个视频打包下载地址 史上最全的数据结构视频教程系列分享之 中山大学 算法与数据结构 C语言版 胡青主讲 转载请保留出处和链接 更多优秀资源请访问 我是码农 本课程由中山大学胡青老师主讲 非常精彩 数据结构是计算机科学中的重要学科 也是计算
  • WebRTC之VAD算法

    我的书 购买链接 京东购买链接 淘宝购买链接 当当购买链接 VAD Voice Activity Detection 算法的作用是检测语音 在远场语音交互场景中 VAD面临着两个难题 1 可以成功检测到最低能量的语音 灵敏度 2 如何在多噪
  • BS作业 基于springboot + Thymeleaf +mybatis 实现的书城管理系统

    一 项目背景 项目描述 一个基本功能较为完整的后台管理项目 项目主要功能有 登录验证 登录功能还加入了随机验证码的验证 用户注册 注册中密码基于srping 安全框架提供的加密 自动加盐 的密码储存方式 对注册重名进行了处理 密码重置 修改
  • matlab面向对象排序,MATLAB面向对象编程——从入门到设计模式

    第1 部分面向对象编程初级篇 第1 章面向过程和面向对象程序设计 1 1 什么是面向过程的编程 1 2 什么是面向对象的编程 1 2 1 什么是对象 Object 1 2 2 什么是类 Class 1 2 3 什么是统一建模语言 UML 1
  • nvcc编译器之编译选项(chapter 4)

    目录 4 NVCC编译选项 4 1 命令选项类型和符号 4 2 命令选项描述 4 NVCC编译选项 4 1 命令选项类型和符号 每个nvcc选项都有一个长名称和一个短名称 它们之间可以相互替换 这两种选项的区别在于选项名称前面连字符 号 的
  • 基于javaweb+mysql的音乐网站音乐平台(java+Springboot+ssm+mysql+maven+jsp)

    一 项目简述 功能 用户管理模块 用户登录 用户注册 修改密码 榜单列表模块 动态地从数据库中获取歌曲的链接和数据 在榜单中显示 歌曲搜索模块 在首页的搜索框中可以输入关键字进行歌 曲的模糊搜索 歌曲收藏模块 在榜单列表中或搜索页面中可以点
  • Java和Python一些处理sql方式总结

    将查询结果导入csv文件中 public static int executeUpdate String sql Object param 创建一个PreparedStatement对象用来操作数据库 PreparedStatement p
  • TensorFlow之CNN图像分类及模型保存与调用

    本文主要通过CNN进行花卉的分类 训练结束保存模型 最后通过调用模型 输入花卉的图片通过模型来进行类别的预测 测试平台 win 10 tensorflow 1 2 数据集 http download tensorflow org examp
  • Python学习笔记(六):数据类型之 List

    序列是 python 中最基本的数据类型 序列中的每个元素都分配一个索引 索引从 0 开始 python 有六个序列的内置类型 最常见的是列表和元祖 序列都可以进行的操作 包括索引 切片 加 乘 检查成员 此外 python 已经内置确定序
  • 【华为OD机试真题 Python语言】102、简单的解压缩算法

    文章目录 一 题目 题目描述 输入输出 样例1 二 思路参考 三 代码参考 作者 鲨鱼狼臧 个人博客首页 鲨鱼狼臧 专栏介绍 2023华为OD机试真题 使用Python进行解答 专栏每篇文章都包括真题 思路参考 代码分析 订阅有问题后续可与
  • 单片机是什么?是做什么用的?

    简单的说单片机就是一个智能控制芯片 它是将计算机微型化的CPU 所以只要你会它的语言 就可以让它按着我们自己的想法来自由工作 这是其它任何一种芯片都无法替代的 所以一块芯片由于具备了这样一种类似计算机的强大功能 所以被多数设备大量使用 最为
  • HTML5 移动页面自适应手机屏幕四类方法

    1 使用meta标签 viewport H5移动端页面自适应普遍使用的方法 理论上讲使用这个标签是可以适应所有尺寸的屏幕的 但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统 viewport 是用户网页的可视区域 翻