如何理解和应用CSS中的浮动元素定位,利用纯 CSS 实现多行文本省略的技巧

在网页设计中,经常会遇到需要显示多行文本内容但又不希望占用过多空间的情况。为了优化用户体验和页面布局,我们可以使用纯 CSS 技巧来实现多行文本省略。

本文将介绍几种常见的方法,帮助你轻松实现这一效果。

示例一:利用纯 CSS 实现多行文本省略的技巧

1. 使用 `text-overflow: ellipsis` 属性

`text-overflow: ellipsis` 是一个常用的 CSS 属性,它可以在文本溢出容器时显示省略号。结合其他样式属性,我们可以实现多行文本的省略效果。

以下是一个示例代码,展示如何使用 `text-overflow: ellipsis` 实现多行文本省略:

.text {
  display: -webkit-box;
  -webkit-line-clamp: 3; /* 显示三行文本 */
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
}

在上述代码中,我们将 `.text` 元素设置为一个 Flex 容器,并通过 `-webkit-line-clamp` 属性限制了文本的行数为 3 行。当文本超出 3 行时,将显示省略号。

2. 结合伪元素进行更精细的控制

如果你希望在省略号之前添加额外的提示符号或者更改省略号的样式,可以使用伪元素来实现。

以下是一个示例代码,展示如何结合伪元素进行更精细的多行文本省略控制:

.text {
  position: relative;
  display: -webkit-box;
  -webkit-line-clamp: 3; /* 显示三行文本 */
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.text::after {
  content: "..."; /* 省略号 */
  position: absolute;
  bottom: 0;
  right: 0;
  padding-left: 2px; /* 可调整间距 */
  background-color: #fff; /* 可调整背景颜色 */
}

在上述代码中,我们通过给 `.text` 元素设置 `position: relative`,为 `.text::after` 伪元素添加省略号,并通过调整 `padding-left` 属性和 `background-color` 属性来自定义省略号的样式。

3. 使用 JavaScript 库

除了纯 CSS 的方法外,还可以借助一些 JavaScript 库来实现多行文本省略。例如,`line-clamp.js`、`clamp.js` 或 `dotdotdot.js` 等库提供了更多的定制选项和动态调整功能,适用于各种场景。

请注意,使用 JavaScript 库可能会增加页面加载时间和对第三方库的依赖,所以在决定使用时请权衡利弊。

示例二:纯 CSS 实现多行文本

Html代码

<div class="wrapper">
  <input id="exp1" class="exp" type="checkbox">
  <div class="text">
    <label class="btn" for="exp1"></label>
    浮动元素是如何定位的
    正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。
    在下面的图片中,有三个红色的正方形。其中有两个向左浮动,一个向右浮动。要注意到第二个向左浮动的正方形被放在第一个向左浮动的正方形的右边。如果还有更多的正方形这样浮动,它们会继续向右堆放,直到填满容器一整行,之后换行至下一行。
  </div>
</div>

<div class="wrapper">
  <input id="exp2" class="exp" type="checkbox">
  <div class="text">
    <label class="btn" for="exp2"></label>
    浮动元素是如何定位的
    正如我们前面提到的那样,当一个元素浮动之后,它会被移出正常的文档流,然后向左或者向右平移,一直平移直到碰到了所处的容器的边框,或者碰到另外一个浮动的元素。
  </div>
</div>

CSS代码

.wrapper {
    display: flex;
    margin: 50px auto;
    width: 800px;
    overflow: hidden;
    border-radius: 8px;
    padding: 15px;
    box-shadow: 20px 20px 60px #bebebe,
    -20px -20px 60px #ffffff;
  }
 
  .text {
    font-size: 20px;
    overflow: hidden;
    text-overflow: ellipsis;
    text-align: justify;
    position: relative;
    line-height: 1.5;
    max-height: 4.5em;
    transition: .3s max-height;
  }
 
  .text::before {
    content: '';
    height: calc(100% - 26px);
    float: right;
  }
 
  .text::after {
    content: '';
    width: 999vw;
    height: 999vw;
    position: absolute;
    box-shadow: inset calc(100px - 999vw) calc(30px - 999vw) 0 0 #e5eff8;
    margin-left: -100px;
  }
 
  .btn {
    position: relative;
    float: right;
    clear: both;
    margin-left: 20px;
    font-size: 16px;
    padding: 0 8px;
    background: #3F51B5;
    line-height: 24px;
    border-radius: 4px;
    color: #fff;
    cursor: pointer;
  }
 
  .btn::after {
    content: '展开'
  }
 
  .exp {
    display: none;
  }
 
  .exp:checked + .text {
    max-height: 200px;
  }
 
  .exp:checked + .text::after {
    visibility: hidden;
  }
 
  .exp:checked + .text .btn::before {
    visibility: hidden;
  }
 
  .exp:checked + .text .btn::after {
    content: '收起'
  }
 
  .btn::before {
    content: '...';
    position: absolute;
    left: -5px;
    color: #333;
    transform: translateX(-100%)
  }

结论

多行文本省略在网页设计中经常用到,它能够提升页面布局的美观性和用户体验。本文介绍了使用纯 CSS 技巧实现多行文本省略的方法,包括 `text-overflow: ellipsis` 属性和结合伪元素进行更精细控制。此外,还提及了一些 JavaScript 库供参考。

根据实际需求,选择适合的方法来实现多行文本省略效果,以提升网页的可读性和用户友好性。文章来源地址https://www.toymoban.com/diary/web/600.html

到此这篇关于如何理解和应用CSS中的浮动元素定位,利用纯 CSS 实现多行文本省略的技巧的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/web/600.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
使用js判断用户是否打开控制台,是否按F12
上一篇 2023年12月17日 16:26
软件产品开发:如何避免过度设计
下一篇 2023年12月19日 20:22

相关文章

  • CSS 浮动 & 定位

    用 CSS 来摆放盒子,把盒子摆放到相应位置。 CSS 提供了三种传统布局方式(简单说就是盒子如何进行排列)。 普通流(标准流) 浮动 定位 默认的块元素会占满父元素的宽度,设置浮动之后,按照设置浮动的方向 进行缩小,缩小到内部的内容的宽度为准,之后漂浮在页面上

    2024年01月19日
    浏览(41)
  • CSS三大定位方式(浮动、定位、弹性盒)详细解析

    前言:作为一名前端开发,已经工作2年了。由于自己是半路出家,从嵌入式方向转到前端开发,都是边百度边开发,很多基础都不了解,只要解决问题就好,但是近来为了让自己知识体系化,也是为了让自己走的更远,所以写此文来系统学习一下css中的三大定位方式(浮动、

    2024年02月21日
    浏览(39)
  • CSS元素浮动

    在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。 脱离文档流。 不管浮动前是什么元素,浮动后,默认宽与高都是被内容撑开的(尽可能小),而且可以设置宽高。 不会独占一行,可以与其他元素共用一行。 不会margin合并,也不会margi

    2024年02月09日
    浏览(35)
  • css 伪元素和浮动

    效果 伪元素 CSS 伪元素用于设置元素指定部分的样式。 例如,它可用于: 设置元素的首字母、首行的样式 在元素的内容之前或之后插入内容 效果 浮动 早期:图文环绕 现在:网页布局 图文环绕 浮动特点 浮动的标签 顶对齐 浮动: 在一行排列, 宽高生效 – 浮动后的标签具备

    2024年02月13日
    浏览(35)
  • HTML--CSS--浮动布局及定位布局

    块元素独占一行 行内元素在有多个的时候,就是从左到右排在一行 块元素包括: div , p , hr 行内元素: span , i , img float 属性: left 向左 right 向右 作用我目前看起来就是浮动元素的宽度是由内容决定的,而不是占满 效果: 但是需要注意,如果给定的宽度不够,效果会偏差:

    2024年01月19日
    浏览(42)
  • 前端学习笔记:CSS中浮动的原理,定位

    这是本人学习的总结,主要学习资料如下 马士兵教育 float设计的初衷是为了有文字环绕图片的效果,比如下图。 所以有浮动效果的元素一定不会遮挡其他元素的文字。比如有两个 div ,两个 div 都有文字,正常文字在 div 左上角。 我们设置一个浮动一个不浮动,我们会看到浮

    2024年02月03日
    浏览(38)
  • 【前端|CSS系列第3篇】CSS盒模型、浮动及定位

    在前端开发中,CSS是一项重要的技术,用于控制网页的样式和布局。在本系列的第三篇文章中,我们将学习CSS的盒模型、浮动以及定位,这些概念和技术在页面布局中起着至关重要的作用。通过本文的学习,希望能够帮助大家更好地理解和运用这些关键概念。 CSS盒模型是用来

    2024年02月11日
    浏览(41)
  • Selenium之css如何实现元素定位,你了解多少?

    前言 世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!! Selenium定位元素的方法有很多种,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大, 随着自动化测试的深入,和不同框架要求,会发现上面的定位方式无法解

    2024年02月16日
    浏览(39)
  • CSS:给子元素设置了浮动,页面缩放的时候,子元素往下掉

    给子元素设置了浮动,页面缩放的时候,子元素往下掉 html代码: css代码 结果: 但页面缩放的时候,第二个子元素会往下掉 给子元素最外层的大盒子设置宽高即可解决,比如给父盒子设置宽度,其2宽度至少是2个子盒子的宽度之和 页面缩放后,蓝色的子盒子不会掉下去:

    2024年02月17日
    浏览(37)
  • CSS Day6-Day8 浮动和定位

    6.1 浮动 float 使一个元素向其父元素的左侧或右侧移动,从而脱离文档流 可选值: none,默认值,元素默认在文档流中排列 浮动特点 1.给元素设置浮动,该元素就会脱离标准文档流,不再占据原来的位置 2.浮动元素不会超出父元素 3.给元素设置浮动后,该元素将会变成行内块

    2024年02月01日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包