气泡提示效果css.html,用纯CSS3绘制高端简约的气泡提示框

用纯css绘制一个简单的气泡提示框,对于长期关注课课家CSS3绘图教程的朋友来说是件轻而易举的事,但是程序员最不喜欢做的事情是重复造轮子,加上之前小编分享的几个气泡要么过于复杂,通用性不强,要么需要鼠标移上才显示,移植也不方便。所以今天小编来整理一份更纯粹的气泡提示框代码。

f1e1402df258c76c2ea6547e5ce10b58.png

气泡提示由一个圆角矩形和一个三角形组成,其中三角形可以利用before或after伪元素来插入。那么,每个提示框在html里面都只需要一个元素了。

我们来看看基础的html代码:

c32fecd798adae0d6a0fdbb51eb4d0de.png

可见每个气泡都只用了一个div元素,三角形箭头部分我们用before伪元素即可。

四个气泡的样式非常接近,不同的只是三角形的位置,为此我们可以定义公共的部分。但是这里没有共用的类名啊,那该怎么弄呢?

我们发现这4个类都以tip-bubble开头,而CSS提供了一个属性选择器,可以让我们进行模糊匹配。

要实现匹配开头等于固定内容的选择器,我们可以这样写。

[class^=tip-bubble]

其中^=代表匹配开头,具体内容为tip-bubble。

下面我们就来为这个选择器定义一些公共的样式。首先,三角形和圆角矩形从某种意义上说是重合的,因此内部元素(包括伪元素)要使用绝对定位。所以整个div要设置为相对定位,让内部元素的位置以div的左上角作为参考点。然后再设置圆角半径、背景颜色、边距、宽高、字体等公共样式。

[class^=tip-bubble]{

display:inline-block;

position:relative;

background-color:#202020;

width:120px;

padding:20px;

color:#CCC;

text-align:center;

font-size:14px;

font-family:微软雅黑;

border-radius:10px;

margin:50px;

}

运行效果如下图所示:

68fc442884466c062e1cef8cfa87cf57.png

感觉少了点层次感,我们用CSS3的box-shadow属性给气泡加个投影看看。

当然了,提示框的立体感不宜太强,所以跟原始图形错开1个像素就足够了。

[class^=tip-bubble]{

/*其它样式代码省略*/

box-shadow:1px 1px 2px #202020;

-o-box-shadow:1px 1px 2px #202020;

-moz-box-shadow:1px 1px 2px #202020;

-webkit-border-shadow:1px 1px 2px #202020;

}

4行代码功能一致,不同前缀用于兼容不同的浏览器。

以第一行为例,1px 1px 2px #202020代表的是水平和垂直方向都错开1像素,大小为2像素的深灰色(#202020)阴影。4个属性用英文空格分隔,分别代表x方向偏移,y方向偏移,阴影大小和阴影颜色。

运行效果如下图所示:

e7dfad84f297a2af1b12f78a77acbff9.png

现在层次感好多了,我们用before伪元素加入三角形箭头看看。

有关注本站《CSS3基本形状汇总》的朋友对三角形的绘制应该不陌生,方法是利用边框的转角实现,只要边框设置得足够粗,那么转角部分就足以让我们完成三角形的绘制了。

本案例不再详解三角形的实现原理,不过大家要是忘了的话,就可以重温下面的原理图。

317d833d28f3f556df23838edba8c4cc.png

4个气泡都是绘制三角形,不同的只是位置和角度的区别。所以绘制三角形的部分仍然可以作为公共样式定义到[class^=tip-bubble]的before伪元素中。然后,我们也该用绝对定位了。

[class^=tip-bubble]:before{

content:'';

position:absolute;

width:0;

height:0;

border:15px solid;

}

因为只用到边框,所以width和height都设置为0。

运行效果如下图所示:

d1254f68c90946fcd4cc4580b54f28ac.png

伪元素把气泡提示给“挖空”了(实际上是文字颜色)。因为width和height都等于0,所以被挖空的部分实际上都是由边框构成的,结构如下图所示,不难发现它就是4个三角形。

eed1b56e1a6254f7f37992b3e8e6d603.png

现在我们要为气泡提示补上三角形。以左箭头为例,我们要取的是右边框,所以我们给右边框(border-right)设置跟气泡背景一样的颜色。

这次我们就写在tip-bubble-left类上了。

.tip-bubble-left:before{

border-right-color:#202020;

}

运行效果如下图所示:

9429580bd121ead4ddf71778532f5c7a.png

现在我们要把箭头移到提示框的左侧,但不难想象,如果背景颜色跟字体颜色不一致,那移到左边以后就一定会显示出一个被切掉一个角的小色块,所以我们应该先让before伪元素的字体颜色变成全透明。你可以使用CSS3的rgba颜色,但更地道的做法,是使用transparent。4个提示框都应该应用该效果,所以这次我们写回到公共的部分。

[class^=tip-bubble]:before{

/*其它样式代码省略*/

color:transparent;

}

运行效果如下图所示:

fe4081191225117534c6c11fb5093d44.png

这下真的只剩下一个三角形了,另外3个边框已经不可见。

我们把箭头移到左侧,这时候用绝对定位将会很方便。只要让left等于伪元素宽度的相反数就可以了。

伪元素的宽度等于左边框粗细+右边框粗细,即30像素。

.tip-bubble-left:before{

border-right-color:#202020;

left:-30px;

}

运行效果如下图所示:

5e3a1c4e4b4905928c6d1366fe61ffcf.png

现在我们要让箭头垂直居中,但是气泡的高度会随着文本高度的变化而改变。所以我们改用百分比看看,居中自然就是50%了。

.tip-bubble-left:before{

/*其它样式代码省略*/

top:50%;

}

运行效果如下图所示:

2ea66519e08e2f577128c4e806da8562.png

还是没有居中啊。对的,因为定位的参考点是左上角,所以现在是三角形的上顶点对齐到气泡的中心。所以正确的做法是50%-15px(伪元素宽度的一半)。然而CSS3不支持这种写法,但用javaScript来实现又有点杀鸡用牛刀的感觉,所以我们不妨用其它可以控制位置的属性来处理,比如CSS3的transform,或者早期CSS就支持的margin-top。这里我们使用后者。

.tip-bubble-left:before{

/*其它样式代码省略*/

margin-top:-15px;

}

运行效果如下图所示,这回真的居中对齐了:

a1391f7f99bf9dc2790138f4e82ddcd5.png

其它三个方向的实现思路跟左箭头一样,小编就不再重复了,只给出最后的代码。

.tip-bubble-top:before{

border-bottom-color:#202020;

left:50%;

top:-30px;

margin-left:-15px;

}

.tip-bubble-right:before{

border-left-color:#202020;

right:-30px;

top:50%;

margin-top:-15px;

}

.tip-bubble-bottom:before{

border-top-color:#202020;

bottom:-30px;

left:50%;

margin-left:-15px;

}

现在让我们一起来来看下最终的成果吧!

fc7712a4c3b3570764dbf79451dbf4e8.png

气泡提示框是软件,网页等产品使用频率非常高的元素,高端黑更是目前技术类软件的主流色调,所以本教程的实用价值相当高。HTML元素非常简洁,而CSS代码也完全没有掺杂任何跟提示框无关的样式,移植起来非常方便。另一方面,本文对制作过程每一步的讲解都相当细致,涉及的知识点也不复杂,因此本教程除了为实战的朋友带来便利以外,也非常适合初学者作为实例教程进行学习。

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

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

相关文章

HTML5表格简单应用案例之[招聘需求表]

首先先来看一下实现的效果&#xff1a; 源代码&#xff1a; <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style type"text/css">#tab{width: 100%;}tr td{width: 10%;height: 50px;t…

我为什么鼓励工程师写blog

工程师该怎样才能突破自己能力瓶颈&#xff1f;写 blog&#xff01;工程师该怎样精进自己在职涯上所需要的能力&#xff1f;写 blog&#xff01;工程师该怎样才能保持学习与成长的动能&#xff1f;写 blog&#xff01;工程师该怎样才能证明自己的潜力与特质&#xff1f;写 blog…

2020蓝桥杯省赛---java---C---1(约数个数)

题目描述 代码实现 package TEST;class Main{public static void main(String[] args) {int ans0;for (int i 1; i < 78120; i) {if(78120%i0){ans;}}System.out.println(ans);} }答案 96

CSS3中引入多种自定义字体(font-face)

今天在HTML中发现了一个问题&#xff0c;提供给我们默认的字体有很多&#xff0c;但是除了那些“黑体”、“宋体”、“楷体”等支持中文字体之外&#xff0c;其余的都不知道中文字体&#xff0c;如果我们需要用自己喜欢的字体怎么办呢&#xff1f;CSS3中是否可以引入自定义下载…

在ASP.NET Core中使用Apworks快速开发数据服务

不少关注我博客的朋友都知道我在2009年左右开发过一个名为Apworks的企业级应用程序开发框架&#xff0c;旨在为分布式企业系统软件开发提供面向领域驱动&#xff08;DDD&#xff09;的框架级别的解决方案&#xff0c;并对多种系统架构风格提供支持。这个框架的开发和维护我坚持…

2015蓝桥杯省赛---java---A---1(熊怪吃核桃)

题目描述 代码实现 package TEST; class Main{public static void main(String[] args) {int n1543;int sum0;while (n!1){if(n%20){n/2;}else {sum;n--;}}System.out.println(sum1);} }答案 5

多功能语音播放器上线啦~

应广大学生反映&#xff0c;学程序不会读单词&#xff0c;留言问我能不能做个语音播放器&#xff0c;就是能输入英文能读出来的那种&#xff01;&#xff01;为了帮助公众号里面仅有的几百粉丝&#xff0c;我就顺手写一个吧&#xff0c;万一还能增加点粉丝呢&#xff1f;于是经…

Redis进阶之主从复制

转载自 Redis进阶之主从复制 一、主从复制概述 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(master)&#xff0c;后者称为从节点(slave)&#xff1b;数据的复制是单向的&#xff0c;只能由主节点到从节点。 默认…

html图片通过照片查看器打开图片,在Windows7中打开照片,提示“Windows 照片查看器无法显示此图片,因为计算机上...

在Windows7中打开照片&#xff0c;提示“Windows 照片查看器无法显示此图片&#xff0c;因为计算机上的可用内存可能不足。请关闭一些目前没有使用的程序或者释放部分硬盘空间(如果硬盘几乎已满)&#xff0c;然后重试。” 如下图所示&#xff1a;处理过程&#xff1a;1、查看计…

2015蓝桥杯省赛---java---A---3(九数分三组)

题目描述 代码实现 package TEST;class Main{public static void main(String[] args) {for (int i 100; i < 335; i) {if(check(i)){System.out.println(i);}}}public static boolean check(int n){String an""n*2n*3;if(a.contains("1")&&a…

EntityFramework Core不得不注意的性能优化意外收获,你会用错?

前言 这两天在着实研究EF Core项目当中对于一些查询也没实际去检测&#xff0c;于是想着利用放假时间去实际测试下&#xff0c;结果本文就出来了&#xff0c;too young,too simple&#xff0c;后续博主会从底层翻译表达式树弄起&#xff0c;来从源头了解EF Core&#xff0c;通…

微服务为什么离不开spring cloud?

转载自 微服务为什么离不开spring cloud? 现如今微服务架构十分流行&#xff0c;而采用微服务构建系统也会带来更清晰的业务划分和可扩展性。同时&#xff0c;支持微服务的技术栈也是多种多样的&#xff0c;本系列文章主要介绍这些技术中的翘楚——Spring Cloud。这是序篇&a…

html画等边三角形,前台面试:使用CSS画一个等边三角形

CSS是前台面试必考的内容&#xff0c;有时候会面试官会出题让你画少量基本图形。由于画图的过程中可以考察很多的CSS知识点。今天我们就和大家详情一个比较难得等边三角形。思路是利使用三个div的边框来拼成一个三角形&#xff0c;只要要调整好左右两个div边框的旋转角度&#…

2017蓝桥杯省赛---java---A---1(迷宫)

题目描述 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立&#xff0c;则&#xff1a; L表示走到左边的房间&#xff0c; R表示走到右边的房间&#xff0c; U表示走到上坡方…

[认证授权] 2.OAuth2授权(续) amp;amp; JSON Web Token

0. RFC6749还有哪些可以完善的&#xff1f; 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权 中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题&#xff0c;但是只提供了如何获得access_token&#xff0c;并未说明怎么来撤销一个access_token。关于这部分OAut…

Nginx动静分离实现负载均衡

转载自 Nginx动静分离实现负载均衡 前期准备 使用Debian环境。安装Nginx(默认安装)&#xff0c;一个web项目&#xff0c;安装tomcat(默认安装)等。 Nginx.conf配置 1 # 定义Nginx运行的用户 和 用户组 如果对应服务器暴露在外面的话建议使用权限较小的用户 防止被入侵2 # …

html5动画是什么,10个HTML5动画 让你忘掉Flash是啥(组图)

你最近可能已经听到了很多关于Flash是面临垂死挣扎的技术以及它将如何很快被HTML5的取代。就个人而言&#xff0c;我认为HTML5会慢慢取代一些Flash的东西&#xff0c;但Flash会永远有它的一席之地&#xff0c;特别是开发复杂的游戏和丰富的互联网应用。如果你还没有看到HTML5动…

2016蓝桥杯省赛---java---A---6(寒假作业)

题目描述 现在小学的数学题目也不是那么好玩的。 看看这个寒假作业&#xff1a;□ □ □ □ - □ □ □ □ □ □ □ □(如果显示不出来&#xff0c;可以参见【图1.jpg】)每个方块代表1~13中的某一个数字&#xff0c;但不能重复。 比如&#xff1a; 6 7 13 9 - 8 1 …

微服务网关Ocelot

微服务网关是微服务架构中的核心组件,它是客户端请求的门户,它是调用具体服务端的桥梁.下面我们将使用开源项目Ocelot&#xff08;https://github.com/geffzhang/Ocelot&#xff09;搭建一款轻量级服务网关,不过在此之前我们将对微服务网关做个详细介绍,以便大家更加清晰的了解…

分表分库时机选择及策略

转载自 分表分库时机选择及策略 一. 分表 应用场景&#xff1a; 对于大型的互联网应用来说&#xff0c;数据库单表的记录行数可能达到千万级甚至是亿级&#xff0c;并且数据库面临着极高的并发访问。采用Master-Slave复制模式的MySQL架构&#xff0c;只能够对数据库的读进…