网站开发进阶(六十六)CSS3 - 新单位vmin/vmax与旧单位ex/ch使用详解
文章目录
- 一、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
:当前vw
和vh
中较小的一个值;vmax
:当前vw
和vh
中较大的一个值;
(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
),在竖屏和横屏状态下显示的字体大小是不一样的。
由于 vmin
和 vmax
是当前较小的 vw
和 vh
和当前较大的 vw
和 vh
。这里就可以用到 vmin
和 vmax
。使得文字大小在横竖屏下保持一致。
1.4 vmin 和 vmax
在前期博文中,我们讲解了vh
和vm
的相关知识,vh
和vm
总是与视口的高度和宽度有关,与之不同的,vmin
和vmax
是与这次宽度和高度的最大值或最小值有关,取决于哪个更大和更小。
例如,如果浏览器设置为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
ex
和ch
单位,与em
和rem
相似,依赖于当前字体和字体大小。然而,与em
和rem
不同的是,这两个单位也依赖于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使用详解相关推荐
- 网站开发进阶(二十六)js刷新页面方法大全
一.前言 在项目开发过程中,需要实现刷新页面.经过学习,发现下面这条语句就可以轻松实现. location.reload(); // 刷新页面 有关刷新页面的其它方法,具体学习内容如下,有需要的朋友 ...
- [Python从零到壹] 六十四.图像识别及经典案例篇之图像傅里叶变换和傅里叶逆变换详解
祝大家新年快乐,阖家幸福,健康快乐! 欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所 ...
- 网站开发进阶(七十):CSS 实现圆角有立体感的 DIV 边框
文章目录 一.前言 二.原理介绍 2.1 盒子阴影 box-shadow 三.拓展阅读 一.前言 网站开发过程中,若页面整体背景为白色,其中的页签元素若使用普通的样式,整个页面看上去就会比较呆板.平面 ...
- 跨平台应用开发进阶(四十一)使用Xcode打包 iOS 应用 archive 时四种证书的区别详解
文章目录 一.archive 四种模式 二.相同点 三.安装方式区别 四.iOS开发者账号(企业版)申请攻略 4.1 苹果开发者账号类型 4.2 企业版开发者账号的优势是什么? 4.3 企业版开发者账 ...
- 跨平台应用开发进阶(四十六)webview方式嵌套H5应用加载慢解决方案
文章目录 一.前言 二.优化建议 三.实施方案 3.1 优化项目结构,减小项目组包体积 3.2 去除项目冗余字体文件 3.2.1 字体筛选 3.2.2 字体压缩 3.3 gzip压缩 3.4 ETag ...
- 跨平台应用开发进阶(二十六) :忐忑悲壮路,心酸出坑史——记第一次iOS艰辛上架路
文章目录 一.前言 二.上架问题汇总 2.1 Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage We noticed th ...
- 网站开发进阶(四十九)由JS报“未结束的字符串常量”引发的思考
一.报错 在做公司项目开发过程中,后期生产环境上报JS出现"未结束的字符串常量"错,如下: 后期经过不断调试,发现是由于Js引擎在解析带有换行字符串时引起的异常.解析后的js代码类 ...
- 网站开发进阶(二十九)HTML特殊转义字符
HTML特殊转义字符 参考文献 http://tool.oschina.net/commons?type=2 美文美图
- 网站开发进阶(三十二)HTML5之FileReader的使用
一.前言 HTML5定义了FileReader作为文件API的重要成员用于读取文件,根据W3C的定义,FileReader接口提供了读取文件的方法和包含读取结果的事件模型. FileReader的使 ...
- QT开发(六十六)——登录对话框的验证机制
QT开发(六十六)--登录对话框的验证机制 一.验证码机制 为了避免被恶意程序***,程序通常要使用安全机制.验证码机制是提供产生随机验证码,由用户识别填写来判断用户有效性的安全机制. 验证码必须动态 ...
最新文章
- SAP 物料订单创建、下达、报工、收货与投料(ABAP代码)
- pycharm 提示 ennble Code compatibility inspection(代码兼容性检查)
- python线程暂停_关于多线程:如何使“停止”按钮终止已经在Tkinter中运行的“开始”功能(Python)...
- .Net开发中的多线程编程总结
- tensorflow-读写数据最佳代码组合方式
- 常用的函数式接口_Predicate接口_默认方法and
- 动态规划求解0-1背包
- 九齐NY8B072A单片机使用笔记(二)TIMER1/2/3定时器
- Web服务器性能估算
- refs win10_Win10PE版本改为专业工作站版开启refs支持工具
- iOS 关于BTC 一些知识点
- 中国荧光探针市场应用前景与投资动态预测报告(2022-2027年)
- 复合辛普森公式matlab,复合梯形公式、复合辛普森公式 matlab
- JumpServer登录提示连接WebSocket失败
- 在 AWS上域名备案流程和文件
- 【朝花夕拾】Lint篇
- Leco题目:无重复字符的最长子串
- 燕麦粉行业调研报告 - 市场现状分析与发展前景预测
- 单链表的头尾插法详解
- Arweave -- 永久性存储分享