第一部分:简介
前言:
现下大部分网页都是由 文字 和 图片 构成.
所以 文字 在 网页视觉方面 是基本的一大构成.
下面我们来介绍在CSS中 控制文字的一些 基本操作:
分析:
我们首先分析. 文字 这个东西到底是个什么?
说道 分析一个 事物的第一步就是分析 事物自带的属性
在显示器终端上, 文字 能显示出来,本质是 它 点阵了视窗的某一部分像素.
对计算机而言, 它们只是不同 点阵的像素而已
对我们人类而言. 是约定俗成的 视觉认知.
像素集合的本质就决定了 它有 大小(font-size)
和 颜色(color)
的最基本的两个属性.
再加上 我们生活中常见的 文字修饰. 就有了 文字方向(writing-mode)
缩进(text-indent)
, 斜体(font-style)
,标识(text-decoration)
等等.
如下列表:
格式 | 定义 | 值 | 用法 |
---|---|---|---|
color | 文字颜色. | 颜色单词/ 十六进制 / rgba()等.... | color: red / #ffeedd / rgba(100,20,150,.5) ...; |
font-family | 字体大小. | 常用有: "Arial","Microsoft Yahei","黑体","宋体",sans-serif | font-family: "Arial","Microsoft Yahei","黑体","宋体",sans-serif |
font-size | 字体系列. | 数值+px / 百分比,smaller.larger(相对父元素) | font-size: 30px / 150% / smaller; |
font-weight | 字体粗细. | 100~900 / normal(400), blod(700) / bloder / lighter/ inherit | font-weight: bold / 700; |
font-style | 字体的风格 | normal / italic / oblique / inherit | font-style: italic / oblique; |
font | 字体属性集合简写 | 顺序依次是: font-style font-variant font-weight font-size/line-height font-family | font:italic bold 12px/20px arial,sans-serif; |
text-shadow | 文字阴影 | h-shadow v-shadow blur color | text-shadow: 4px 5px 6px rgba(,250,250,.6); |
text-decoration | 文本修饰 | none(default) / underline / overline / line-through / inherit | text-decoration: underline; |
text-transform | 文本大小写 | none(default) / capitalize / uppercase / lowercase / inherit | text-transform: uppercase; |
text-indent | 文本缩进 | 数值+em | text-indent: 2em; |
text-align | 水平对齐方式 | left(default) / right / center / justify / inherit | text-align: center; |
letter-spacing | 字符间距 | 数值+px (允许使用负值) | letter-spacing: 2px / -3px; |
line-height | 行高 | 数字 / 百分比 / 数值+px | line-height: 1.5 / 150% / 20px; |
word-wrap | 换行 | normal / break-word | word-wrap: normal / break-word; |
writing-mode | 方向 | horizontal-tb / vertical-rl / vertical-lr / sideways-rl / sideways-lr | writing-mode: horizontal-tb; |
另外还有常用的 文字省略:
- 单行文字省略
white-space: no-wrap;
text-overflow: ellipsis;
overflow: hidden;
- 多行文字省略
注意: 不要给文本父容器设置高度.
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 3; /*多余的文字在第三行后省略掉 */
overflow: hidden;
第二部分: 实例展示与扩展
-
color
.box .span1 {
color: red;
}
.box .span2 {
color: #5566ee;
}
.box .span3 {
color: rgba(100,200,150,.6);
}
效果
color拓展:
既然能给文字填充颜色. 那 可不可以 填充渐变颜色呢? 答案是: 可以的.
如下:
.box p {
padding: 20px;
width: 400px;
border: 1px solid red;
font-size: 50px;
background-image: -webkit-linear-gradient(bottom left,red,yellow,green,cyan); /* 为文本元素提供渐变背景 */
/* background: linear-gradient(to bottom left,red,yellow,green,cyan); */
-webkit-background-clip:text; /* 用文本剪辑背景,用渐变背景作为颜色填充文本。 */
-webkit-text-fill-color:transparent; /* 使用透明颜色填充文本。 */
color:transparent; /* 使用透明颜色填充文本。 */
}
效果
再来,
既然能文字能填充颜色. 那能不能填充其他的东西呢? 比如 图片...
答案还是 可定的 .
如下
.box {
border: 1px solid red;
text-align: center;
width: 400px;
font-size: 150px;
font-weight: 900;
/* 核心代码 */
background: url(http://thumbs.dreamstime.com/b/%E7%A7%8B%E5%A4%A9%EF%BC%8C%E4%B8%8E%E6%A0%91%E7%9A%84%E7%A7%8B%E5%A4%A9%E9%A3%8E%E6%99%AF-%E5%A4%AA%E9%98%B3%E5%8F%91%E5%85%89-46805832.jpg) center center no-repeat; /* 图片填充 */
-webkit-background-clip: text; /* 以文字为剪切蒙版 */
-webkit-text-fill-color:transparent; /* 设置文字透明 */
color: transparent; /* 设置文字透明 */
}
效果
-
font-size
字体的大小 因为有继承性,所以可以从两个方面来设置它.
一 设置固定大小: number+px;
二 相对父容器的字体大小: 百分比 或 smaller, larger
如下
.father {
font-size: 20px;
}
.son1 {
font-size: 30px; /* 最常用 */
}
.son2 {
font-size: 200%; /* 在不知道父元素字体大时,可以用 */
}
.son3 {
font-size: smaller;
}
效果
font-size拓展
- 拓展(一)
计算机逻辑是非常严谨的, 就算我们看不到的空格它也会把她计算进来.
这种情况就会出现一种情况: 想要两个元素紧挨在一起,结果却又一道缝隙在中间.
这时候.font-size就是解决这个问题的方法之一.
如下图:
实例:
.father {
font-size: 0; /* 父容器字体大小设置为零 */
}
.father span {
border: 1px solid red;
font-size: 20px; /* 在子元素里恢复大小 */
}
效果
- 拓展(二)
在浏览器中.特别是在chrome浏览器中.有默认最小字体大小的设置.一般为8px.
意思就是font-size: 6px,
也是显示8px的大小.
问题来了: 怎么才能把文字小于8px显示在屏幕上呢?
那就要 用到transform: scale(0.0<参数<1.0>);
实例:
.fatherBox .normal {
font-size: 6px; /* 这里设置了6px, 实际效果大小是8px */
}
.fatherBox .scale {
font-size: 6px; /* 这里设置了6px, 实际效果大小是8px */
transform: scale(0.8);
-webkit-transform: scale(0.8); /* 0.8是缩放比例 */
}
效果:
-
font
font是 字体所有字体设置的一个简写.
可以按顺序设置如下属性:
font-style (可选)
font-variant (可选)
font-weight (可选)
font-size/line-height /* 规定字体尺寸和行高 */
font-family
实例:
.fatherBox p {
font: italic small-caps bold 30px/1.5 "宋体";
}
效果
这里需要注意的是: font-variant 这个属性 variant : 变种; 变体; 变形;
它的值只有: small-caps 显示小型大写字母的字体 (normal, inherit不算的话)
它可以理解成: 小型化的大写字母
例如:
<!-- HTML -->
<div class="fatherBox">
<p class="p1">CSS: font-varint</p>
<p class="p2">CSS: normal</p>
</div>
/* CSS */
.fatherBox .p1 {
font-variant: small-caps;
}
效果:
-
text-shadow
基本用法:
text-shadow: h-shadow v-shadow blur color;
h-shadow:必需。水平阴影的位置。允许负值。
v-shadow:必需。垂直阴影的位置。允许负值。
blur:可选。模糊的距离。
color:可选。阴影的颜色。
text-shadow拓展
文字和图片一样, 可以产生阴影.
在平面设计中, 阴影有很多的妙用..
如果用好阴影, 不仅可以提高文字美感,还可以产生一些酷炫的效果. 如 闪烁,浮雕.3D立体字....
实例
.father .p1 { /* 一般阴影 */
text-shadow: 4px 5px 5px green;
}
.father .p2 { /* 闪烁效果 */
text-shadow: 0 0 .1em,
0 0 .3em;
}
.father .p3 { /* 浮雕效果 */
text-shadow: 2px 2px green,
-2px -2px green,
2px -2px green,
-2px 2px green;
}
.father .p4 { /* 3D立体效果 */
text-shadow: 0 1px hsl(0,0%,85%),
0 2px hsl(0,0%,80%),
0 3px hsl(0,0%,75%),
0 4px hsl(0,0%,70%),
0 5px hsl(0,0%,65%),
0 5px 10px black;
}
[注] hsl() 是颜色的 一种 色彩表达模式.
HSL即[色相]、[饱和度]、[亮度](英语:Hue, Saturation, Lightness)
具体详情点击:
https://baijiahao.baidu.com/s?id=1639770452743689307&wfr=spider&for=pc
效果
-
text-decoration
在很多情况下,为了 突然, 标记, 注释 一些文本内容.
我们经常要给 这些文字 来修饰一下,以别其他文字.
那我们就要用到 text-decoration.
案例
.father .p1 {
text-decoration: underline ; /* 下划线在文字下方 */
}
.father .p2 {
text-decoration: overline; /* 下划线在文字上方 */
}
.father .p3 {
text-decoration: line-through; /* 下划线穿过文字 */
}
效果:
text-decoration拓展
从上面例子可以做到. text-decoration确实起到了标识一些想要注意的文字.
但是问题又随之而来: 我要的下划线是要有 颜色的..
就想我们小时候读书用红笔把重点内容标出来一样,既美观又醒目.
同样, css设计者同样考虑到这个小细节...
实例:
.father .p1 {
text-decoration: underline red; /* 颜色属性可选,默认跟字体设置的color颜色一样 */
}
效果
还有一个 算半个 文字 修饰的 伪类: text::selection {}
网页通常默认选中的文字 底色为 蓝色,字体颜色为 白色
通过应用text::selection {}
伪类 我们可以 修改 被选中 文字的 底色和字体颜色
实例:
.text::selection {
background: green;
color: red;
}
效果:
-
letter-spacing
这个命名控制 元素内所有字符之间的空隙距离
在英文里, 因为有单词的存在,
所以还有一个 word-spacing 的命名.它只负责控制 单词与单词之间空隙.
word-spacing 对中文 不起作用的
所以,在中文调整字间距的时候,只有使用 letter-spacing.
(当然, 在元素里面使用
也是可以的,但是太土味了.)
实例:
.fatherBox .p1 { /* 我对所有字符之间间隔起作用 */
letter-spacing: 5px;
}
.fatherBox .p2 { /* 我是对单词之间空隙间隔起作用 */
word-spacing: 5px;
}
.fatherBox .p3 {/* letter-spacing对中文起作用 */
letter-spacing: 5px;
}
.fatherBox .p4 { /* word-spacing对中文不起作用 */
word-spacing: 5px;
}
效果
writing-mode
现代书本上的文字都是从左到右的顺序排列,但是古时候不同,文字都是从右至左排列的,现在在很多古籍、牌坊、石碑等上面依旧可以看到从右至左的文字。
css也可以调整文本排版方向,是通过什么属性控制的呢?
writing-mode 属性定义了文本在水平或垂直方向上如何排布。
writing-mode 值 | 描述 | 示意 |
---|---|---|
horizontal-tb | (正常书写) 水平方向自上而下的书写方式。即 left-right-top-bottom | 111.png
|
vertical-rl | 垂直方向自右而左的书写方式。即 top-bottom-right-left | 222.png
|
vertical-lr | 垂直方向内内容从上到下,水平方向从左到右 | 333.png
|