css揭秘实战技巧 - 字体排印[四]

全目录

本系列文章,主要是围绕css3属性,实现我们常见的各种效果,这些效果都是我们实战开发中经常可以用到的效果:

  1. css揭秘实战技巧- 背景与边框 [一]
  2. css揭秘实战技巧- 形状 [二]
  3. css揭秘实战技巧 - 视觉效果[三]
  4. css揭秘实战技巧 - 字体排印[四]
  5. css揭秘实战技巧 - 用户体验[五]
  6. css揭秘实战技巧 - 结构与布局[六]
  7. css揭秘实战技巧 - 过渡与动画[七]

前言

一:连字符断行

1. 两边对其
text-align: justify;
复制代码

效果如下:

2. 连字符断行

连字符用: $shy 去表示。 如果我们想使用连字符断行,可以通过hyphens 去控制,

hyphens: none // 隐藏连字符
hyphens: manual //显示连字符
hyphens: auto //自动
复制代码

代码如下:

<div>
    the onlu way to get rid of a temp &shy tation is to yield to it;
</div>
复制代码
width: 100px;
height: 100px;
border: 1px solid #ddd;
text-align: justify;
hyphens: manual;
复制代码

效果如下:

二:插入换行

在我们实际开发过程中,换行这种事情是经常需要的,可能大部分时候,直接在想换行的地方加一个"<br>"即可,这样方案没问题,但是每个换行的地方都要加一个br,可维护性会相对差一点, 那么,是否有其他更好的方案呢?

实际上,有一个 Unicode 字符是专门代表换行符的:0x000A1。在 CSS 中, 这个字符可以写作 "\000A",或简化为 "\A"。我们可以用它来作为 ::after 伪元素的内容,并将其添加到每个元素的尾部,

代码如下:

span::after {
    content: '\A';
}
复制代码

我们设置以后,发现并没有生效,为什么呢?这是因为换行符会与其相邻的空白符进行合并,所以最后结果还是没有换行,所以,接下来要做的就是,如何不让换行符和空白符合并呢? 答案就是:white-space: pre;

代码如下:

span::after {
    content: '\A';
    white-space: pre;
}
复制代码

三:文本行的斑马条纹

说到斑马条纹,我们第一时间想到的可能就是选择器:nth-child(odd/even), 通过分别设置奇数行和偶数行不同样式,但是这种方法是对多个不同的标签去设置,例如ul下面有多个li,就可以这样设置.

但是如果只是一个段落文本,那该如何设置斑马条纹呢?

首先,我们看一下最终的效果:

方案一:切割段落,到不同的标签上

将段落切成多段,然后分别放到多个标签下,然后再对标签使用nth-child设置样式,但是,很显然,这种方式太low了,怎么切分成多个段落?而且又增加了这么多新标签,对性能也影响。

方案二:只有一个标签

采用渐变去实现条纹背景,同时配合行高实现垂直居中。 代码如下:

//css
width: 300px;
line-height: 1.6em;
background-image: linear-gradient(to bottom, #ddd 50%, transparent 0);
background-size: 100% 3.2em;
background-origin: content-box;
复制代码
//html
<p>
    结对编程(英语:Pair programming)是一种敏捷软件开发的方法,两个程序员在一个计算机上共同工作。一个人输入代码,而另一个人审查他输入的每一行代码。
</p>
复制代码

四:调整 tab 的宽度

方案一:使用JSON.stringify(data, null, 4)

第三个参数控制缩紧大小

方案二:用使用新属性tab-size去控制
tab-size: 4;
复制代码

五:自定义下划线

1. 自带下划线

代码如下:

text-decoration: underline;
复制代码

效果如下:

但是,使用自带的下划线,我们无法设置下环线的颜色或者其他效果,这是,我们想到的就是使用边框,阴影,甚至backgroud去模拟下划线。

2. border实现

代码如下:

border-bottom: 1px solid #000;
line-height: 0.9em //让边框更贴近文字
复制代码
3. box-shadow实现

代码如下:

box-shadow: 0px 1px;
line-height: 0.9em; //让边框更贴近文字
复制代码
4. background实现

代码如下:

background: linear-gradient(green, green) no-repeat;
background-size: 100% 1px;
background-position: 0px 1em; //设置背景的起始位置
复制代码
5. css新特性搞定

也就是说,现在其实有新属性是可以设置下划线的效果的,

text-decoration-color 用于自定义下划线或其他装饰效果的颜色。
text-decoration-style 用于定义装饰效果的风格(比如实线、虚线、波浪线等)。
text-decoration-skip 用于指定是否避让空格、字母降部或其他对象。
text-underline-position 用于微调下划线的具体摆放位置。
复制代码

当然,以上新特性可能部分浏览器还没有到支持。

六:现实中的文字效果

1. 空心字体

实现原理:通过设置四个方向的偏移量, 然后 所有偏移量的效果组合在一起,就实现了类似边框的效果。 代码如下:

width: 300px;
height: 150px;
background: green;
color: #fff;
font-size: 80px;
text-align: center;
text-shadow: 3px 3px red, -3px -3px red, -3px 3px red, 3px -3px red;
复制代码
2. 字体外发光效果

实现原理: 即设置文字的阴影效果即可。

代码如下:

width: 300px;
height: 150px;
background: green;
color: #fff;
font-size: 80px;
text-align: center;
text-shadow: 0px 0px 10px yellow;
复制代码
3. 文字凸起效果

实现原理:主要思路就是使用一长串累加的投影, 不设模糊并以 1px 的跨度逐渐错开,使颜色逐渐变暗,然后在底部加一层强 烈模糊的暗投影,从而模拟完整的立体效果。

代码如下:

width: 300px;
height: 150px;
background: green;
color: #fff;
font-size: 80px;
text-align: center;
text-shadow: 0px 0px 2px hsl(0,0%,85%),
             0px 0px 4px hsl(0,0%,75%),
             0px 0px 6px hsl(0,0%,65%),
             0px 0px 8px hsl(0,0%,55%),
             0px 0px 10px hsl(0,0%,45%);
复制代码

转载于:https://juejin.im/post/5cbdb049f265da034d2a1495

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值