CSS实现实现当文本内容过长时,中间显示省略号...,两端正常展示

在这里插入图片描述
在这里插入图片描述

HTML 结构解析

  • 文档结构:
    • <ul class="con">: 一个无序列表,包含多个列表项。
      • 每个 <li class="wrap"> 表示一个列表项,内部有两个 <span> 元素:
        • <span class="txt">: 显示文本内容。
        • <span class="title">: 显示带有 title 属性的文本内容,鼠标悬停到此元素时会显示titile提示。

CSS 样式解析

  • 全局样式:
    • .con:
      • font-size: 14px;: 字体大小为 14 像素。
      • color: #666;: 文字颜色为灰色。
      • width: 600px;: 宽度为 600 像素。
      • margin: 50px auto;: 上下边距为 50 像素,左右居中。
      • border-radius: 8px;: 圆角边框。
      • padding: 15px;: 内边距为 15 像素。
      • overflow: hidden;: 超出部分隐藏。
      • resize: horizontal;: 可以水平调整大小。
      • box-shadow: 20px 20px 60px #bebebe, -20px -20px 60px #ffffff;: 添加阴影效果。
    • .wrap:
      • position: relative;: 相对定位。
      • line-height: 2;: 行高为 2。
      • height: 2em;: 高度为 2 倍字体大小。
      • padding: 0 10px;: 左右内边距为 10 像素。
      • overflow: hidden;: 超出部分隐藏。
      • background: #fff;: 背景颜色为白色(注释掉了)。
      • margin: 5px 0;: 上下边距为 5 像素。
    • .wrap:nth-child(odd):
      • background: #f5f5f5;: 奇数行背景颜色为浅灰色。
    • .title:
      • display: block;: 块级元素。
      • position: relative;: 相对定位。
      • background: inherit;: 继承父元素背景。
      • text-align: justify;: 文本两端对齐。
      • height: 2em;: 高度为 2 倍字体大小。
      • overflow: hidden;: 超出部分隐藏。
      • top: -4em;: 向上偏移 4 倍字体大小。
      • word-break: break-all;:字符可任意断行
    • .txt:
      • display: block;: 块级元素。
      • max-height: 4em;: 最大高度为 4 倍字体大小。
    • .title::before:
      • content: attr(title);: 插入 title 属性的内容。
      • width: 50%;: 宽度为 50%。
      • float: right;: 右浮动。
      • white-space: nowrap;: 不换行。
      • overflow: hidden;: 超出部分隐藏。
      • text-overflow: ellipsis;: 超出部分显示省略号。
      • direction: rtl;: 文本方向从右到左。
      • background: green;: 背景颜色为绿色。
      • text-align: justify;: 文本两端对齐。

功能解析

  • 文本溢出处理:

    • 使用 overflow: hidden;text-overflow: ellipsis; 处理文本溢出,超出部分显示省略号。
    • 使用 ::before 伪元素插入 title 属性的内容,并设置样式使其在右侧显示。
  • 列表项样式:

    • 列表项交替背景颜色,奇数行背景为浅灰色,偶数行为默认背景色。
    • 列表项的高度和内边距设置使得内容整齐排列。
  • 阴影效果:

    • 列表容器 .con 使用 box-shadow 添加阴影效果,增强视觉效果。
<!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>
</head>
<body><ul class="con"><li class="wrap"><span class="txt">B123我_YSDF_13y98139_beijingtouc301医院</span><span class="title" title="B123我_YSDF_13y98139_beijingtouc301医院">B123我_YSDF_13y98139_beijingtouc301医院</span></li><li class="wrap"><span class="txt">CSS 实现两端限制==的技巧 - 2021-03-26</span><span class="title" title="CSS 实现两端限制==的技巧- 2021-03-26">CSS 实现两端限制==的技巧- 2021-03-26</span></li><li class="wrap"><span class="txt">CSS 测试切片号,这是一个稍微有点长的切片号,超出一行以后才会有title提示,切片号是  B1-2021-03-26-9YYDS90金山</span><span class="title" title="CSS 测试切片号,这是一个稍微有点长的切片号,超出一行以后才会有title提示,切片号是  B1-2021-03-26-9YYDS90金山">CSS 测试切片号,这是一个稍微有点长的切片号,超出一行以后才会有title提示,切片号是  B1-2021-03-26-9YYDS90金山</span></li><li class="wrap"><span class="txt">B123我YSDF_13y98139_beijingtouc301医院</span><span class="title" title="B123我YSDF_13y98139_beijingtouc301医院">B123我YSDF_13y98139_beijingtouc301医院</span></li>
</ul>
<style>.con {font-size: 14px;color: #666;width: 600px;margin: 50px auto;border-radius: 8px;padding: 15px;overflow: hidden;resize: horizontal;box-shadow: 20px 20px 60px #bebebe, -20px -20px 60px #ffffff;
}.wrap {position: relative;line-height: 2;height: 2em;padding: 0 10px;overflow: hidden;background: #fff;margin: 5px 0;/* border: 1px solid red; */
}.wrap:nth-child(odd) {background: #f5f5f5;
}.title {display: block;position: relative;background: inherit;text-align: justify;height: 2em;overflow: hidden;top: -4em;/* background: red; */word-break: break-all;/* white-space: nowrap; */
}.txt {display: block;max-height: 4em;
}
.title::before{content: attr(title);width: 50%;float: right;white-space: nowrap;overflow: hidden;text-overflow: ellipsis;direction: rtl;/* background: green; */text-align: justify;
}
.test{/* border: 1px solid red; */width: 90px;overflow: hidden;height: 2em;font-size: 14px;line-height: 2;/* white-space: nowrap; */text-overflow: ellipsis;/* text-align: justify; *//* direction: rtl; */
}
</style>
</body>
</html>

思路解析整理

  1. li标签的基础样式

    • 设置line-height: 2;overflow: hidden;height: 2em;,使li标签的高度为当前字体大小的2倍,同时内容超出部分会被隐藏。
    • 由于line-heightheight都设置为2倍字体大小,文本在竖直方向上被居中显示。
  2. li内部两个span标签的作用

    • .txt标签:展示正常不需要省略号的完整文本。
    • .title标签:用来展示需要省略号的文本。
  3. .title的伪类设计

    • 伪类::before样式
      • 设置width: 50%;,搭配float: right;,使伪类的内容靠右显示。
      • 通过这种方式,.title和其伪类各占父级宽度的一半。
  4. 两端对齐

    • .title设置text-align: justify;:文本内容与伪类内容两端对齐,使文本的排列更美观。
    • 伪类内容的方向
      • 使用direction: rtl;设置伪类文本从右向左流动(Right-To-Left)。
      • 配合overflow: hidden;text-overflow: ellipsis;实现伪类文本的省略显示效果。
  5. .title.txt的重叠展示逻辑

    • .title的定位
      • 设置top: -4em;,使.title标签始终覆盖在.txt标签上方。
    • .txt的高度变化
      • 当内容较短时,.txt保持2em的默认高度。
      • 内容较长时,.txt高度扩展至4em(通过max-height: 4em;限制最大高度)。
    • 覆盖逻辑
      • .txt高度变为4em时,.title依旧在其上方,且内容显示为省略效果。

知识点补充:text-align: justify 的特点

  1. 两端对齐

    • 文本两端(左边和右边)与容器边缘对齐。
    • 浏览器通过在单词之间添加额外空格来实现对齐效果。
  2. 最后一行对齐规则

    • 最后一行若仅有一个单词或少量单词,通常不会拉伸至填满整行,而是保持左对齐。

总结

通过伪类::before、定位top、两端对齐text-align: justify等CSS技巧,.title.txt标签在不同情况下能实现动态切换与覆盖,同时保证文本省略和展示效果的平衡。

理解 word-break: break-all;

CSS 属性 word-break 定义了当单词内容过长无法完全显示时,如何进行换行处理。具体到 word-break: break-all;,其作用是强制在任意字符间断行,不考虑单词的完整性。


特点

  1. 打破单词的完整性

    • 即使单词中间,也可以随意断开换行,不遵循单词本身的规则。
    • 示例:
      <div style="width: 100px; word-break: break-all;">Supercalifragilisticexpialidocious
      </div>
      
      如果容器宽度不足,可能会断成:
      Supercalifr
      agilisticex
      pialidociou
      s
      
  2. 适合的场景

    • 处理长串字符:如URL、文件路径、长变量名等,避免长内容超出容器范围。
    • 非自然语言的文本:适用于代码块、标识符或其他无需考虑语义完整性的文本。
  3. 区别于其他值

    • normal(默认值):单词内容不会被打断,只在空格或连字符等允许的换行点进行换行。
    • break-word(已废弃,但某些浏览器仍支持):在必要时打破单词换行,但优先尝试在容器边界处换行。
    • keep-all(主要用于CJK语言):中文、日文、韩文等不在单词间换行,但允许在空格处断行。

示例

<div style="width: 150px; border: 1px solid black; word-break: break-all;">ThisIsAnExtremelyLongWordThatNeedsToBreakInOrderToFitInTheContainer
</div>
显示效果:

如果宽度不足,文本会按字符逐个断行,例如:

ThisIsAnEx
tremelyLong
WordThatNe
edsToBreak
InOrderToF
itInTheCon
tainer

注意事项

  1. 用户体验

    • break-all可能影响阅读流畅性,尤其是自然语言文本时,建议慎用。
    • 对于用户界面(UI)中的长文本,优先考虑其他方式(如overflow: hidden;text-overflow: ellipsis;)。
  2. 语言支持

    • 在中文等连续书写的语言中,word-break: break-all;几乎不会有可见效果,因为中文默认可以在任意字符处换行。

总结

word-break: break-all; 是一个强制性换行的规则,适用于需要在字符级别强制换行的场景,但对自然语言文本的可读性可能有负面影响,适合用在代码、高级表格或非语言文本的情况下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476219.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法:直接插入排序,希尔排序,选择排序,快速排序,堆排序,归并排序

1.直接插入排序 基本思想&#xff1a;把待排序的数按照大小逐个插入到前面已经排序好的有序序列中&#xff0c;直到所有的都插入完为止&#xff0c;得到一个新的有序序列。 如图所示&#xff0c;当插入第i个&#xff08;i>1&#xff09;元素的时候&#xff0c;前面的arr[0]…

Qt:信号槽

一. 信号槽概念 信号槽 是 Qt 框架中一种用于对象间通信的机制 。它通过让一个对象发出信号&#xff0c;另一个对象连接到这个信号的槽上来实现通信。信号槽机制是 Qt 的核心特性之一&#xff0c;提供了一种灵活且类型安全的方式来处理事件和数据传递。 1. 信号的本质 QT中&a…

aws凭证(一)凭证存储

AWS 凭证用于验证身份&#xff0c;并授权对 DynamoDB 等等 AWS 服务的访问。配置了aws凭证后&#xff0c;才可以通过编程方式或从AWS CLI连接访问AWS资源。凭证存储在哪里呢&#xff1f;有以下几个方法&#xff1a; 一、使用文件存储 1、介绍 文件存储适用于长期和多账户配置…

Win11下载和配置VSCode(详细讲解)

配置VSCode需要的工具&#xff1a; 一、MinGW-w64 二、Visual Studio Code 一、MinGW-w64下载 1、下载 MinGW官网地址&#xff1a; Downloads - MinGW-w64 直链下载&#xff1a; 下载 mingw-w64-install.exe &#xff08;MinGW-w64 - 适用于 32 位和 64 位 Windows&#…

Python简介以及解释器安装(保姆级教学)

目录 一、Python介绍 1、简介 2、特点 3、来源 4、发展 二、Python解释器的安装 1、安装包下载 2、下载完成后&#xff0c;点击安装包进入安装流程 一、Python介绍 1、简介 Python 是一门解释型、面向对象以及动态数据类型的高级程序设计语言&#xff0c;语法简洁&…

【论文速读】| RobustKV:通过键值对驱逐防御大语言模型免受越狱攻击

基本信息 原文标题&#xff1a;ROBUSTKV: DEFENDING LARGE LANGUAGE MODELS AGAINST JAILBREAK ATTACKS VIA KV EVICTION 原文作者&#xff1a;Tanqiu Jiang, Zian Wang, Jiacheng Liang, Changjiang Li, Yuhui Wang, Ting Wang 作者单位&#xff1a;Stony Brook University…

美畅物联丨智能分析,安全管控:视频汇聚平台助力智慧工地建设

随着科技的持续发展&#xff0c;建筑行业正朝着智能化的方向迅猛迈进。智慧工地作为建筑行业智能化的关键体现形式&#xff0c;借助各类先进技术来提升工地的管理效率、安全性以及生产效益。在这个过程中&#xff0c;视频汇聚平台发挥着极为重要的作用。以畅联AIoT开放云平台为…

AI赋能:PPT制作的创意革命

在现代信息社会&#xff0c;PPT已成为沟通和展示的利器。然而&#xff0c;如何快速制作出高质量的PPT&#xff0c;却是一门学问。幸运的是&#xff0c;智能生成PPT技术的出现&#xff0c;让这一切变得轻松自如。 ai生成PPT技术&#xff0c;犹如一位无形的助手&#xff0c;帮助用…

实战 | C#中使用YoloV8和OpenCvSharp实现目标检测 (步骤 + 源码)

导 读 本文主要介绍在C#中使用YoloV8实现目标检测,并给详细步骤和代码。 详细步骤 【1】环境和依赖项。 需先安装VS2022最新版,.NetFramework8.0,然后新建项目,nuget安装 YoloSharp,YoloSharp介绍: https://github.com/dme-compunet/YoloSharp 最新版6.0.1,本文…

蓝桥杯每日真题 - 第20天

题目&#xff1a;&#xff08;机房&#xff09; 题目描述&#xff08;13届 C&CG题&#xff09; 解题思路&#xff1a; 这道题目可以看作在一个无向图中查找两点之间的最短路径。题目中的 n 台电脑和 n−1 根网线形成了一棵树&#xff0c;树是一个特殊的无向图&#xff0c…

iOS应用网络安全之HTTPS

移动互联网开发中iOS应用的网络安全问题往往被大部分开发者忽略, iOS9和OS X 10.11开始Apple也默认提高了安全配置和要求. 本文以iOS平台App开发中对后台数据接口的安全通信进行解析和加固方法的分析. 1. HTTPS/SSL的基本原理 安全套接字层 (Secure Socket Layer, SSL) 是用来…

项目虚拟机配置测试环境

在企业中&#xff0c;有专门的服务器部署开发环境&#xff0c;测试环境等等 直接在虚拟机中打开虚拟机就可以 dps查看容器

初始ArkUI

一. 什么是ArkUI ArkUI基于方舟UI框架为应用的UI开发提供了完整的基础设施&#xff0c;UI语法更加简洁&#xff0c;丰富的UI功能&#xff08;组件、布局、动画以及交互事件&#xff09;&#xff0c;以及实现界面预览工具等&#xff0c;可以支持开发者进行可视化界面开发。 &a…

【PCIE常见面试问题-1】

PCIE常见面试问题-1 1 PCIE概述1.1 PCI为何发展开PCIE&#xff1f;1.2 什么是Root Complex(RC)1.3 什么是EP&#xff1f;1.4 什么是Swith1.5 PCIE协议如何组织通信的&#xff1f;1.6 简要介绍一下PCIE的分层结构&#xff0c;为什么需要分层&#xff1f;1.7 PCIE的事务类型有哪些…

用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错

首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO&#xff1a;SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…

什么是反向 DNS 查找以及它的作用是什么?

反向DNS查询&#xff08;rDNS&#xff09;是一种技术&#xff0c;用于确定与某个IP地址对应的域名。当我们对一个IP地址进行反向DNS查询时&#xff0c;实际上是向域名系统&#xff08;DNS&#xff09;的特殊部分请求信息&#xff0c;这部分被称为PTR记录。PTR记录会返回与这个I…

HarmonyOS鸿蒙系统上File文件常用操作

HarmonyOS鸿蒙系统上&#xff0c;file文件常用操作记录 1.创建文件 createFile(fileName: string, content: string): string {// 获取应用文件路径let context getContext(this) as common.UIAbilityContext;let filesDirPath context.filesDir / fileName;// 新建并打开…

音视频pts/dts

现在的视频流有两个非常重要的时间戳&#xff0c;pts和dts&#xff0c;其中pts是显示的时候用&#xff0c;dts在解码的时候用。 pts很好理解&#xff0c;按照pts的顺序以及duration不间断的display就可以了。 dts在解码的时候用&#xff0c;那么这句话怎么理解&#xff0c;解…

输出比较简介

输出比较简介 主要是用来输出PWM波形&#xff0c;这个波形是驱动电机的&#xff08;智能车和机器人等&#xff09;必要条件 OC&#xff08;Output Compare&#xff09;输出比较&#xff0c;还有IC&#xff0c;全称是Input Capture&#xff0c;意为输入捕获&#xff0c;还有CC…

揭秘AIGC下的数字时代:交互设计的隐秘力量与未来革命

在当今数字化时代&#xff0c;交互设计已经成为我们日常生活中不可或缺的一部分。它不仅仅是关于产品或服务的界面设计&#xff0c;更是关于如何通过这些界面与人进行有效的沟通和互动。本文将探讨交互设计的深层含义、面临的挑战以及其对未来科技发展的影响。 文章来源&#x…