CSS系列 - 文本溢出

32 阅读1分钟

单行文本

p {
  width: 100px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

多行文本 -webkit-box

div {
  width: 100px;
}
p {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

多行文本 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>多行文本</title>
  </head>
  <body>
    <div
      id="view"
      style="border: 1px solid red; width: 200px; height: 60px; overflow: auto"
    ></div>
  </body>
  <script>
    let s =
      "这是一个文本这是一个文本这是一个文本这是一个文本这是一个文本这是一个文本";
    let el = document.getElementById("view");
    let n = el.offsetHeight;
    for (i = 0; i <= s.length; i++) {
        el.innerHTML = s.substr(0, i);
      if (n < el.scrollHeight) {
        el.style.overflow = "hidden";
        el.innerHTML = s.substr(0, i - 3) + "...";
        break;
      }
    }
  </script>
</html>

多行文本 position

p {
  width: 100px;
  position: relative;
  line-height: 1.5em;
  /*高度为需要显示的行数*行高,比如这里我们显示两行,则为3*/
  height: 3em;
  overflow: hidden;
}

p:after {
  content: "...";
  position: absolute;
  bottom: 0;
  right: 0;
  background-color: #fff;
}