别忘记Viewport Meta标签

2023-10-27 20:39
文章标签 meta 标签 别忘记 viewport

本文主要是介绍别忘记Viewport Meta标签,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

http://webdesign.tutsplus.com/zh-hans/articles/quick-tip-dont-forget-the-viewport-meta-tag--webdesign-5972

我还记得我的初次响应式网页设计的经历;我用了经典的网格设计,加入了灵活布局,并第一次用到了media queries。延展和缩小浏览器窗口得到了我想要的响应式设计的效果。之后我在移动设备上测试。完全不起作用 - 我看到的是整个被缩小的页面设计。解决办法最后看来还是很简单的。

提示:这个教程第一次是在2012年2月出版的,但是它经常在其他的教程中被引用,所以我觉得它需要有个更新。

如果在这篇发表中什么都没有读到,接受这一点建议:如果你做灵活布局设计,在你的 <head>标签里使用viewport meta标签。用其最简答的形式,可以让你在多设备布局设计上省点心:

用我自己弄的一个example layout举个例。你会发现页面随着浏览器窗口的大小而伸缩。而且还使用了media query来使字体变大以及在宽屏中显示较亮的#ff333e色。非常棒。

这是在OSX Chrome里的效果:

viewport-chrome-correct

这里是当浏览器窗口变窄之后的样子:

viewport-chrome-squish

现在我们来看一下在智能手机上的效果(这个例子使用的是iPhone 4上的iOS Safari:

viewport-iphone-incorrect

第一个你注意到的就是红色的标题;这个很明显泄漏出我们看的并不是我们希望的窄版的布局。而是一个缩小的版本。

iOS Safari假定一个网页的宽度是980px,缩小页面使之在(iPhone 4) 320px宽度的屏幕上完整显示。这样内容的可读性就变差,除非你在iOS上放大页面。

如假设是所有问题的根源所说,如果你不特别指明的话,移动设备上的浏览器就必须是这样的反应。当你从移动设备上浏览网页的时候,它假设你是浏览得是桌面版的并且你想看到所有的内容,不只是一个左上角。因此,它会把viewport的宽度设置为980px,然后把所有内容硬塞进小的显示屏里。

viewport meta tag是由Apple引入,之后被其他人所采用和继续开发。

它是这样子的:

content=""中,你可以加入很多由逗号做分隔的值,但是现在我们着重在一些基础值上。

举个例子,如果你的移动版设计是基于320px的宽度,你可以指定viewport的宽度:

对于流动式布局来说,基于设备不同来设定的viewport宽度更为实用,所以让你的布局宽度和移动设备宽度相符:

想要更确保你的设计呈现达到你的预期目标,你可以再设置缩放程度。如下例子:

这个保证你的设计在一打开的时候就呈现1:1的比例。不需要设定缩放比例。你可以通过如下方式方式用户改变页面大小:

注意:在应用maximum-scale变量前,要考虑你是否需要防止用户放大页面。他们能读到所有内容吗?

Using the viewport meta tag the wrong way can hinder users with visual problems accessing your website

-  The Accessibility Project

下列的值可以作为我们的默认设定模版:

our example有何影响

viewport-iphone-correct

如你所看到的,所有东西都呈现正确的比例。文本换行而不是缩小,我们的视觉助手(红色标题)消失了。

向在留言中指出这点的Jason表示感谢。当你把你页面布局的宽度设置为设备宽度的时候,你会在设备landscape模式发现问题。请看iPhone 4是如何显示我们的案例的:

RuinedRuined.

浏览为了符合设备的宽度需要,被迫使放大页面。

要解决这个问题,我们可以向Jason指出的那样,使用JavaScript来有条件的选择使用哪个metatag,但是最简单的方法就是整个忽略width。通过只设定initial-scale的值,也相对暗示了宽度的值。这个是我们our new, simplified demo在landscape模式下的样子:

Much betterMuch better.

viewport是Apple解决此问题的方法。之后很快被其它平台所采用,但是W3C一直没有推广它。当Microsoft在IE10里的某些情况下,忽略viewport metatag,这个问题又重新回到大众视线下。但他们使用的正是W3C所支持的CSS Device Adaptation方法,

简短的说,相似的viewport属性在CSS里用the @viewport rule进行定义而不是在HTML里面

或者,依照我们新的don't specify device width的方法,我们可以如下设置:

因为这个还没有完全敲定,IE10要求使用有前缀的版本,看上去是这样的:

这个是比metatag更为简洁的方案。现在先嵌入在你的CSS里面,保证你的流动式布局在IE10的”snap mode“里正常工作,然后关注这个方案的动向。这个是viewport以后的趋势。

你可以从 Tim Kadlec的文章中读到更多IE10 Snap Mode and Responsive Design。

流动式的网页布局设计不仅仅是给那些喜欢调整他们浏览器大小的人所用的,它为的是能满足不同设备,屏幕和分辨率的需要!当你在做流动式设计的时候,在你的<head>里加入viewport meta标签,并且在CSS里面设定@viewport的准则,你就万事无忧了。

  • Apple documentation: Using the Viewport Meta Tag
  • Mozilla: Using the viewport meta tag to control layout on mobile browsers
  • quirksmode.org: A tale of two viewports
  • w3.org Mobile Web Application Best Practices: Use Meta Viewport Element To Identify Desired Screen Size
  • Quick Tip: Never use maximum-scale=1.0 on the A11y Project
  • Tim Kadlec explains IE10 Snap Mode and Responsive Design
  • The @viewport rule proposal

这篇关于别忘记Viewport Meta标签的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/288240

相关文章

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Maven pom.xml文件中build,plugin标签的使用小结

《Mavenpom.xml文件中build,plugin标签的使用小结》本文主要介绍了Mavenpom.xml文件中build,plugin标签的使用小结,文中通过示例代码介绍的非常详细,对大家的学... 目录<build> 标签Plugins插件<build> 标签<build> 标签是 pom.XML

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

python解析HTML并提取span标签中的文本

《python解析HTML并提取span标签中的文本》在网页开发和数据抓取过程中,我们经常需要从HTML页面中提取信息,尤其是span元素中的文本,span标签是一个行内元素,通常用于包装一小段文本或... 目录一、安装相关依赖二、html 页面结构三、使用 BeautifulSoup javascript

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

Spring下自定义xml标签

dubbo自定义了很多xml标签,例如<dubbo:application>,那么这些自定义标签是怎么与spring结合起来的呢?我们先看一个简单的例子。 一 编写模型类 1 package com.hulk.testdubbo.model;2 3 public class Hero {4 private String name;5 private int

Struts2常用标签总结--转载

Struts2常用标签总结 一 介绍 1.Struts2的作用 Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,多变的需求。 Struts2的标签库有一个巨大的改进之处,struts2标签库的标签不依赖于