通过css绘制气泡解决文字溢出,鼠标移入出现气泡,移出隐藏气泡(支持多行文本,单行文本)

CSS 滚动条(overflow)完全解析:掌控内容溢出的艺术 当网页内容超出容器尺寸时,滚动条便成为用户浏览的必备工具。CSS 的 overflow 属性决定了溢出内容如何处理——是裁剪隐藏、显示滚动条,还是任由内容溢出破坏布局。掌握 overflow 及其衍生属性,可以帮助你构建优雅的滚动容器、自定义滚动条样式,以及解决诸多布局上下文问题(如清除浮动、创建块格式化上下文)。本文将从基础属性到高级应用,全面拆解滚动条控制技术。 阅读详情

首先看一下效果图:
在这里插入图片描述
这个场景是非常常见的,而大多数的方法,就是通过字数来控制,v-if= word.length>20 就显示elementUI中的气泡;

这种做法,我们会发现它有弊端,部分分辨率下,一行文本展示的字数是不同的,这就会导致大屏幕下,字数没有超出就显示了气跑了; 小屏幕下,字数超出了,却没有气泡。

下面介绍一种方法,目前发现的最佳方案。通过css解决这个问题,这种场景下我们可以不用elementUI中的气泡,我们可以自己用css实现,然后样式上与项目中其他使用过elementUI气泡的地方,保持一致就好了。

具体的结构部分:

<div class="span-rap mouseenterTipSpan"
    @mouseenter="showTipsHeight($event,business.result)"  @mouseleave="hiddenTipsHeight($event,business.result)">
  <span class="hover-box" style="">{{ business.result }</span>
  <div class="tip-box">
  	<div class="tip-box-div">
        {{ business.target }}
    </div>
  </div>
</div>

然后样式文件,写在公共文件中; 方法写在公共js中,通过混入,进行使用。这样会简单很多,需要使用的地方,只需要保持html结构一致即可。

下面展示css部分、 混入方法部分、 完整的html部分

css部分:

// 根据高度超出,手绘气泡 begin
.span-rap.mouseenterTipSpan{
  .hover-box{
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 3;
    overflow: hidden;
    line-height: normal;
    position:relative;
    top:6px;
  }
  .tip-box{
    display: none;
  }
}
.span-rap.mouseenterTipSpan.defaultLine1{ // 行数设置为1,超出1行,出现省略号
  .hover-box{
    -webkit-line-clamp: 1;
  }
}
.span-rap.mouseenterTipSpan.tip{
  .tip-box{
    display: block;
    position: absolute;
    top:30px;
    right:0;
    padding: 10px;
     width: 100%;
    z-index:1111;
    height: auto;
    background: #f0f6fb ;
    color: #0a92d9 ;
    font-size: 16px ;
    border: 1px solid #0a92d9 ;
    line-height: 1.2;
    -moz-border-radius: 4px;
    -webkit-border-radius: 4px;
    border-radius: 4px;
    .tip-box-div{
      max-height: 500px;
      overflow-y: auto;
    }
    &:after{
      content: '\00a0';
      width: 0;
      height: 0;
      display: block;
      border-color: transparent;
      border-style: solid;
      border-width: 6px;
      /*border-top-color: #0a92d9 !important;*/
      border-bottom-color: #0a92d9 !important;
      position: absolute;
      z-index:-1;
      top:-13px;
      left:50%;
    }
  }
}

// 根据高度超出,手绘气泡 end

混入方法部分:
创建一个js文件,这里我的目录是@/assets/js/common_mixins/tooltip.js


export default {
  methods: {
    // 鼠标移入
    showTipsHeight(e,val){
      var target = e.target;
      console.log(target, 'target')
      var targetChild = e.target.querySelector('.hover-box');
      if(targetChild.offsetHeight< targetChild.scrollHeight){
        e.target.setAttribute('class', `${e.target.className} tip`)
      }
    },
    // 鼠标移出
    hiddenTipsHeight(e, val){
      e.target.setAttribute('class', `${e.target.className.replace("tip","")}`)
    },
  }
}

记得去界面中引入
在这里插入图片描述

完整的html结构

<template>
  <div style="padding:20px;">
    <el-row>设置行数,行数超出,出现省略号,鼠标移入显示气泡,移出隐藏气泡</el-row>
    <el-row
      style="margin-top: 15px;">
      <el-col :span="8">
        <el-form class="formBox"
                 label-width="110px">
          <el-form-item label="OKR目标:">
            <div v-if="business.target" class="fixedTowRow">
              <div class="span-rap mouseenterTipSpan"
                   style=" " @mouseenter="showTipsHeight($event,business.target)"  @mouseleave="hiddenTipsHeight($event,business.target)">
                <span class="hover-box" style="">{{ business.target }}</span>
                <div class="tip-box">
                	<div class="tip-box-div">
                    {{ business.target }}
                  </div>
                </div>
              </div>
            </div>
            <div v-else>
              <span>无</span>
            </div>
          </el-form-item>
          <el-form-item label="OKR成果:">
            <div v-if="business.result">
              <div class="span-rap mouseenterTipSpan defaultTwoRow"
                   style=" " @mouseenter="showTipsHeight($event,business.result)"  @mouseleave="hiddenTipsHeight($event,business.result)">
                <span class="hover-box" style="">{{ business.result }}</span>
                <div class="tip-box">
                	<div class="tip-box-div">
                    {{ business.result }}
                  </div>
                </div>
              </div>
            </div>
            <div v-else>
              <span>无</span>
            </div>
          </el-form-item>
          <el-form-item label="项目名称:">
            <div v-if="business.name">
              <div class="span-rap mouseenterTipSpan defaultTwoRow defaultLine1"
                   style=" " @mouseenter="showTipsHeight($event,business.name)"  @mouseleave="hiddenTipsHeight($event,business.name)">
                <span class="hover-box" style="">{{ business.name }}</span>
               <div class="tip-box">
                	<div class="tip-box-div">
                    {{ business.name }}
                  </div>
                </div>
            </div>
            <div v-else>
              <span>无</span>
            </div>
          </el-form-item>
        </el-form>
      </el-col>
    </el-row>
  </div>
</template>

<script>
  import tooltip from '@/assets/js/common_mixins/tooltip.js'
  export default {
    mixins: [
      tooltip
    ],
    data() {
      return {
        business: {
          id: '',
          name: '啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊',
          number: '',
          creatorName: '',
          ownerName: '',
          description: '',
          target: '啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊',
          result: '啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,啊啊啊啊啊啊啊啊啊啊,'
        },
      };
    },
    methods: {
     
    }
  }
</script>

<style lang="scss" scoped>
  // 超过两行出现省略,鼠标移入显示气泡
.defaultTwoRow{
  .hover-box{
    -webkit-line-clamp: 2;
  }
}
</style>

也可以自行设置类名,覆盖公共样式中的行数,如:
在这里插入图片描述

CSS溢出显示:实现内容超出容器时的处理方法 在网页设计中,经常会遇到内容超出容器的情况。为了解决这个问题,CSS提供了一些属性和技巧来控制内容的溢出显示。本文将介绍一些常用的方法,并提供相应的源代码示例。等属性,我们可以实现对文本、图片和其他元素的溢出显示控制。这些方法可以帮助我们在网页设计中更好地处理内容溢出的情况,提升用户体验。综上所述,我们可以利用CSS的一些属性和技巧来处理内容溢出显示的问题。,当内容超出容器时,会自动显示滚动条,以便用户可以滚动查看溢出的部分。,确保图片的最大宽度不会超过容器的宽度。,这样超出容器的图片部分将会被隐藏。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库01

此方案可满足千万级并发需求,同时支持时序数据、知识图谱和文档数据库的高效处理,通过云原生架构实现极致弹性。​:每月约$15-20万(100节点K8s集群+数据库集群+CDN流量)1. 宠物上架/下架流程。

weixin_49199313的博客 1477

css 文字超出隐藏显示三个点 鼠标移入以浮窗形式显示完整内容

文字超出后隐藏,显示三个点。

tengyuxin的博客 8636

【信息科学与工程学】计算机科学与自动化——第六十三篇 人机交互之前端交互参数知识库02

每个分支下又细分了四个关键方向,并按照“研究对象/焦点、基本问题、核心理论/概念、研究方法、应用/目标、前沿/发展”的框架进行阐述,严格遵循了六级编码体系。在最终整合时,应建立唯一的学科分类编码表(例如,用两位数字或“ART”、“MED”、“ECO”等字母前缀),并确保所有下级编码(尺度、层次、类别、子类、具体项)的逻辑一致性。此回答中的编码为示例,实际系统需据此调整。控制过程(前馈、同期、反馈)、全面质量管理(TQM)、平衡计分卡(BSC)定量(调查、实验)、定性(访谈、民族志)、混合方法、大数据。

weixin_49199313的博客 676

php鼠标滑过跳出别的,鼠标经过出现气泡框实现方法

鼠标特效现在也层出不穷,本文主要为大家带来一篇鼠标经过出现气泡框的简单实例,小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望能让更好的掌握鼠标特效。今天看到一个css效果不错,转一下1. htmlAnimated Menu Hover 1$(document).ready(function(){$(".menu li").hover(function() {$(t...

weixin_39622225的博客 242

基于Zynq的便携式γ能谱仪设计与实现

数字多道分析器(DMCA)是核辐射能谱测量的核心设备,其本质是将探测器输出的模拟脉冲按幅度数字化分道,构建能量-计数分布曲线,从而支撑放射性核素识别与定量分析。其技术原理依赖高速采样、数字滤波成形、基线恢复与峰值提取等关键信号处理环节,具备高分辨率、优线性度与强抗干扰能力。在环境监测、核安全巡检与野外地质勘探等场景中,对低功耗、小型化、实时性提出严苛要求。本方案采用Xilinx Zynq-7020异构SoC架构,融合FPGA实时数字信号处理与ARM嵌入式控制,实现软硬协同优化,兼顾算法精度与工程落地性,为国

weixin_33173126的博客 190

STM32CubeIDE离线安装芯片PACK包全攻略(附离线包下载与导入步骤)

本文详细介绍了在STM32CubeIDE中离线安装芯片PACK包的完整流程,包括官方和第三方资源获取方法、本地安装步骤及常见问题解决方案。特别针对网络隔离环境下的嵌入式开发需求,提供了实用的版本管理和自动化部署技巧,帮助开发者高效完成芯片固件支持包的离线配置。

weixin_30825581的博客 302

css+js实现:文本超出宽度时显示省略号并悬浮气泡框

【代码】css+js实现:文本超出宽度时显示省略号并悬浮气泡框。

qq_44242707的博客 1817

别再只盯着时序了!聊聊SDC里那些容易被忽略的‘配角’命令:工作条件、线载模型与面积约束

本文深入探讨了SDC(设计约束)中常被忽视的关键命令,包括set_operating_conditions、set_wire_load_model和set_max_area。这些‘配角’命令在芯片设计中扮演着至关重要的角色,影响时序收敛、功耗和面积优化。文章通过实际案例和最佳实践,揭示了如何正确配置工作条件、选择线载模型以及动态调整面积约束,以提升设计质量和效率。

weixin_26875109的博客 208

前端css实现气泡框

场景: 工作中遇到需要使用气泡框进行提示的效果,但是不需要鼠标移上去,是个静态的气泡框效果,于是决定使用纯css进行实现。实现思路:一个带边框的容器,在左侧放一个三角实现气泡框效果。 实现效果图: 1. 可以给一个div标签,然后对其设置属性,但是由于需求我这边需要对一个span标签进行操作,span是一个行内元素,需要先对其进行转换成块内元素再进行属性限制。 组件元素: <span className="popTag"> <span>...

zjq_1234的博客 8498

CVE-2017-7921漏洞深度解析:海康设备明文密码泄露原理与七层防御

网络摄像头安全本质上是嵌入式Web服务安全,其核心在于身份认证机制是否健全。CVE-2017-7921并非传统远程执行漏洞,而是因信任错位导致的未授权API暴露——`/Security/users/1`接口绕过Session校验,直接返回admin明文密码。该问题根植于安防设备早期‘物理隔离+前端可控’的设计假设,在P2P、云平台等新场景下全面失效。技术价值在于揭示了轻量级HTTP服务中路径级访问控制缺失的普遍风险;典型应用场景包括ONVIF协议接管、Telnet后门登录及NVR侧横向移动。本文基于DS-2

weixin_33324197的博客 403

Grafana企业版vs开源版:从安装到插件管理的完整对比实测(含离线部署技巧)

本文深入对比Grafana企业版与开源版在安装流程、插件管理和功能限制等方面的差异,特别针对离线部署场景提供实用技巧。通过实测数据源支持、权限管理等核心功能,帮助企业用户做出明智选择,同时详细介绍离线安装和插件签名验证等关键操作。

weixin_29313817的博客 105

自动化构建smolBSD镜像:GitHub Actions CI/CD流水线配置教程

smolBSD 是一个专注创建极简 NetBSD 微型虚拟机的开源镜像构建工具,能从任意 Linux、macOS 或 NetBSD 系统生成毫秒级启动的 microvm。它的仓库内就内置了一套完整的 GitHub Actions CI/CD 流水线:每次代码推送到 `main` 分支,镜像自动构建、压缩、校验并发布,全程无需人工干预。本文带你读懂这两条流水线的配置思路,并学会在自己项目里复刻同款自

gitblog_06822的博客 175

微信小程序云开发 - 实现商家转账到零钱(微信企业付款到零钱) V3功能流程及完整实例代码,过微信云开发的云函数实现企业付款到零钱(提供详细示例源码纯云函数实现,证书、密钥、签名等各种常见问题解决方案

企业付款到零钱(微信小程序提现功能,提现到零钱)微信小程序-云函数实现微信企业付款到零钱功能,实现微信商户号中的企业付款到零钱的功能,微信小程序+云开发+商家转账至零钱+微信小程序用户提现,使用云开发环境的云函数实现微信小程序的支付功能,微信小程序实现微信企业付款到零钱功能的流程,V3 V2基于微信云开发的商家转账至零钱,小程序云函数企业付款到零钱功能实现,云开发实现微信商户支付企业付款到零钱功能,不用服务器纯云函数实现,详细示例代码demo教程,API证书错误,转账不到账怎么办,密钥生成有误,转账失败,有

🏆 前端领域优质创作者 1万+

html+css:鼠标跟随特效气泡2

图示见下 <!DOCTYPE html> <html lang="en" class="no-js"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="...

renjingzhaozhao的博客 441

【Bluetooth|蓝牙开发】三、一篇文章,带你总览蓝牙协议

1、开篇词 2、蓝牙开发入门 3、蓝牙协议栈总览 4、蓝牙协议栈——物理层 5、蓝牙协议栈——链路层 6、蓝牙协议栈——传输层 7、蓝牙协议栈——L2CAP协议 8、蓝牙协议栈——ATT协议 9、蓝牙协议栈——GATT协议 10、蓝牙通信流程分析 11、蓝牙协议栈——Bluez交叉编译 12、蓝牙调试工具汇总

Donge's Blog 1万+

CKAD-CN考试之路----12

显然,对应的value都已经实现了加密.保存退出,等待pod重新创建。确认secret是否被加密。编辑secret文件。

Q先生 446

css overflow(visible auto hidden scroll)教程

Overflow可以实现隐藏超出对象内容,同时也有显示与隐藏滚动条的作用,接下来我们来了解学习css overflow样式。 一、Overflow语法值   -   TOP overflow : visible | auto | hidden | scroll 当然overflow可以单独设置X(overflow-x )和Y(overflow-y)方向的滚动条样式其值与应用与ov

ayangjing的专栏 1081

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

css overflow属性及使用方法(场景)

overflow这个属性还是挺实用的比如,一个div展示文字,想让超出部分隐藏就可以使用overflow:hidden,想让显示的画就用overflow:scroll; 1.overflow的属性 值 描述 visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览...

从事前端,不断积累经验,学习新的技术。头像不是本人是莉莉崽(美貌、可爱集于一身的小姐姐,小仙女),一个宝藏博主,值得喜欢! 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

内存溢出与内存泄漏详解!

本文,我们分析了Java的内存溢出和内存泄漏并且应示例展示了它们导致的原因,应该说它们是比较常见的内存管理问题,如果在生产环境出现也是比较头疼的问题。所以在日常开发中,我们一定要注意自己的代码风格和代码质量,尽量避免这些问题的发生。三两肉猿Java。

三两肉的博客 1593

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

自动监测文本溢出显示文字气泡

文本溢出显示...,鼠标移入弹出气泡显示完整信息并实时检测文本区域触发

weixin_45502507的博客 834

第十五课--Overflow

CSS overflow 属性用于控制内容溢出元素框时显示的方式。 overflow属性有以下值: visible 默认值。内容不会被修剪,会呈现在元素框之外。 hidden 内容会被修剪,并且其余内容是不可见的。 scroll 内容会被修剪,但是浏览器会显示滚动条以便查看其余的内容。 auto 如果内容被修剪,则浏览器会显示滚动条以便查看其余的内容。 ...

阅读之后,对你有帮助,那就点个赞再走吧 1319

JavaScript实现在网页上点击鼠标生成气泡特效

<HTML> <HEAD> <title>JavaScript实现在网页上点击鼠标生成气泡特效_石家庄色彩顾问</title> </HEAD> <BODY bgColor=#000000 scroll=no onload=zyva()> <div id=aqua style="position:absolu...

weixin_30819085的博客 842

overflow属性

根据CSS的盒模型概念,页面中的每个元素,都是一个矩形的盒子。这些盒子的大小、位置和行为都可以用CSS来控制。对于行为,我的意思是当盒子内外的内容改变的时候,它如何处理。 比如,如果你没有设置一个盒子的高度,该盒子的高度将会根据它容纳内容的需要而增长。但是当你给一个盒子指定了一个高度或宽度而里面的内容超出的时候会发生什么?这就是该添加CSS的overflow属性的时候了,它允许你设定该种情况

逸少 2051

overflow溢出

当内容大于容器 等内容的宽度或高度大于容器的,会溢出 可以overflow来设置是否显示滚动条 auto时灵活设置 scrool时永远显示 hidden时直接隐藏溢出部分 visible时直接心事溢出部分 overflow可以分为overflow-x和overflow-y 脱离文档流 block高度是用内部文档流元素决定,可以设height 这句话的意思是不是说,有些元素可以不在文档流中 哪些元素脱离文档流 float position:absolute / fixed 怎么让元

weixin_53562163的博客 7519

单页404 HTML源码

单页404 HTML源码,源码由HTML+CSS+JS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行。

专注于与编程相关的知识内容分享 3303

关于overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷等等)

一. overflow:hidden 溢出隐藏 给一个元素中设置overflow:hidden,那么该元素的内容若超出了给定的宽度和高度属性,那么超出的部分将会被隐藏,不占位。 /*css样式*/ <style type="text/css"> div{ width: 150px; height: 60px; background: skyblue; overflo...

Emily 28万+
上一篇: pdf.js-----js解析pdf文件实现预览,并获取pdf文件中的内容(数组形式)
下一篇: react之组件通信(父与子,子与父)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值