ch 与等宽字体
难题
有的时候,特别想通过字符来判断元素的长度,比如:
- 多行文本溢出时,文字变省略号
- 文字一个个的显示
效果分别如下:


第一种情况下,如果可以通过字符的数量判断长度是否溢出,从而把最后几个字符替换成省略号,那就没问题,然而通常情况下,i和M占的宽度明显是不一样的,即使一样,也不知道它的宽度具体是多少。
第二种情况,也是需要一个一个字符的出现,所以遮罩的长度每次需要减少一个字符的长度,这也要求每个字符是一样长的,且必须需要知道每个字符的宽度。
方案
不同字符的宽度可以通过等宽字体来设置,通常的字体,i和M的宽度不一样,但是在等宽字体下,就是一样的,这个不难。
幸运的是,CSS Values and Units Module Level 3 增加了一个新单位ch,
Equal to the used advance measure of the "0" (ZERO, U+0030) glyph found in the font used to render it. (The advance measure of a glyph is its advance width or height, whichever is in the inline axis of the element.)
它指定字符0的宽度,乍看没什么用,但是和等宽字体连起来下面的逻辑:
- 0的宽度是 1ch ,每个字符一样宽 => n 个字符就是 nch
常见的等宽字体有:
font-family: Consolas, Monaco, monospace;
上述截图所在项目请戳我的CSS仓库
ch 与等宽字体的更多相关文章
- 等宽字体延伸到的 ch 长度单位和动画 animation-timing-function
新知识点get! 等宽字体(monospaced font)是指字符宽度相同的电脑字体.与此相对,字符宽度不尽相同的电脑字体称为比例字体(proportional font). 东亚字体基本都是等宽字 ...
- CSS 条件判断、等宽字体以及ch单位
<!DOCTYPE> <html lang="en"> <head> <meta charset="utf-8"> ...
- 等宽字体的妙用-loading 点点点动画
原理 ch等宽字体 + text-indent 动画负缩进 显示效果如 loading . loading .. loading ... loading . loading .. loading .. ...
- 编程等宽字体Source Code Pro(转)
Source Code Pro - 最佳的免费编程字体之一!来自 Adobe 公司的开源等宽字体下载 每一位程序员都有一套自己喜爱的代码编辑器与编程字体,譬如我们之前就推荐过一款"神 ...
- 由 Windows 向 Linux 迁移字体 和 Linux 等宽字体
1. From Windows Windows下字体库的位置为C:\Windows\fonts,这里面包含所有windows下可用的字体.2. To Linux linux的字体库是 /usr/sha ...
- Android等宽字体
Android等宽字体 效果图 在xml中设置 添加属性 android:typeface="monospace" 例如 <TextView android:layout_w ...
- netbeans等宽字体却不支持中文
一直用netbeans,各方面都很满意,就是这字体十分不爽,如用等宽字体却不支持中文,百度了一下,找到了解决办法,贴出来,给需要的朋友. 01.找到自己java字体目录.我的目录是[C:\Progra ...
- sourceinsight tab 空格 对齐 等宽字体
参考:http://bbs.chinaunix.net/thread-587409-1-1.html 1. SMART TAB的用法. 解决自动缩进. 新开一个PROJECT后,点Options-&g ...
- 字体:等宽字体与比例字体 - Monospaced font & Proportional font
字体:等宽字体与比例字体 - Monospaced font & Proportional font 量子波儿 2013-08-24 16:54:12 7101 收藏 1分类专栏: 计算机常识 ...
随机推荐
- WebGL 绘制和变换
1.使用缓冲区对象向顶点着色器传入多个顶点的数据,需要遵循以下五个步骤: 1.1 创建缓冲区对象(gl.createBuffer()). 1.2 绑定缓冲区对象(gl.bindBuffer()). 1 ...
- ESPCN处理彩色图像代码
原来仅处理了Y通道,输出的灰度图像. Super-Resolution/ESPCN at master · wangxuewen99/Super-Resolution · GitHub https:/ ...
- 使用Eclipse构建Maven项目
http://blog.csdn.net/qjyong/article/details/9098213
- 查询SQL阻塞语句
SELECT SPID=p.spid, DBName = convert(CHAR(),d.name), ProgramName = program_name, LoginName = convert ...
- spring+mybatise注解实现
spring+mybatise注解实现 spring.jpa.database=MYSQL spring.datasource.type=com.alibaba.druid.pool.DruidDat ...
- python对日志处理的封装
一个适应性范围较广的日志处理 # coding=utf8 """ @author bfzs """ import os import log ...
- Java多线程之可见性与原子性——synchronized VS volatile
<转:http://blog.csdn.net/uniquewonderq/article/details/48113071> 程序举例: 代码: package com.synch; p ...
- LabelTTF 设置字体时的问题
使用cc.LabelTTF:create(txt, fontname, fontsize); 字体没能显示出来, 这里使用的是系统字体, 比如我使用"微软雅黑", 作为font ...
- SSL延迟有多大 (Https)
据说,Netscape公司当年设计SSL协议的时候,有人提过,将互联网所有链接都变成HTTPs开头的加密链接. 这个建议没有得到采纳,原因之一是HTTPs链接比不加密的HTTP链接慢很多.(另一个原因 ...
- Scala单例对象和伴生对象
1.Scala单例对象 Scala单例对象是十分重要的,没有像在Java一样,有静态类.静态成员.静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员. ...