经常查看网页源码的同学应该都有注意到,基本上面向移动端的所有网站都有个 <meta name="viewport" xxx> 这样的HTML元素。

为什么需要 meta 标签?

在移动端刚起步的时候,默认网页是以 PC 端的宽度渲染,这就导致用户看到的网页过小,需要用户手动缩放才能看到网页内容。

在移动端发展过程中,标准逐渐完善,就演变出了 meta 标签的视口设置,用于控制移动端页面的显示大小,以及是否允许缩放等。

meta 标签的视口设置

一个完整的视口设置应该包含以下信息:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=5.0, minimum-scale=0.5, user-scalable=yes">
  • width=device-width:设置视口宽度为设备宽度,表示与设备屏幕宽度相同。
  • initial-scale=1.0:设置初始缩放比例,页面加载时显示的缩放比例,不放大也不缩小。
  • maximum-scale=5.0:设置最大缩放比例,用户可以缩放到的最大倍数。
  • minimum-scale=0.5:设置最小缩放比例,用户可以缩放到的最小倍数。
  • user-scalable=yes:设置是否允许用户缩放,yes 表示允许缩放。

禁止用户缩放:

部分需求场景,比如一些游戏类网站,需要禁止用户缩放,可以这样设置:

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

固定视口宽度(特殊场景):

<meta name="viewport" content="width=600">

强制视口宽度为 600px,适合固定尺寸的页面(非响应式设计)

自由缩放查看内容:

如果网页没有特殊要求,建议设置为允许用户自由缩放查看内容:

<meta name="viewport" content="width=device-width, initial-scale=1">

meta 标签其他用法

meta 标签的功能可强大了,好多好多的网页元信息都可以通过它设置。

字符编码声明

<meta charset="utf-8">

此标签用于声明网页的字符编码,一般使用 utf-8 编码。如果声明的字符编码与网页内容编码不一致,可能会导致乱码。

页面自动刷新或跳转

<!-- 5秒后刷新当前页面 -->
<meta http-equiv="refresh" content="5"> <!-- 3秒后跳转到百度 -->
<meta http-equiv="refresh" content="3; url=https://www.baidu.com">

使用此标签刷新当前页面需特别注意死循环导致页面不停刷新。

SEO 优化

<title>页面标题</title>
<meta name="description" content="页面描述">
<meta name="keywords" content="关键词1,关键词2,关键词3">

这三兄弟通常称为网页的 TDK,搜索引擎爬虫会根据 TDK 来判断网页内容,然后进行收录,在需要 SEO 优化的网页,一定要把 TDK 设置好。

当然也可以设置禁止搜索引擎收录:

<!-- noindex: 禁止索引本页
nofollow: 禁止跟踪本页链接
noarchive: 禁止显示快照 -->
<meta name="robots" content="noindex, nofollow">

Open Graph 协议设置

用于设置在社交平台分享时的标题、描述和缩略图等信息。

<meta property="og:title" content="文章标题">
<meta property="og:description" content="文章简介">
<meta property="og:image" content="https://example.com/xxxx.jpg">
<meta property="og:url" content="https://example.com/page-url">

还有针对 Twitter 分享卡片的设置,国内用的较少,毕竟有墙~~

<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:site" content="@Twitter用户名">
<meta name="twitter:title" content="推文标题">
<meta name="twitter:description" content="推文描述">
<meta name="twitter:image" content="https://example.com/xxx.jpg">

针对 IE

强制 IE 使用最新渲染引擎

<meta http-equiv="X-UA-Compatible" content="IE=edge">

内容安全策略

<!-- 禁止内容混合加载(HTTP/HTTPS 混合内容) -->
<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">

此部分内容配置很强大的,不止这一种写法,有兴趣可以参考 MDN 相关文档,可配置复杂的 CSP(内容安全策略),防止 XSS 攻击。

Android Chrome 主题色

设置浏览器地址栏或 PWA 应用的主题颜色。

<meta name="theme-color" content="#000000">

iOS Safari 独有配置

<!-- 启用 Web App 模式(全屏、隐藏浏览器UI) -->
<meta name="apple-mobile-web-app-capable" content="yes"> <!-- 定义状态栏样式 -->
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> <!-- 指定启动图标 -->
<link rel="apple-touch-icon" href="/icon.png">

禁止电话号码自动识别

有时候一串数字并不是一个电话号码,在移动端也会被错误的识别为号码,导致影响用户体验,可以使用 meta 标签禁止电话号码识别。

<meta name="format-detection" content="telephone=no">

禁止邮箱自动识别

<meta name="format-detection" content="email=no">

优先使用 HTTPS

将页面内的 HTTP 请求自动升级为 HTTPS。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

写在最后

元标签(meta)标签在开发中经常会使用到,本文中都可能没列举全,也许您在某些场景中还用到了其他类型的 meta 标签用法,欢迎留言补充~~

Web前端入门第 51 问:移动端适配的视口元标签(meta)常见使用场景的更多相关文章

  1. web前端入坑第五篇:秒懂Vuejs、Angular、React原理和前端发展历史

    秒懂Vuejs.Angular.React原理和前端发展历史 2017-04-07 小北哥哥 前端你别闹 今天来说说 "前端发展历史和框架" 「前端程序发展的历史」 「 不学自知, ...

  2. Android零基础入门第51节:进度条ProgressBar

    原文:Android零基础入门第51节:进度条ProgressBar 不知不觉这已经是第51期了,在前面50期我们学了Android开发中使用频率非常高的一些UI组件,当然这些组件还不足够完成所有AP ...

  3. Web前端开发最佳实践(5):正确闭合HTML标签,停止使用不标准的标签和属性

    正确闭合HTML标签 HTML元素的内容模型定义了元素的结构,表明元素可以包含哪些内容以及元素可以有哪些属性.元素可以包含的内容包括其他元素和字符,但是也有一些元素是空元素,即不能包含任何内容,这些元 ...

  4. web前端入坑第二篇:web前端到底怎么学?干货资料! 【转】

    http://blog.csdn.net/xllily_11/article/details/52145172 版权声明:本文为博主[小北]原创文章,如要转载请评论回复.个人前端公众号:前端你别闹,J ...

  5. web前端 在react中使用移动端事件,学习笔记

    一  移动端事件的使用:           onTouchStartCapture        onTouchStart           onTouchMoveCapture       on ...

  6. 关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  7. 网站静态化处理—web前端优化—上

    网站静态化处理—web前端优化—上(11) 网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是 ...

  8. 网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  9. 【转】关于大型网站技术演进的思考(十九)--网站静态化处理—web前端优化—上(11)

    网站静态化处理这个系列马上就要结束了,今天我要讲讲本系列最后一个重要的主题web前端优化.在开始谈论本主题之前,我想问大家一个问题,网站静态化处理技术到底是应该归属于web服务端的技术范畴还是应该归属 ...

  10. Web前端新手想提升自身岗位竞争力,需做好这3件事!

    Web前端开发行业的发展前景毋庸置疑,只要是互联网企业,几乎都需要Web前端开发工程师.虽然Web前端入行门槛低,但竞争逐渐激烈,想要取得高薪,就一定要具备强大的实力.那么,在重庆Web前端培训学习中 ...

随机推荐

  1. ABB机器人维修I/O通信详细解释

    信号解析的深度探索与解析 在ABB机器人维修系统那精密而复杂的运作机制中,I/O(Input/Output)信号与外围机械手间的通信,是通过一种既高度组织化又精心设计的层次结构来实现的.这一结构严格遵 ...

  2. CDH - [01] 概述

    一.什么是CDH   CDH是Cloudera's Distribution Including Apache Hadoop的缩写,即Cloudera公司发布的Hadoop发行版.它是一个为Hadoo ...

  3. 基于Maxmspjitter的基础【pixel shader】绘制模板Patcher

    间断性接触Maxmspjitter已经有6个年头了,是时候总结一些常用的.基础的知识以及它的应用,不过笔者自认为还是处于初学者阶段,望高人多多指教. 开始 这一次就以jitter模块中通用处理图像节点 ...

  4. P4118 [Ynoi2018] 末日时在做什么?有没有空?可以来拯救吗?

    YNOI 智慧题 EasyVer1 [Ynoi Easy Round 2015] 世上最幸福的女孩 EasyVer2 小白逛公园 先看 EasyVer2 单点修改 区间查询最大子段和 考虑在线段树维护 ...

  5. gitee如何删除仓库

    进入仓库的管理页面点击删除

  6. golang gin框架使用swagger生成接口文档

    前言 一份清晰明了的接口文档能够极大地提高前后端双方的沟通效率和开发效率. 本文将介绍如何使用swagger生成接口文档. swagger介绍 Swagger本质上是一种用于描述使用JSON表示的RE ...

  7. DVWA靶场学习

    暴力破解Brute Force low 输入密码就正常抓包放字典破解得了 uploading-image-528180.png medium 同样的操作发现响应速度变慢了,但是还是能暴力破解,不多说了 ...

  8. Oracle11g的SGA和PGA设置为多大最合适?

    Oracle官方文档推荐: MEMORY_TARGET=物理内存 x 80% MEMORY_MAX_SIZE=物理内存 x 80% 对于OLTP系统:  SGA_TARGET=(物理内存 x 80%) ...

  9. MYSQL架构介绍

    专栏持续更新中- 本专栏针对的是掌握MySQL基本操作后想要对其有深入了解并且有高性能追求的读者. 第一篇文章主要是对MySQL架构的主要概括,让读者脑海中有个对MySQL大体轮廓,很多地方没有展开细 ...

  10. 【教程】Anaconda安装

    零.Anaconda介绍 Anaconda个人版是一个免费.易于安装的包管理器.环境管理器和Python发行版(所以装了Anaconda就可以不用再另外装Python了),有提供非常多的开源包,用An ...