文章目录

  • 一、vw、vh、vmin、vmax
    • 1.1 vw、vh、vmin、vmax 的含义
    • 1.2 vw、vh 与 % 百分比的区别
    • 1.3 vmin、vmax 用处
    • 1.4 vmin 和 vmax
    • 1.5 应用示例:实现 Word 文档页面效果
  • 二、ex 和 ch
  • 三、拓展阅读

一、vw、vh、vmin、vmax

1.1 vw、vh、vmin、vmax 的含义

(1)vw、vh、vmin、vmax 是一种视窗单位,也是相对单位。它相对的不是父节点或者页面的根节点。而是由视窗(Viewport)大小来决定的,单位 1,代表类似于 1%

视窗(Viewport)是浏览器实际显示内容区域,换句话说是不包括工具栏和按钮的网页浏览器。

(2)具体描述如下:

  • vw:视窗宽度的百分比(1vw 代表视窗的宽度为 1%);
  • vh:视窗高度的百分比;
  • vmin:当前 vwvh 中较小的一个值;
  • vmax:当前 vwvh 中较大的一个值;

(3)基本说明

长度单位 作用(特性)
px 页面按精确像素展示 (绝对单位)
em 基准点为父节点字体的大小 (相对单位)
rem 相对根节点Html字体大小来计算,常在移动端应用 (相对单位)
% 是相对于父元素的大小设定的比率 (相对单位)
vw 视窗宽度的百分比,(1vw 代表视窗的宽度为 1%) (视窗单位)
vh 视窗高度的百分比,(1vh代表视窗高度的1%) (视窗单位)
vmin 当前 vw 和 vh 中较小的一个值( 视窗单位)
vmax 当前 vw 和 vh 中较大的一个值 (视窗单位)

1.2 vw、vh 与 % 百分比的区别

  • % 是相对于父元素大小设定的比率,vw、vh 是视窗大小决定的。
  • vw、vh 优势在于能够直接获取高度,而用 % 在没有设置 body 高度的情况下,是无法正确获得可视区域的高度的,所以这是挺不错的优势。

1.3 vmin、vmax 用处

做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。

由于 vminvmax 是当前较小的 vwvh 和当前较大的 vwvh。这里就可以用到 vminvmax。使得文字大小在横竖屏下保持一致。

1.4 vmin 和 vmax

在前期博文中,我们讲解了vhvm的相关知识,vhvm总是与视口的高度和宽度有关,与之不同的,vminvmax是与这次宽度和高度的最大值或最小值有关,取决于哪个更大和更小。

例如,如果浏览器设置为1100px宽、700px高,1vmin会是7px,1vmax为11px。然而,如果宽度设置为800px,高度设置为1080px,1vmin将会等于8px而1vmax将会是10.8px。

应用场景

当需要一个总是在屏幕上可见的元素。使用高度和宽度设置为低于100的vmin值将可以实现这个效果。例如,一个正方形的元素总是至少接触屏幕的两条边可能是这样定义的:

.box {height: 100vmin;width: 100vmin;
}


如果你需要一个总是覆盖可视窗口的正方形(一直接触屏幕的四条边),使用相同的规则只是把单位换成vmax

.box {height: 100vmax;width: 100vmax;
}

这些规则的组合提供了一个非常灵活的方式,用新的、令人兴奋的方式利用可视窗口的大小。

1.5 应用示例:实现 Word 文档页面效果

实现效果:
(1)使用 vh 单位,我们可把 web 页面做得像 Office 文档那样,一屏正好一页。改变浏览器窗口尺寸,每页的大小也会随之变化。
(2)拖动滚动条,我们可以一直往下看到最后一页。

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title>hangge.com</title><script type="text/javascript" src="js/jquery.js"></script><style>html, body, div, span, button {margin: 0;padding: 0;border: 0;}body {}page {display: block;height: 98vh;width: 69.3vh;margin: 1vh auto;padding: 12vh;border: 1px solid #646464;box-shadow: 0 0 15px rgba(0,0,0,.75);box-sizing: border-box;position: relative;}page:after {content: attr(data-page);color: graytext;font-size: 12px;text-align: center;bottom: 4vh;position: absolute;left: 10vh;right: 10vh;}a {color: #34538b;font-size: 14px;}</style><script type="text/javascript">$(document).ready(function(){var lenPage = $("page").length;//自动添加每页底部的页码$("page").each(function(i){$(this).attr("data-page", "第 "+ (i+1) +" 页,共 "+ lenPage +" 页");});});</script></head><body><page><a href="http://hangge.com">欢迎访问 hangge.com</a></page><page></page><page></page></body>
</html>

二、ex 和 ch

exch单位,与emrem相似,依赖于当前字体和字体大小。然而,与emrem不同的是,这两个单位也依赖于font-family,因为它们被定为基于特殊字体的法案

ch单位基本概念是,给定一个等宽字体的字体,一个N个字符单位宽的盒子,比如width:40ch;,可以一直容纳一个有40个字符的应用那个特定字体的字符串。虽然这个特殊规则的传统用途与列出盲文有关,但是这里创造性的可行性一定会超越这些简单的用途。

ex单位被定义为"当前字体的x-height或者一个em的一半"。给定字体的x-height是指那个字体小写x的高度。通常,这是这个字体的中间标志。

对于这种单位有很多的用途,大多数是用于排版的微调。例如,sup元素,代表上标,可以用相对定位和一个1ex的底部值在行内被推高。类似地,你可以拉低一个下标元素。浏览器默认支持这些利用上标和下标特性的vertical-align规则,但是如果你想要更精细的控制,你可以像这样更明确的处理样式:

sup {position: relative;bottom: 1ex;
}
sub {position: relative;bottom: -1ex;
}

ex单位在CSS1中已经存在,但是你不会找到对ch单位有像这样坚实的支持。

三、拓展阅读

  • 《Vue进阶(幺柒幺):前端用户体验提升(五)Flex实现弹性布局》

  • caniuse官网

  • 《网站开发进阶(六十七)浅谈css中hsl()和hsla()设置颜色值的方法与应用》

  • 《Vue进阶(幺柒陆):CSS预编译语言Sass、Scss、Less和Stylus》

  • 《Vue进阶(幺柒柒):Vue应用Sass、Scss、Less和Stylus》

  • 《Vue进阶(幺柒捌):延伸阅读Sass、Scss、Less与Stylus编程特性》

  • 《网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解》

  • 《网站开发进阶(六十四)CSS 属性选择器》

  • 《网站开发进阶(六十五)css中 :not() 伪类选择器用法》

  • 《网站开发进阶(六十二)最强大的 CSS 布局——Grid 布局》

  • 《Vue进阶(幺柒零):前端用户体验提升(四)应用rem/em实现字体自适应》

  • 《Vue进阶(幺柒幺):前端用户体验提升(五)Flex实现弹性布局》

  • 《网站开发进阶(六十三)详解CSS3中的calc()》

网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解相关推荐

  1. 网站开发进阶(二十六)js刷新页面方法大全

    一.前言​ 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有需要的朋友 ...

  2. [Python从零到壹] 六十四.图像识别及经典案例篇之图像傅里叶变换和傅里叶逆变换详解

    祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...

  3. 网站开发进阶(七十):CSS 实现圆角有立体感的 DIV 边框

    文章目录 一.前言 二.原理介绍 2.1 盒子阴影 box-shadow 三.拓展阅读 一.前言 网站开发过程中,若页面整体背景为白色,其中的页签元素若使用普通的样式,整个页面看上去就会比较呆板.平面 ...

  4. 跨平台应用开发进阶(四十一)使用Xcode打包 iOS 应用 archive 时四种证书的区别详解

    文章目录 一.archive 四种模式 二.相同点 三.安装方式区别 四.iOS开发者账号(企业版)申请攻略 4.1 苹果开发者账号类型 4.2 企业版开发者账号的优势是什么? 4.3 企业版开发者账 ...

  5. 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案

    文章目录 一.前言 二.优化建议 三.实施方案 3.1 优化项目结构,减小项目组包体积 3.2 去除项目冗余字体文件 3.2.1 字体筛选 3.2.2 字体压缩 3.3 gzip压缩 3.4 ETag ...

  6. 跨平台应用开发进阶(二十六) :忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路

    文章目录 一.前言 二.上架问题汇总 2.1 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed th ...

  7. 网站开发进阶(四十九)由JS报“未结束的字符串常量”引发的思考

    一.报错 在做公司项目开发过程中,后期生产环境上报JS出现"未结束的字符串常量"错,如下: 后期经过不断调试,发现是由于Js引擎在解析带有换行字符串时引起的异常.解析后的js代码类 ...

  8. 网站开发进阶(二十九)HTML特殊转义字符

    HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图

  9. 网站开发进阶(三十二)HTML5之FileReader的使用

    ​一.前言 HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使 ...

  10. QT开发(六十六)——登录对话框的验证机制

    QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...

最新文章

  1. SAP 物料订单创建、下达、报工、收货与投料(ABAP代码)
  2. pycharm 提示 ennble Code compatibility inspection(代码兼容性检查)
  3. python线程暂停_关于多线程:如何使“停止”按钮终止已经在Tkinter中运行的“开始”功能(Python)...
  4. .Net开发中的多线程编程总结
  5. tensorflow-读写数据最佳代码组合方式
  6. 常用的函数式接口_Predicate接口_默认方法and
  7. 动态规划求解0-1背包
  8. 九齐NY8B072A单片机使用笔记(二)TIMER1/2/3定时器
  9. Web服务器性能估算
  10. refs win10_Win10PE版本改为专业工作站版开启refs支持工具
  11. iOS 关于BTC 一些知识点
  12. 中国荧光探针市场应用前景与投资动态预测报告(2022-2027年)
  13. 复合辛普森公式matlab,复合梯形公式、复合辛普森公式 matlab
  14. JumpServer登录提示连接WebSocket失败
  15. 在 AWS上域名备案流程和文件
  16. 【朝花夕拾】Lint篇
  17. Leco题目:无重复字符的最长子串
  18. 燕麦粉行业调研报告 - 市场现状分析与发展前景预测
  19. 单链表的头尾插法详解
  20. Arweave -- 永久性存储分享

热门文章

  1. 我心目中的编程高手(不得不转)
  2. Linux中命令行中EOF的用法
  3. 那些年我们追过的网络小说
  4. 【重磅】英国脱离欧盟,英国首相卡梅伦宣布辞职
  5. mq选型:rocketMq和kafka对比
  6. dws中间表模型设计: 页面受访明细宽表
  7. 新加坡国立大学计算机系访学,【访学归来】白卫岗:在新加坡国立大学探讨线性水声网络容量...
  8. Android应用调用第三方地图应用导航
  9. 华为WLAN基本概述
  10. ps小技巧:修改图标颜色