在网页设计中,气泡框(或工具提示)是一种常见的UI元素,用于突出显示信息或提供额外说明。本文将介绍如何使用纯CSS创建一个简单的气泡框,并添加一个三角形指示器。
在这里插入图片描述

HTML结构

首先,我们有一个简单的HTML结构:

<div class="border">我是一个气泡框
</div>

CSS样式

让我们逐步分析CSS实现:

1. 基础容器样式

.border{position: relative;background: gray;width: 200px;margin: 200px auto;height: 100px;border-radius: 20px;padding: 20px;box-sizing: border-box;
}
  • position: relative:为伪元素定位提供参考
  • background: gray:设置背景颜色
  • 定义固定宽度和高度
  • border-radius: 20px:创建圆角效果
  • padding: 20px:内边距确保内容不紧贴边缘
  • box-sizing: border-box:使宽度和高度包含padding和border

2. 三角形指示器实现

我们使用::after伪元素创建三角形指示器:

.border::after{content: '';position: absolute;width: 0px;height: 0px;bottom: -19px;left: 50%;translate: -50%;border:1px solid;border-width: 0px 0px 20px 20px;border-color: transparent transparent transparent gray;
}

关键点解析:

  1. CSS三角形技巧:通过设置边框宽度为0,然后只显示一个或两个边框,利用边框相交处的斜角效果创建三角形。

  2. 定位

    • bottom: -19px:将三角形定位在容器下方
    • left: 50% + translate: -50%:水平居中
  3. 边框设置

    • border-width: 0px 0px 20px 20px:只显示左下边框
    • border-color: transparent transparent transparent gray:只让左边框显示颜色(灰色)

效果说明

这个实现创建了一个灰色的圆角矩形气泡框,底部中央有一个指向下方的三角形指示器。三角形是通过边框技巧实现的,这是一种常见且高效的CSS技术,避免了使用额外图片。

可能的改进

  1. 响应式设计:可以使用相对单位(如emrem)代替固定像素值
  2. 颜色变量:使用CSS变量便于主题更改
  3. 动画效果:添加淡入淡出或滑动动画
  4. 方向可变:通过添加类名控制三角形出现在不同位置(上、下、左、右)

完整代码

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>CSS气泡框示例</title><style>.body{width: 100vh;height: 100vh;}.border{position: relative;background: gray;width: 200px;margin: 200px auto;height: 100px;border-radius: 20px;padding: 20px;box-sizing: border-box;}.border::after{content: '';position: absolute;width: 0px;height: 0px;bottom: -19px;left: 50%;translate: -50%;border:1px solid;border-width: 0px 0px 20px 20px;border-color: transparent transparent transparent gray;}</style>
</head>
<body><div class="border">我是一个气泡框</div>
</body>
</html>

这种纯CSS实现的气泡框轻量、灵活,是现代网页设计中常用的技术。通过理解其原理,可以轻松创建各种变体和自定义样式。

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

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

相关文章

Java面试题031:一文深入了解MySQL(3)

Java面试题029&#xff1a;一文深入了解MySQL&#xff08;1&#xff09; Java面试题030&#xff1a;一文深入了解MySQL&#xff08;2&#xff09; 1、MySQL多表查询 &#xff08;1&#xff09;内连接 inner join 返回两个表中完全匹配的行&#xff0c;即只保留两个表连接字段值…

springboot小区物业管理系统

目 录 第一章 绪 论 1.1背景及意义 1 1.2国内外研究概况 2 1.3 研究的内容 2 第二章 关键技术的研究 2.1 相关技术 3 2.2 Java技术 3 2.3 MySQL数据库 4 2.4 Tomcat介绍 4 2.5 Spring Boot框架 5 第三章 系统分析 3.1 系统设计目标 6 3.2 系统可行性分析 6 3.3 系统功能分析…

微信小程序云开发--环境共享

1、创建配置文件 // utils/cloudConfig.js // 云开发环境配置// 当前小程序配置 const currentConfig {env: "cloudbase-6goxxxxxxd6c75e0", // 当前小程序环境 IDappid: "wxdexxxxx5dbcf04", // 当前小程序 AppID };// 共享云开发环境配置 const shared…

SpringBoot+ShardingSphere-分库分表教程(一)

日常使用数据库的时候&#xff0c;更多的时间是在关心业务功能的实现&#xff0c;为了尽快完成新版本的发布上线&#xff0c;通常在项目初期不太会去在意数据库的压力和性能问题。在服务上线一段时间之后&#xff0c;就会发现当初设计存在着很多的不足&#xff0c;这都是项目研…

INA226 电流计 功率计电路图转PCB制作

上次发布了TI的INA226电路图&#xff0c;今天抽了点时间&#xff0c;把电路图生成了PCB。 帖出来&#xff0c;不足之处&#xff0c;请兄弟们留言指正。 没什么问题就可以去嘉立创白嫖了。^_^

Vcpkg 经典模式完整迁移方案

&#x1f680; 从零开始&#xff1a;高效使用 Vcpkg 安装 Qt WebEngine&#xff08;经典模式 缓存优化 性能释放&#xff09; &#x1f9e9; 背景简介 在使用 Vcpkg 安装 Qt 系列库时&#xff0c;特别是庞大的 qtwebengine 模块&#xff0c;编译量极大&#xff0c;耗时可达…

FPGA产品

FPGA产品 文章目录 FPGA产品1. Xilinx公司FPGA产品2. Altera公司FPGA产品3. FPGA产品的工业等级简介4. FPGA产品的速度等级简介总结 1. Xilinx公司FPGA产品 Xilinx公司是FPGA芯片的发明者&#xff0c;因此是一家骨灰级的老牌FPGA公司&#xff0c;同时也是目前最大的可编程逻辑…

205-06-26 Python深度学习1——安装Anaconda与PyTorch库(Win11+WSL2+Ubuntu24.04版)

文章目录 1 安装 wsl1.1 开启 Windows 支持1.2 安装 wsl1.3 移动 wsl 至其他盘1.4 其他事项 2 安装 Anaconda3 安装 Python 环境3.1 创建 Conda 环境3.2 安装 Pytorch 库&#xff08;gpu&#xff09; 4 安装 Pycharm4.1 Toolbox App 安装4.2 安装 Pycharm4.3 配置 Pycharm 5 测…

Redis 数据迁移同步:应对大 Key 同步挑战

在企业级的数据同步和迁移场景中&#xff0c;Redis 凭借高性能和灵活的数据结构&#xff0c;常被用于缓存和高频读写场景。随着业务数据的积累&#xff0c;Redis 中不可避免会出现包含大量元素的“大 Key”&#xff0c;如包含几十万条数据的 List、Set 或 Hash 类型。在进行全量…

视频关键帧提取

&#x1f39e;️ 视频关键帧提取与特征分析指南 &#x1f4cc; 抽帧数量建议 视频时长推荐抽帧数原因短视频&#xff08;≤15秒&#xff09;3&#xff5e;5 帧覆盖不同场景即可中长视频&#xff08;1&#xff5e;3分钟&#xff09;5&#xff5e;10 帧内容跨度大长视频&#xf…

协作机器人优化自动化工作流程,提升工作效率

无损检测(NDT)是一种检查方法&#xff0c;用于识别材料中的裂纹或缺陷&#xff0c;或者在不损坏材料的情况下确定材料的元素组成。Olympus拥有多种NDT设备&#xff0c;这些设备具有多种多样的测量功能&#xff0c;允许最终用户对各种行业中使用的金属、塑料、陶瓷和复合材料进行…

复用对象Aspose.Words 中 DocumentBuilder 的状态管理解析

doc manager.LoadDocument(filePath) builder.Document doc 是不是builder就自动清空重建了,不需要清理builder Aspose.Words 中 DocumentBuilder 的状态管理解析 在您的代码中&#xff0c;builder.Document doc 这行代码不会自动清空或重建DocumentBuilder的状态。Docume…

(LeetCode 面试经典 150 题 ) 134. 加油站 (贪心)

题目&#xff1a;134. 加油站 思路&#xff1a;贪心&#xff0c;时间复杂度0(n)。 当前点i来到下一个点i1,那么油的变化量是gas[i]-cost[i]。 先统计遍历完所有点后&#xff0c;油的变化量sum。如果sum<0&#xff0c;说明不可能绕行一周&#xff1b;sum>0&#xff0c;说…

Java 线程池总结

一、写在前面 参考阿里开发规约,创建线程池一般用ThreadPoolExecutor 在高并发程序中&#xff0c;频繁创建与销毁线程是一种极其低效且不可控的行为。为了解决这个问题&#xff0c;Java 提供了线程池&#xff08;ThreadPoolExecutor&#xff09;这一强大的并发框架。它不仅提…

【3.3】Pod详解——容器探针部署第一个pod

文章目录 容器探针小知识-控制平面Pod实战声明式模型&命令模式 部署第一个pod编写pod清单文件kubectl命令将清单文件post到api-server验证pod删除pod 容器探针 上面已经讲到容器状态,那么这些容器的状态是怎么检测到的呢?实际上在pod中有三种探针&#xff0c;存活探针(li…

Insar 相位展开真实的数据集的生成与下载(随机矩阵放大,zernike 仿真包裹相位)

1.真实的数据集下载: Delta-X: UAVSAR L1B Interferometric Products, MRD, Louisiana, 2021 | NASA Earthdata 注意下载的时候需要注册登录一下哦 2. 适用于 深度学习训练的数据集 通过网盘分享的文件:InSAR-DLPU.rar 链接: https://pan.baidu.com/s/1CRWAuNYwCHP_iqCeIhf…

C++ 多线程深度解析:掌握并行编程的艺术与实践

在现代软件开发中&#xff0c;多线程&#xff08;multithreading&#xff09;已不再是可选项&#xff0c;而是提升应用程序性能、响应速度和资源利用率的核心技术。随着多核处理器的普及&#xff0c;如何让代码有效地利用这些硬件资源&#xff0c;成为每个 C 开发者必须掌握的技…

(线性代数)矩阵的奇异值Singular Value

矩阵的奇异值是矩阵分析中一个非常重要的概念&#xff0c;尤其是在数值线性代数、数据降维&#xff08;如PCA&#xff09;、图像处理等领域有着广泛应用。奇异值分解&#xff08;SVD, Singular Value Decomposition&#xff09;是一种强大的工具&#xff0c;可以将任意形状的矩…

数据结构复习4

第四章 串 一些面试题 12. 介绍一下KMP算法。★★★ KMP算法是一种高效的字符串匹配算法&#xff0c;用于在一个文本串中查找一个模式串的出现位置。KMP算法通过利用模式串自身的信息&#xff0c;在匹配过程中避免不必要的回溯&#xff0c;从而提高匹配效率。 KMP算法的核心思…

【八股消消乐】消息队列优化—消息有序

&#x1f60a;你好&#xff0c;我是小航&#xff0c;一个正在变秃、变强的文艺倾年。 &#x1f514;本专栏《八股消消乐》旨在记录个人所背的八股文&#xff0c;包括Java/Go开发、Vue开发、系统架构、大模型开发、具身智能、机器学习、深度学习、力扣算法等相关知识点&#xff…