CSS文本属性
text-decoration(常用)
text-decoration:用于设置文字的装饰线;有常见的如下取值:
- none:无任何装饰线,可以用来去除a元素默认的下划线
- underline:下划线;
- overline:上划线;
- line-through:中划线(删除线)
a元素有下划线的原因:本质就是添加了text-decoration属性。
text-transform(一般)
text-transform:用于设置文字的大小写转换;
text-transform有几个常见的取值:
- capitalize:每个单词的首字符大写;
- uppercase:每个单词都是大写
- lowercase:每个单词都是小写
- none:不变,没影响;
实际开发中,JavaScript转换使用的更多,通过css改变单词大小写用的较少;
text-indent(一般)
text-indent:用于设置第一行内容的缩进;
如果我们傻傻的写:text-indent:10px,那么换成移动端的时候就会存在出入,在开发中我们更常用的调试技巧是通过em;
我们的缩进应该是缩进2个文字的大小,如果一个文字的大小(font-size:30px),那么text-indent就需要是:60px;
em:是相对于字体的大小;
text-indent:2em:刚好是缩进2个文字;
text-align(重要)
text-align:定义行内内容(例如文字)如何相对它的块父元素对齐。text-align 并不控制块元素自己的对齐,只控制它的行内内容的对齐。
常用值:
- left:左对齐
- right:右对齐
- center:居中显示
- justify:两端对齐
.box{
text-align:center;
}
.content{
}
<div class = "box">
<div class = "content"></div>
</div>
在父级中书写text-align,让子级行内元素居中
letter-spacing、word-spacing(一般)
letter-spacing、word-spacing分别用于设置字母、单词之间的间距;
默认是0,也可以设置为负数;
CSS字体属性
font-size(重要)
font-size:决定文字的大小;
常用的设置:
- 具体数值+单位
- 比如100px
- 也可以使用em单位(不推荐):1em代表100%,2em代表200%,0.5em代表50%
- 百分比
- 基于父元素的font-size计算,比如50%就表示等于父元素的font-size大小的一半;
font-family(重要,不过一般就设置一次)
font-family用于设置文字的字体名称;
- 可以设置1个或多个字体名称(防止某些字体用不了,因为有的电脑没下载这个字体就会不支持);
- 浏览器会选择列表中第一个该计算机上有安装的字体;
- 或者是通过
@font-face指定的可以直接下载的字体;
font-weight(重要)
font-weight:用于设置文字的粗细(中粮)
常见的取值:
- 100|200|300|...|900:每一个数字代表一个重量;
- normal(正常):等于400
- bold(加粗):等于700
strong、b、h1~h6这些标签的font-weight默认就是bold
font-style(一般)
font-style用于设置文字的常规、斜体;
- normal:常规显示;
- italic(斜体):用字体的斜体显示(除了倾斜还会有专门的字体);
- oblique(倾斜):文本倾斜显示(仅仅是让文字倾斜)
em、i、cite、address、var、dfn等元素的font-style默认就是italic
line-height(常用)
line-height:用于设置文本的行高,行高可以理解为【一行文字】所占据的高度
行高的严格定义是:两行文字基线之间的间距;
基线:与小写字母x最底部对齐的线;
英语中,文字书写不超过顶线与底线,中线是取中值,而基线是基于底线稍微上一点的线。
设置line-height:30px;就意味着2行的基线差额为30px;
设置基线的高度,通过数学转换,也意味着等同于这行文本的高度;即:基线高度 = 该行的文本高度
文本的高度和字体大小(font-size)有关,如果行高line-height:40px;font-size:24px;,还会剩下16px的距离,16px就是行距,这个行距就会/2放在顶线和底线的上下面。此时就会做到居中的效果;
注意区分height和line-height的区别:
- height:是元素整体的高度;
- line-height:元素中,每一行文字所占据的高度;
假设div中只有一行文字,如果让这行文字在div内部垂直居中?
答:让line-height等同于height,意味着行高-文本字体大小,平均分出多余行高,文字就会显得垂直居中;
行高只可以让【文本居中】!
font
font是一个缩写属性,可以用来作为font-style,font-variant,font-weight,font-size,line-height和font-family属性的简写;
font-style,font-variant,font-weight(前面这些都可以省略),font-size/line-height,font-family
规则:font-style,font-variant,font-weight可以随意调换顺序,也要可以省略;
/line-height也可以省略,如果不省略,必须跟在font-size后面;
font-size,font-family不可以调换顺序,不可以省略;
.box{
//关于字体的属性:
font-size:30px;
font-weight:700;
font-variant:small-caps;
font-style:italic;
font-family:serif;
line-height:30px;
//缩写属性:
font:italic 700 30px/30px serif;
}
CSS常见选择器
选择器再复杂,也是为了按照一定规则,来选中某个元素,然后添加CSS样式。
通用选择器
通用选择器:所有的元素都会被选中;
一般用来给所有元素作一些通用性的设置:使用*{}
- 比如内边距、外边距;
- 比如重置一些内容;
//匹配所有元素,设置字体大小
*{
font-size:30px;
}
<div>
<p></p>
</div>
效率比较低,尽量不要使用
元素选择器
使用元素的名称
3个div都会生效
类选择器
使用.类名
id选择器
使用#id
注意事项:
- 一个HTML文档中的id值是唯一的,不能重复;
- 可以给很多元素加上同一个class选择器,但是只能给一个元素加上id选择器;
- id如果由多个单词组成,使用中划线-,下划线_,也可以使用驼峰命名;
- 最好不要用标签名作为id值
属性选择器
后代选择器
<div class = "box">
<div>
<span>哈哈哈</span>
</div>
</div>
<div class = "box">
<span>呵呵呵</span>
</div>
- 所有的后代(直接/间接的后代)
- 选择器之间以空格分割
.box span{
color:red;
}
哈哈哈、呵呵呵都变成了红色
- 直接自带选择器(必须是直接自带)
- 选择器之间以
>分割;
- 选择器之间以
.box > span{
color:red;
}
只有呵呵呵是红色的
兄弟选择器(了解)
<div class = "one">哈哈哈</div>
<div>呵呵呵</div>
<div>嘿嘿嘿</div>
<div>嘻嘻嘻</div>
- 相邻的兄弟选择器
- 使用符号
+连接
- 使用符号
.one + div{
color:red;
}
只有离one类最近的那个div会变色,也就是呵呵呵;
- 普遍兄弟选择器
- 使用符号
~连接
- 使用符号
.one ~ div{
color:red;
}
只要跟one类同级的div都会变色,也就是呵呵呵、嘿嘿嘿、嘻嘻嘻都会变色;
选择器组-交集选择器
交集选择器:需要同时符合两个选择器条件(两个条件选择器紧密连接)
- 在开发中通常为了
精准的选择某一个元素
只给div标签,并且是one类进行样式添加:
<div class = "one">哈哈哈</div>
<div>呵呵呵</div>
<p class = "one">嘻嘻嘻</p>
不能有空格,有空格就是div下的子类为one的;紧挨着就表示要同时满足
div.one{
color:red;
}
选择器组-并集选择器
并集选择器:符合一个选择器即可(两个选择器以,号分割)
- 在开发中通常为了给多个元素设置相同的样式;
one类或者two类,都可以添加样式
<div class = "one">哈哈哈</div>
<p class = "twp">呵呵呵</p>
.one,.two{
color:blue;
font-size:20px;
}
伪类
伪类是选择器的一种,它用于选择处于特定状态的元素;
比如我们经常会实现的:当鼠标放在一个元素上时,显示另外一个颜色;因为放在一个元素上,处于一个特定的状态;
2、3用的很少,4常用于input元素
动态伪类
使用举例:a元素
a:link:未访问的链接(只能用于a元素);a:visited:已访问的链接(只能用于a元素);a:hover:鼠标挪动到连接上(重要);a:active:激活的链接(鼠标在连接上长按,未松开);
// 1. a元素的链接从来没被访问过:
a:link{
color:red;
}
// 2. a元素被访问过了颜色:
a:visited{
color:green;
}
// 3. a元素鼠标放在(悬浮)上面:
a:hover{
color:blue;
}
// 4. 点下去,还没有松手的状态
a:active{
color:purple;
}
使用注意:
:hover:必须放在:link和:visited后面才能完全生效;:active:必须放在:hover后面才能完全生效- 所以编写的顺序是:
:link、:visited、:hover、:active;
除了a元素,:hover、:active也能用在其他元素上
focus
:focus指:当前拥有输入焦点的元素(能接受键盘的输入)
- 文本输入框一旦聚焦后,背景就会变成红色;
- 因为链接
a元素可以被键盘的Tab键选中聚焦,所以:focus也适用于a元素;
a:focus{
color:yellow
}
动态伪类建议编写顺序为:
:link、:visited、:focus、:hover、:active;
直接给a元素设置样式,相当于给a元素所有的动态伪类都设置了
伪元素
常见的伪元素有:是一个意思,只不过2种写法。
:first-line、::first-line:first-letter、::first-letter:before、::before:after、::after
为了区分【伪元素】和【伪类】,建议【伪元素】使用2个冒号,比如:::first-line
伪元素::first-line和::first-letter
::first-line可以针对【首行文本设置属性】。::first-letter可以针对【首字母设置属性】
首先要是p标签,并且选中首行/首字母
伪元素::before和::after(常用)
::before和::after用来在一个元素的【内容之前】或者【内容之后】插入其他内容(可以是文字、图片)。
经常通过content属性,来为一个元素添加修饰性的内容;
.box3::after{
content:'cba',
color:orange
}
<div class = "box3">
我是box3
</div>
输出:我是box3cba(cba是橘色)
但是这种只能让box3来添加,功能不够通用;
为了增加可通用性,我们经常:如果想要添加相同样式的,再添加一个item类即可;
.item::before{
content:'123'
}
.item::after{
content:'321',
content:url('内部图片');
}
<div class = "box3 item"></div>
<div class = "box4 item"></div>
<div class = "box5 item"></div>