CSS篇1——有关文本处理font的那些事

14,624次阅读
没有评论

共计 3333 个字符,预计需要花费 9 分钟才能阅读完成。

前言

之前博客文章不成体系,主要是一些突然想到的零散知识点。本文及后面几篇文章,将推出一系列文章。帮忙梳理知识点。提高技能。本文着重讲解 css 有关文本处理 font 的那些事。之所以先从 font 说起,是因为 UED 对字体要求比较高,很多朋友还原 UED 设计稿之后,出来的效果,UED 并不满意。其中,除了屏幕,自适应等原因之外,字体文本处理也是一个重要因素。

1、ex 实现文字和图标垂直居中

ex 单位 IE6 时代就支持了,主要是相对字母 x 的高度, 可以实现文字和图标对齐,不受文字字体和字号的影响。

如下图:

CSS 篇 1——有关文本处理 font 的那些事

html

haorooms 博客 

css

.icon-row{
  display: inline-block;
  width:20px;
  height:1ex;
  background:url(row.png) no-repeat center;
  background-size:contain
}

2、font-size 0 作用及错误用法

font-size:0 的作用,我之前博客文章应该有提及。

1、可以清除字体引起的间距

2、可以将文本隐藏

不正确的用法:

看到有的网页中,用 rem 单位,为了方便计算(因为 1rem =16px,16*0.625=10px,width:14px,可以写成 width:1.4rem)。将根目录字体设置如下:

html{font-size:62.5%}

但是 chrome 浏览器最小字体 12px 的限制,根据字号计算,是 12px 不是 10px,因此,计算就不是很准确了!

想真的是 10px,可以如下设置:

    html{font-size:625%}

font-size:14px = font-size:.14rem

这样可能也有些问题,但是比上面的 62.5% 要正确多了!

3、font-family

"serif"// 衬线字体
"sans-serif"// 无衬线字体
"cursive"// 手写字体
"fantasy"// 奇幻字体
"monospace"// 等宽字体
"system-ui" // 系统 UI 字体 

我们常用的微软雅黑、苹方字体,都是无衬线字体

具体可以看下:https://developer.mozilla.org/zh-CN/docs/Web/CSS/font-family

移动端 web 开发,默认中文字体不一样但都是无衬线,可以直接如下:

body{font-family:sans-serif;}

指定中文字体,反而画蛇添足。

serif,sans-serif 可以和中文名字一起写,但是中文名字必须在 sans-serif 之前,否则不生效。

如下:

font-family:"Microsoft Yahei",sans-serif;

如下无效,不能这么写:

font-family:sans-serif,"Microsoft Yahei";

用系统字体的话,就是 system-ui

需求和现状:

有的朋友开发中,直接写了:

font-family:"Microsoft Yahei";

这样有问题,假如是 mac 用户,系统也安装了微软雅黑,岂不是自带的更好看的字体不能用了?
需求是 mac 用户用自己自带字体,非 mac 用户用微软雅黑。

可以如下写:

html{font-family:-apple-system,BlinkMacSystemFont,"Microsoft Yahei";}

这样就可以达到我们的需求了!

4、font-weight

font-weight 字体只有 100-900, 没有所谓的 550,蓝湖等里面的 550 是不正确的。可能有的字体 550 在 mac 中是有效果,但是是不正确的。

那么问题来了,为什么 font-weight 设置 300,400,500,文字的粗细没有任何变化。只有 600 或者 700 才会加粗。感觉浏览器好像不支持这些数值。

实际上,所有这些数值关键字浏览器都是支持的。之所以没有任何粗细变化,是因为系统里面缺乏对应粗细的字体。特别是在桌面端。大部分用户的字体就一个加粗和正常尺寸两种,因此设置 300,400,500 没有任何变化。推荐 OSX 系统的苹方,或者“思源黑体”。

有的字体虽然字重丰富,但是不支持 font-weight 属性加载对应字体文件,这样的话我们只能通过 @font-face 的方式定义了!

@font-face{
  font-family:'HAOROOMS';
 font-weight:400;
 src:local('HYQihei 40s')
}
@font-face{
  font-family:'HAOROOMS';
 font-weight:500;
 src:local('HYQihei 50s')
}

@font-face{
  font-family:'HAOROOMS';
 font-weight:600;
 src:local('HYQihei 60s')
}

使用的时候直接

font-family:'HAOROOMS';font-weight:400

就可以了。

5、font-style

很多朋友不了解 font-style 的 italic 和 oblique 的区别

italic // 表示当前字体的斜体,假如没有斜体,退而求其次,采用字体倾斜 同 oblique

oblique// 单纯的文字倾斜 

很多中文没有斜体,因此这两个属性看不出来,假如有斜体的字体,那么这两个属性会比较明显了!

6、font 属性

css 的 font 属性,是众多属性的缩写。注意:font-size 和 font-family 是必须的,假如只有一个,那么设置是无效的。

例如:

font:normal 700 14px/25px; // 设置无效

font: 14px “$” // 反而是有效的,认为 ”$” 是一个字体

font 属性除了缩写,还有关键词,但是关键词和缩写不能混用。

例如:

.menu{font:menu}

menu 代码菜单使用字体。

关键词枚举如下:

caption // 活动窗口标题栏使用字体

icon // 包含图标内容所使用的字体,例如文件夹名称

menu // 菜单使用字体

message-box// 消息盒子里面使用的字体

small-caption// 调色板标题使用的字体

status-bar// 窗体状态栏使用的字体 

7、word-break 和 word-wrap 的区别

通常 word-break:break-all; 和 word-wrap:break-word 的区别,可以通过字面意思来区分。

break-all,强制换行,不管是不是一个单词,换行折断。

break-word,单词强制换行,一个单词不会截断,整个单词换行。(可能会有换行空白)

8、text-align 两端对齐

之前有篇文章写过 https://www.haorooms.com/post/css_liangduan_justify
这个是取巧的写法。下面介绍国际象形文字两端对齐的写法

.justify{
text-align:justify;
text-justify:inter-ideograph;
}

在加上强制单词换行,这样效果更佳!

.justify{
text-align:justify;
text-justify:inter-ideograph;
word-wrap:break-word;
}

上面都可以实现两端对齐。

9、text-transform 字符大小写

我们在输入验证码或者身份证的时候,可以用 text-transform, 一键转换大小写,体验更好!

input{text-transform:uppercase;}

10、first-letter 设置美元、人民币单位不同样式。

我们在做网页不就中,经常有价格单位如下

¥699

¥的颜色大小和 699 是不一样的,通常做法是再多包一层 span 等。但是我们可以用 first-letter 来实现样式改变。

.price::first-letter{
 margin-right:5px;
font-size:xx-large;
vertical-align:-2px;
}

就可以实现想要的效果了。

11、div 中保留 textarea 的 n 换行

我们在 textarea 中回车换行,但是 div 中不能同步显示换行,因为默认的换行符 nr div 中不识别。

在 div 中添加如下,就可以保留换行符

white-space: pre-line;

关于文本处理,后面再做补充,今天就暂时到这来。

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计3333字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)