# :first-letter

:first-letter (opens new window) 选择器用于设置文本首字母的样式,注意这个元素得是块级的。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    span {
      display: inline-block;
      font-weight: bold;
      font-size: 20px;
    }
    span:first-letter {
      color: red;
    }
  </style>
</head>
<body>
  <span>¥88</span>
</body>
</html>

效果如下:

# text-transform

text-transform (opens new window) CSS属性指定如何将元素的文本大写。它可以用于使文本显示为全大写或全小写,也可单独对每一个单词进行操作。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>text-transform</title>
  <style>
    .p1 {
      text-transform: capitalize;
    }
    .p2 {
      text-transform: uppercase;
    }
    .p3 {
      text-transform: lowercase;
    }
  </style>
</head>

<body>
  <p class="p1">首字母大写: hello world</p>
  <p class="p2">大写字母:hello world</p>
  <p class="p3">小写字母:HELLO WORLD</p>
</body>

</html>

效果如下:

# word-spacing

word-spacing指的是字符“空格”的间隙。如果一段文字中没有空格,则该属性无效。下面代码设定空格间隙是20px,也就是说空格现在占据的宽度是原有的空格宽度+20px的宽度:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>word-spacing</title>
  <style>
    p {
      word-spacing: 20px;
    }
  </style>
</head>
<body>
  <p>有空格的效果:你好呀,我的宝宝</p>
  <p>没有空格的效果:你好呀,我的 宝宝</p>
</body>
</html>

效果如下:

# 单行溢出显示省略号












 
 
 
 
 
 










<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    div {
      width: 200px;
      /* 超出部分隐藏 */
      overflow: hidden;
      /* 禁止换行 */
      white-space: nowrap;
      /* 省略号 */
      text-overflow: ellipsis;
    }
  </style>
</head>

<body>
  <div>白日依山尽,黄河入海流。欲穷千里目,更上一层楼。</div>
</body>

</html>

效果如下:

# 多行文本溢出显示省略号













 
 
 
 
 
 
 
 
 











<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>多行溢出显示省略号</title>
  <style>
    div {
      width: 200px;

      overflow: hidden;
      display: -webkit-box;
      /* 从顶部向底部垂直布置子元素 */
      -webkit-box-orient: vertical;
      text-overflow: ellipsis;
      /* 将 块容器 中的内容限制为指定的行数. 它只有在 display 属性设置成 -webkit-box 或者 -webkit-inline-box 并且 -webkit-box-orient 属性设置成 vertical时才有效果 */
      -webkit-line-clamp: 2;
      /* 允许在单词内换行,让英文换行 */
      word-break: break-all;
    }
  </style>
</head>

<body>
  <div>白日依山尽,黄河入海流。欲穷千里目,更上一层楼。白日依山尽,黄河入海流。欲穷千里目,更上一层楼。</div>
  <div>lassjdlfasjdflkasjdlfkajsdlkfajsldkjfalksdjflaksjdflasjdlfkjalsdkf</div>
</body>

</html>

效果如下:

上面我们实现了多行文本的换行,是不是很简单,但是呢,这种实现方式存在兼容问题,只适用于 webkit 内核的浏览器,一般用于移动端开发效果还是不错的。如果使用过程中出现了兼容问题,我们可以使用 JS 来实现上面的功能。

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    #content {
      width: 200px;
      line-height: 30px;
      font-size: 20px;
    }
  </style>
</head>

<body>
  <div id="content"></div>

  <script>
    const contentData = '白日依山尽,黄河入海流。欲穷千里目,更上一层楼。'

    multiline(content, 2, contentData)

    function multiline(el, row, str) {
      const computedStyle = document.defaultView.getComputedStyle(el, null)
      const lineHeight = computedStyle.lineHeight
      const contentHeight = row * parseInt(lineHeight)
      let i = 0
      if (el.offsetHeight == 0 || (el.offsetHeight > contentHeight)) {
        el.innerHTML = ''
        let tempStr = ''
        while (el.offsetHeight <= contentHeight) {
          tempStr = str.substring(0, i + 1);
          i++;
          el.innerHTML = tempStr
        }
        el.innerHTML = str.substring(0, tempStr.length - 2) + '...';
        el.height = contentHeight
      }
    }
  </script>
</body>

</html>

效果如下:

上面我们通过 JS 实现了多行文本显示省略号的的功能,代码代码也不复杂