视口

理解视口与响应式网页设计
视口是网页在不同设备上的虚拟容器,电脑端通常为980px,手机端宽度各异。设备独立像素是手机物理宽度,逻辑像素在电脑和手机中不等价。为避免压缩,可通过设置meta标签`<meta name=viewport content=width=device-width>`使网页自适应设备宽度。此方法确保网页在不同设备上显示一致。

何为视口,视口就是电脑端和手机端盛放网页的虚拟容器。

当我们在开发网页的时候,不可避免地会遇到同一网页在不同设备显示不同的情况。在电脑端全屏显示,但到不同的手机上就会出现显示的字体,图片的大小不同。因为电脑的虚拟容器的宽度是980px,这个宽度因为历史原因,一直固定在这个数。而不同型号的手机不一样,宽度一般都在三四百作业。此时,存放网页的虚拟容器就会被压缩,网页的内容在手机端就会比电脑端的小。

手机设备的宽度叫做设备独立像素,这个宽度是我们现实生活所接触到的宽度,是物理硬件的宽度。手机显示内容的发光点叫做物理像素,也叫物理分辨率,这个在开发网站时不做关心。在我们写css代码时,里面规定宽度的像素叫做逻辑像素。在电脑端,1个逻辑像素 等于 1个物理像素,但是在手机端,两者大小并不等同。

盛放网页的虚拟容器的宽度取决于手机的宽度,即设备独立像素,当一个在电脑宽度为980px的网页放到宽度375px的手机上时,就会按980:375的比例压缩。这个过程中,逻辑像素没有改变,由于电脑和手机在同一水平线上的发光点不同,所以物理像素也就不同,此时逻辑像素和物理像素不同。

如果我们不想让容器被压缩,我们要怎么做呢?我们可以设置这个虚拟容器的宽度。当这个虚拟容器的宽度既比电脑端小,又不比手机端的大,那么无论在哪个设备上显示,都不需要进行压缩。在编写代码的时候,添加这样一行代码<meta name="viewport" content="width=device-width">,就可以实现网页显示内容大小一样的效果。

### CSS 单位(Viewport Units)和相关属性 CSS 中的单位是一种基于浏览器大小的相对单位,适用于响应式设计。它们包括 `vw`、`vh`、`vmin` 和 `vmax`。 - **`vw`(viewport width)**:1vw 等于宽度的 1%。例如,如果宽度为 1000px,则 1vw 等于 10px。 ```css .element { font-size: 5vw; /* 字体大小为宽度的5% */ } ``` - **`vh`(viewport height)**:1vh 等于高度的 1%。例如,如果高度为 800px,则 1vh 等于 8px[^1]。 ```css .element { height: 50vh; /* 元素高度为高度的50% */ } ``` - **`vmin`(viewport minimum)**:1vmin 等于宽度和高度中较小值的 1%。例如,如果宽度为 400px,高度为 800px,则 1vmin 等于 4px[^1]。 ```css .element { width: 20vmin; /* 元素宽度为较小边的20% */ } ``` - **`vmax`(viewport maximum)**:1vmax 等于宽度和高度中较大值的 1%。例如,如果宽度为 400px,高度为 800px,则 1vmax 等于 8px[^1]。 ```css .element { height: 30vmax; /* 元素高度为较大边的30% */ } ``` 此外,CSS 还提供了一些与相关的属性,例如 `@viewport` 和 `meta viewport` 标签: - **`@viewport`**:用于控制的行为,尤其在移动设备上。它允许设置的宽度、缩放比例等。 ```css @viewport { width: device-width; zoom: 1.0; } ``` - **`<meta viewport>`**:在 HTML 中定义的行为,通常用于移动设备优化。 ```html <meta name="viewport" content="width=device-width, initial-scale=1.0"> ``` 这些单位和属性可以帮助开发者创建更具响应性的布局,尤其是在不同设备和屏幕尺寸上[^1]。 ### 单位的应用场景 - **全屏布局**:使用 `vh` 和 `vw` 可以轻松创建全屏元素,例如全屏背景或标题。 - **响应式字体大小**:通过 `vw` 单位调整字体大小,使文字在不同屏幕尺寸下保持合适的比例。 - **动态高度和宽度**:根据大小调整元素的尺寸,确保布局的灵活性和适应性。 ### 示例代码 以下是一个使用单位的简单示例: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> .full-screen { height: 100vh; width: 100vw; background-color: lightblue; display: flex; justify-content: center; align-items: center; font-size: 5vw; } </style> </head> <body> <div class="full-screen">Hello, Viewport!</div> </body> </html> ``` 在这个示例中,`.full-screen` 类使用 `vh` 和 `vw` 单位来确保元素始终占据整个,并且字体大小根据宽度进行调整。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值