想不想让网页中的文字更美一些呐?

595 阅读6分钟

1. 文字阴影效果

(1) 使用text-shadow可以使文字有阴影,其使用方式为
  text-shadow : x轴偏移 y轴偏移 扩散度 颜色;

<style type="text/css">
    div{
        font-size:60px;
        text-shadow : 5px 20px 3px red;
    }
</style>
<body>
    <div>文字阴影</div>
</body>

运行效果如下:

(2) 设置文字模糊效果的几种方式

1) 使用rgba制作文字模糊

2) 用opacity制作文字模糊

3) 设置文字阴影,然后再利用text-fill-color属性将文字填充颜色设置为透明,也可以达到文字模糊的效果

<style type="text/css">
    .demo1{
        font-size:60px;
        color:rgba(0,0,0,.3);
    }
    .demo2{
        font-size:60px;
        opacity: 0.3;
    }
    .demo3{
        font-size:60px;
        text-shadow:0 0 8px;
        -webkit-text-fill-color: transparent;   /*将文字填充颜色设置为透明*/
    }
</style>
<body>
    <div class="demo1">示例文字1</div>
    <div class="demo2">示例文字2</div>
    <div class="demo3">示例文字3</div>
</body>

运行效果如下:

(3) 设置文字镂空效果

需要利用text-stroke属性来设置文字镂空。

<style type="text/css">
    div{
        font-size:60px;
        -webkit-text-fill-color: transparent;
        -webkit-text-stroke: 1px red;
    }
</style>
<body>
    <div>文字镂空</div>
</body>

运行效果如下:

(4) 文字的渐变效果

<style type="text/css">
    div{
        font-size:60px;
        -webkit-text-fill-color: transparent;
        background:linear-gradient(to bottom,#fff,red);
        -webkit-background-clip: text; /*规定背景的绘制区域*/
    }
</style>
<body>
    <div>文字渐变</div>
</body>

运行效果如下:

(5) CSS3新增了一些文字对齐的属性

1) text-align新增加了如下四个属性值:

justify 两端对齐,但是对于换行及最后一行不做处理;

start 如果是水平方向,则类似于left;如果是垂直方向,则类似于top;

end 如果是水平方向,则类似于right;如果是垂直方向,则类似于bottom;

justify-all 效果等同于justify,但是会对最后一行也两端对齐(Chrome浏览器不支持此属性)

<style type="text/css">
    div{
        width:300px;
        border:1px solid #dedede;
        margin-bottom:10px;
    }
    div:nth-of-type(1){
        text-align:justify;
    }
    div:nth-of-type(2){
        text-align:start;
    }
    div:nth-of-type(3){
        text-align:end;
    }
    div:nth-of-type(4){
        text-align: justify-all;
    }
</style>
<body>
    <div>这是justify对齐</div>
    <div>这是start对齐</div>
    <div>这是end对齐</div>
    <div>这是justify-all对齐</div>
</body>

运行效果如下:

如果想让start和end在垂直方向上起作用,还需要配合一些其他的属性:

<style type="text/css">
    div{
        width:100px;
        height:200px;
        float:left;
        writing-mode: vertical-lr;
        border:1px solid #dedede;
        margin-right:10px;
    }
    div:nth-of-type(1){
        text-align:start;
    }
    div:nth-of-type(2){
        text-align:end;
    }
</style>
<body>
    <div>这里是start</div>
    <div>这里是end</div>
</body>

运行结果如下:

2) 末尾文本对齐

text-align-last,它是用来设置最后一行文字的对齐方式,与text-align几乎相同。

<style type="text/css">
    div{
        width:256px;
        float:left;
        margin-right:10px;
        border:1px solid #dedede;
    }
    div:nth-of-type(1){
        text-align-last:justify;
    }
    div:nth-of-type(2){
        text-align-last: start;
    }
    div:nth-of-type(3){
        text-align-last: end;
    }
</style>
<body>
    <div>这是一段很长的文字这是一段很长的文字</div>
    <div>这是一段很长的文字这是一段很长的文字</div>
    <div>这是一段很长的文字这是一段很长的文字</div>
</body>

运行效果如下:

可以看到它只对最后一行文本起作用。

3) 文本书写模式

在CSS3中,还新增了一个文本书写模式的属性writing-mode,它的属性值有:
horizontal-tb 水平方向,从上到下的书写方式;
vertical-rl 垂直方向,从右到左的书写方式;
vertical-lr 垂直方向,从左到右的书写方式;
lr-tb 效果同horizontal-tb(用在IE中)
tb-rl 效果同vertical-rl(用在IE中)
<style type="text/css">
    div{
        width:150px;
        height:100px;
        border:1px solid red;
        margin-bottom:10px;
    }
    div:nth-of-type(1){
        writing-mode: horizontal-tb;
    }
    div:nth-of-type(2){
        writing-mode: vertical-rl;
    }
    div:nth-of-type(3){
        writing-mode: vertical-lr;
    }
    div:nth-of-type(4){
        writing-mode: lr-tb;
    }
    div:nth-of-type(5){
        writing-mode: tb-rl;
    }
</style>
<body>
    <div>水平方向,从上到下的书写方式</div>
    <div>垂直方向,从右到左的书写方式</div>
    <div>垂直方向,从左到右的书写方式</div>
    <div>水平方向,从上到下的书写方式</div>
    <div>垂直方向,从右到左的书写方式</div>
</body>

运行效果如下:

4) 关于文字的一些其他属性

文字超出容器宽度,文字隐藏

文字在一行显示,超出的文字显示为省略号,代码如下:

<style type="text/css">
    div{
        width:150px;
        overflow:hidden;
        text-overflow:ellipsis;
        white-space:nowrap;
        border:1px solid red;
    }
</style>
<body>
    <div>文字超出容器溢出文字超出容器溢出文字超出容器溢出</div>
</body>

运行效果如下:

除了用CSS,还可以用javascript来实现超出文字隐藏的效果,判断文字的length属性,如果length大小达到指定个数时就让它隐藏。

在实际的业务需求中,有时文字可能不是单行隐藏,而是超过两行才隐藏。在webkit内核的浏览器中有一个line-clamp属性,它可以用来限制一个块元素显示的文本行数。
<style type="text/css">
    div{
        width:150px;
        overflow:hidden;
        text-overflow: ellipsis;
        display:-webkit-box;    /*必须结合该属性,将对象作为弹性盒模型*/
        -webkit-line-clamp:2;   
        -webkit-box-orient: vertical;   /*必须结合该属性,设置或检索弹性盒子的子元素的排列方式*/
        border:1px solid red;
    }
</style>
<body>
    <div>今天是元旦,告别2017,迎来2018。今天是元旦,告别2017,迎来2018。</div>
</body>

运行效果如下:

CSS还有一个将字母转换大小写的属性————text-transform

<style type="text/css">
    .box div:nth-of-type(1){
        text-transform:capitalize;
    }
    .box div:nth-of-type(2){
        text-transform: uppercase;
    }
    .box div:nth-of-type(3){
        text-transform: lowercase;
    }
</style>
<body>
    <div class="box">
        <div>css样式:capitalize(首字母大写)</div>
        <div>css样式:uppercase(全部大写)</div>
        <div>css样式:lowercase(全部小写)</div>
    </div>
</body>

运行效果如下: