整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

《CSS 实战指南》2024 第二章:CSS美化文本

本的字体、大小、颜色和样式

CSS 美化文本可以通过以下方式实现:

  1. 字体样式:使用 font-family 属性设置字体族,如 "Arial", "Times New Roman", "Verdana" 等。
  2. 字体大小:使用 font-size 属性设置字体大小,如 "12px", "1em", "100%" 等。
  3. 字体粗细:使用 font-weight 属性设置字体粗细,如 "normal", "bold", "bolder" 等。
  4. 字体样式:使用 font-style 属性设置字体样式,如 "normal", "italic", "oblique" 等。
  5. 文本对齐:使用 text-align 属性设置文本对齐方式,如 "left", "right", "center" 等。
  6. 文本装饰:使用 text-decoration 属性设置文本装饰,如 "none", "underline", "overline", "line-through" 等。
  7. 文本颜色:使用 color 属性设置文本颜色,如 "red", "#FF0000", "rgb(255, 0, 0)" 等。
  8. 文字阴影:使用 text-shadow 属性设置文字阴影效果,如 "2px 2px 2px #000"。
  9. 文字转换:使用 text-transform 属性设置文字转换方式,如 "uppercase"(大写)、"lowercase"(小写)和 "capitalize"(首字母大写)。
  10. 文字间距:使用 letter-spacing 属性设置字母之间的间距,如 "2px"、"0.1em" 等。
  11. 文字行高:使用 line-height 属性设置文字行高,如 "1.5"、"1.5em"、"150%" 等。

以下是一些示例代码:

/* 设置字体样式 */
p {
font-family: Arial, sans-serif;
}
/* 设置字体大小 */
h1 {
font-size: 24px;
}
/* 设置字体粗细 */
strong {
font-weight: bold;
}
/* 设置字体样式 */
em {
font-style: italic;
}
/* 设置文本对齐 */
ul {
text-align: left;
}
/* 设置文本装饰 */
a {
text-decoration: underline;
}
/* 设置文本颜色 */
h2 {
color: #FF0000;
}
/* 设置文字阴影 */
h3 {
text-shadow: 2px 2px 2px #000;
}
/* 设置文字转换 */
p {
text-transform: capitalize;
}
/* 设置文字间距 */
p {
letter-spacing: 1px;
}
/* 设置文字行高 */
p {
line-height: 1.5;
}

CSS文本的对齐、缩进和行高可以通过以下属性进行设置:

  1. 对齐(text-align):用于设置文本的水平对齐方式,可选值有 left、right、center 和 justify。
p { text-align: center; }

  1. 缩进(text-indent):用于设置文本的首行缩进,可以设置为固定像素值或百分比。
p { text-indent: 2em; }
  1. 行高(line-height):用于设置文本行之间的垂直间距,可以设置为固定像素值或百分比。
p { line-height: 1.5; }

CSS文本的装饰和转换可以通过以下属性进行设置:

  1. 文本装饰(text-decoration):用于设置文本的装饰效果,可选值有 none、underline、overline、line-through 和 blink。
p { text-decoration: underline; }
  1. 文本转换(text-transform):用于设置文本的大小写转换方式,可选值有 none、capitalize、uppercase 和 lowercase。
h1 { text-transform: uppercase; }
  1. 文本阴影(text-shadow):用于设置文本的阴影效果,可以设置水平偏移、垂直偏移、模糊距离和颜色。
p { text-shadow: 2px 2px 4px #000000; }

传统的面向对象语言中,给对象添加功能常常使用继承的方式,但是继承的方式并不灵活, 还会带来许多问题:一方面会导致超类和子类之间存在强耦合性,当超类改变时,子类也会随之 改变;另一方面,继承这种功能复用方式通常被称为“白箱复用”,“白箱”是相对可见性而言的, 在继承方式中,超类的内部细节是对子类可见的,继承常常被认为破坏了封装性。装饰者模式能够在不改变对象自身的基础上,在程序运行期间给对象动态地添加职责。跟继承相比,装饰者是一种更轻便灵活的做法,这是一种“即用即付”的方式

背景

当我们拍了一张照片准备发朋友圈时,许多小伙伴会选择给照片加上滤镜。同一张照片、不同的滤镜组合起来就会有不同的体验。这里实际上就应用了装饰者模式:是通过滤镜装饰了照片。在不改变对象(照片)的情况下动态的为其添加功能(滤镜)。

需要注意的是:由于 JavaScript 语言动态的特性,我们很容易就能改变某个对象(JavaScript 中函数是一等公民)。但是我们要尽量避免直接改写某个函数,这会导致代码的可维护性、可扩展性变差,甚至会污染其他业务。

什么是 AOP

想必大家对"餐前洗手、饭后漱口"都不陌生。这句标语其实就是 AOP 在生活中的例子:吃饭这个动作相当于切点,我们可以在这个切点前、后插入其它如洗手等动作。

AOP(Aspect-Oriented Programming):面向切面编程,是对 OOP 的补充。利用AOP可以对业务逻辑的各个部分进行隔离,也可以隔离业务无关的功能比如日志上报、异常处理等,从而使得业务逻辑各部分之间的耦合度降低,提高业务无关的功能的复用性,也就提高了开发的效率。

在 JavaScript 中,我们可以通过装饰者模式来实现 AOP,但是两者并不是一个维度的概念。 AOP 是一种编程范式,而装饰者是一种设计模式。

ES3

了解了装饰者模式和 AOP 的概念之后,我们写一段能够兼容 ES3 的代码来实现装饰者模式:

这样我们就实现了抽离拍照与滤镜逻辑,如果以后需要自动上传功能,也可以通过aop函数after来添加。如果我们把它加到函数原型链上,Function.prototype.before 方法和 Function.prototype.after 方法如下图,

那么使用起来就更加方便了

ES5

在 ES5 中引入了Object.defineProperty,我们可以更方便的给对象添加属性:

基于原型链和类的装饰者实现

我们知道,在 JavaScript 中,函数也好,类也好都有着自己的原型,通过原型链我们也能够很方便的动态扩展,以下是基于原型链的写法:

使用 ES7 修饰器实现装饰者

在 ES7 中引入了@decorator 修饰器的提案,参考阮一峰的文章。修饰器是一个函数,用来修改类的行为。目前Babel转码器已经支持。注意修饰器只能装饰类或者类属性、方法。三者的具体区别请参考 MDN Object.defineProperty ;而 TypeScript 的实现又有所不同:TypeScript Decorator。

可以看到,使用修饰器的代码非常简洁明了。

场景:性能上报

装饰者模式可以应用在很多场景,典型的场景是记录某异步请求请求耗时的性能数据并上报:

这样使用@report修饰后的代码就会上报请求所消耗的时间。扩展或者修改report函数不会影响业务代码,反之亦然。

场景:异常处理

我们可以对原有代码进行简单的异常处理,而无需侵入式的修改:

通过以上两个示例我们可以看到,修饰器的定义很简单,功能却非常强大,尤其是在nodejs的开发中,装饰器很常用、很好用,也很有用。


小结

我们一步一步通过高阶函数、原型链、Object.defineProperty和@Decorator分别实现了装饰者模式。接下来在回顾一下:

  • 装饰者模式非常适合给业务代码附加非业务相关功能(如日志上报),就如同给照片加滤镜;
  • 装饰者模式非常适合无痛扩展别人的代码(你经常需要接手别人的项目吧)

下期预告:

微信小程序视频教程来啦,每周末都有前端视频教程学

参考文章:

https://juejin.im/post/5d0f5dd551882532d72507f2

https://juejin.im/post/5c2e10a76fb9a049c0432697

eb前端开发课程:css文本模块-文本装饰。

讲课人:波波老师。

text-decoration:文字添加装饰。line-height:行高。text-shadow:文字添加阴影。text-align:文字水平对齐方式。word-break:文本自动换行。word-wrap:长单词自动换行。

text-decoration文本的装饰主要用于设置文本的上划线、下划线和中划线,也就是删除线。这个功能最主要的用处是处理链接默认自带的下划线。

来看一下代码。

·首先来做一个链接,可以看到这个链接是带一个下划线的,把下划线去掉。text-decoration:none,可以看到下划线就去掉了。

·然后再来做class="under",等于下部。class="over",这个class="del"。从下划线、上划线、删除线。

·来做这三个样式。首先是得.under,把它做成underline,可以看underline是有下划线的。再做一个overline,做成overline,overline是上划线。这个有点近了,把它分开,这回可以看到这个是有上划线的。再做一个删除线,del,看到这个做了一个删除线。

这个先讲到这里,进行下一个。