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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROS VRRP软路由双线组网方式

虚拟路由冗余协议 Virtual Router Redundancy Protocol (VRRP)&#xff0c;MikroTik RouteROS VRRP 协议遵循 RFC 2338。 VRRP 协议是保证访问一些资源不会中断&#xff0c;即通过多台路由器组成一个网关集合&#xff0c;如果其中一台路由器出现故障&#xff0c;会自动启用另外…

设计编程网站集:简述可扩展性系统设计(笔记)

视频连接&#xff1a;简述可扩展性系统设计 三个关键原则 无状态 松散耦合 异步处理 扩展 负载均衡 缓存 分片

openCV与eigen两种方法---旋转向量转旋转矩阵

#include <Eigen/Dense> #include <opencv2/core/eigen.hpp> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main() {// opencv 旋转向量cv::Vec3d rvec(1.0, 2.0, 3.0);cv::Mat rotation_matrix;cv::Rodrigues(rvec, rotati…

卷积运算和卷积定理

卷积运算 卷积运算是信号处理、图像处理和深度学习中的核心概念&#xff0c;用于表示两个函数之间的相互作用。它将一个函数通过滑动窗口的方式与另一个函数结合&#xff0c;产生一个新的函数&#xff0c;反映两者的重叠程度。 1. 定义 连续信号的卷积&#xff1a; 给定两个连…

【板间连接器焊接】

一、背景 近期工作需要,用到了AX7Z020核心板(黑金),官网链接:https://www.alinx.com/detail/271。 板子打好之后,遇到了焊接问题。对自身焊接技术还是比较自信的,直接上去焊接了2个连接器。拖锡搞了3小时后,放弃了。热风枪1分钟不到就把连接器吹下来了,看引脚90%都是…

低代码开发平台搭建思考与实战

什么是低代码开发平台&#xff1f; 低代码开发平台是一种平台软件&#xff0c;人们能通过它提供的图形化配置功能&#xff0c;快速配置出满足各种特定业务需求的功能软件。 具有以下特点&#xff1a; 提供可视化界面进行程序开发0代码或少量代码快速生成应用 什么是低代码产…

React Native 基础

React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件

ftdi_sio应用学习笔记 3 - GPIO

目录 1. 查找gpiochip 2. 打开GPIO 2.1 libgpiod库方式 2.2 系统方式 3. 关闭GPIO 3.1 libgpiod库方式 3.2 系统方式 4. 设置方向 4.1 libgpiod库方式 4.2 系统方式 5. 设置GPIO电平 5.1 libgpiod库方式 5.2 系统方式 6. 读取GPIO电平 6.1 libgpiod库方式 6.2 …

微信小程序登录注册页面设计(小程序项目)

需求 在微信小程序设计并实现登录页面&#xff0c;并填写相关登录注册函数 实现效果 代码实现 html代码 <view class"top" style"border-bottom-style: none;background-color:#FF8C69;"><!-- <view class"back" bind:tap"…

神经网络(系统性学习三):多层感知机(MLP)

相关文章&#xff1a; 神经网络中常用的激活函数 神经网络&#xff08;系统性学习一&#xff09;&#xff1a;入门篇 神经网络&#xff08;系统性学习二&#xff09;&#xff1a;单层神经网络&#xff08;感知机&#xff09; 多层感知机&#xff08;MLP&#xff09; 多层感…

Android 14 screenrecord录制视频失败的原因分析

文章目录 1. 权限问题2. 存储空间不足3. 命令被中断4. 目标路径问题5. Android 14 的新限制6. 文件系统同步问题7. 录制失败检查步骤总结&#xff1a; 在 Android 14 系统上&#xff0c;使用 screenrecord 命令录制视频后&#xff0c;生成的文件大小为 0&#xff0c;可能的原因…

Uniapp 简单配置鸿蒙

Uniapp 简单配置鸿蒙 前言下载并配置鸿蒙IDEHbuilder X 配置基本的信息生成相关证书登录官网获取证书IDE配置证书添加调试设备可能出现的问题前言 如今鸿蒙的盛起,作为多端开发的代表也是开始兼容鸿蒙应用的开发,接下来我将介绍如何在uniapp中配置鸿蒙。 注意:hbuilder X的…

git使用(一)

git使用&#xff08;一&#xff09; 为什么学习git?两种版本控制系统在github上创建一个仓库&#xff08;repository&#xff09;windows上配置git环境在Linux上配置git环境 为什么学习git? 代码写了好久不小心删了&#xff0c;可以使用git防止&#xff0c;每写一部分代码通…

C# 数据结构之【树】C#树

以二叉树为例进行演示。二叉树每个节点最多有两个子节点。 1. 新建二叉树节点模型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace DataStructure {class TreeNode{public int Data { get;…

HarmonyOs鸿蒙开发实战(20)=>一文学会基础使用组件导航Navigation

敲黑板&#xff0c;以下是重点技巧。文章末尾有实战项目效果截图及代码截图可参考 1.概要 Navigation是路由导航的根视图容器Navigation组件主要包含​导航页&#xff08;NavBar&#xff09;和子页&#xff08;NavDestination&#xff09;&#xff0c;导航页不存在页面栈中&am…

python从入门到精通:pyspark实战分析

前言 spark&#xff1a;Apache Spark是用于大规模数据&#xff08;large-scala data&#xff09;处理的统一&#xff08;unified&#xff09;分析引擎。简单来说&#xff0c;Spark是一款分布式的计算框架&#xff0c;用于调度成本上千的服务器集群&#xff0c;计算TB、PB乃至E…

Ubuntu从入门到精通(二)远程和镜像源配置齐全

Ubuntu从入门到精通(二) 1 常见操作配置 1.1 英文语言配置 1.1.1 打开设置 1.1.2 设置语言为英文 1.1.3 重启生效 1.1.4 再次进入,选择更新名字 1.1.5 再次进入,发现已经变成了英文 1.2 输入法配置 1.3 rustdesk安装 1.3.1 Windows系统配置 登陆:https://github.com…

HTML5拖拽API学习 托拽排序和可托拽课程表

文章目录 前言拖拽API核心概念拖拽式使用流程例子注意事项综合例子&#x1f330; 可拖拽课程表拖拽排序 前言 前端拖拽功能让网页元素可以通过鼠标或触摸操作移动。HTML5 提供了标准的拖拽API&#xff0c;简化了拖放操作的实现。以下是拖拽API的基本使用指南&#xff1a; 拖拽…

华为Ensp模拟器配置OSPF路由协议

目录 简介 实验步骤 Pc配置 路由器配置 OSPF配置 交换机配置 简介 开放式最短路径优先 (OSPF) 协议深度解析 简介 开放式最短路径优先&#xff08;Open Shortest Path First, OSPF&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;用于在自治系统…

【最新鸿蒙应用开发】——合理使用自定义弹框

自定义弹窗选型 合理选择不同的系统能力实现弹窗&#xff0c;有利于提升应用开发效率&#xff0c;实现更好的功能需求&#xff0c;因此了解自定义弹窗的选型和差异非常重要。在应用开发中&#xff0c;为了选择出合适的弹窗选型&#xff0c;从使用场景上&#xff0c;需要重点关…