• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧
您的位置:首页 > CMS教程 >建站教程 > CSS如何实现渐变提示框(tooltips)

CSS如何实现渐变提示框(tooltips)

作者:站长图库 字体:[增加 减小] 来源:互联网

站长图库向大家介绍了CSS绘制提示框,渐变提示框,tooltips等相关知识,希望对您有所帮助

本篇文章给大家介绍一下使用CSS如何实现支持渐变的提示框(tooltips)。有一定的参考价值,有需要的朋友可以参考一下,希望对你们有所助。


CSS如何实现渐变提示框(tooltips)


今天来看一种十分常见的交互:提示框(tooltips)。通常提示框都是纯色的,比如下面这个

60ee7965d8160.png

这类布局实现还不算复杂,可以用一个圆角矩形和一个小三角拼接形成,设置相同的颜色就可以了

60ee797b84efd.png

这个并不是本文的重点,有兴趣的可以访问 css-tips (codepen.io)  https://codepen.io/xboxyan/pen/MLJjWQ


有时候,为了突出强调产品的特点或者为了跟随设计的潮流,设计会用上渐变背景,比如 lulu UI Edge 版本中的 Tips 组件

60ee79a3c8f35.png

如果仍然采用“拼接”的方式,不可避免会出现衔接不上的问题,有明显的“割裂”感,视觉还原会大打折扣

60ee79bd81ec6.png

那么,如何实现这类效果呢?一起来看看吧

一、clip-path 裁剪

clip-path 可能是很多人马上就能想到的方式。但是实际操作下来,还是会遇到很多麻烦

clip-path: path 可以支持任意形状,但是却没法实现自适应宽高

clip-path: polygon 可以实现小尖角,但是无法实现圆角

clip-path: inset 可以实现自适应圆角矩形,但是无法实现下方的小尖角

如何解决这个问题呢?其实把 2 和 3 结合起来就可以了

这里需要两个相同大小的容器,可以用 ::before 和 ::after 来代替,然后设置相同的背景色,可以通过自定义属性定义

.tips{   position: relative;   --bg: linear-gradient(45deg, #ff3c41, #ff9800);}.tips::before,.tips::after{  content:'';  position: absolute;  width: 100%;  height: 100%;  left: 0;  top: 0;  background: var(--bg);/*完全相同的背景*/  z-index: -1;}

为什么要用两个相同大小的容器呢? 这是为了保证接下来渐变背景在裁剪时完全吻合

60ee79e98bfeb.png

接着其中一个裁剪成圆角矩形,另外一个裁剪成小三角,然后重叠起来就可以了

.tips::before{  clip-path: inset(0 0 5px 0 round 5px);  /*round 可以设置圆角*/}.tips::after{  clip-path: polygon(calc(50% - 5px) calc(100% - 5px), calc(50% + 5px) calc(100% - 5px), 50% 100%);  /* 实现小三角,只需要3个点的坐标就可以了 */}

可以看到提示框完全是自适应的,实时效果如下

60ee7a117463b.png

完整代码可访问 tooltips-clip-path (codepen.io)

https://codepen.io/xboxyan/pen/ExWLyKR


二、mask 遮罩

除了 clip-path ,mask 也是一种思路。如果还不熟悉 mask,可以参考这一篇 https://juejin.cn/post/6846687594693001223 (奇妙的 CSS MASK (juejin.im))

这里的原理如下

60ee7a71a4b51.png

利用 mask ,现在的问题就转变成了:如何通过 CSS 绘制这样一个图形?

60ee7a8384486.png


1. 万能的 gradient

没有什么图形是 CSS 渐变 绘制不出来的,这个也不例外。首先我们把这个图形进行分解,这里可以分成一个圆角矩形和一个三角形,三角形比较容易,可以通过 conic-gradient 或者 linear-gradient 绘制

60ee7ae12a7dc.png

圆角矩形就稍微有点麻烦了,不过还是可以分解的,如下

10.gif

可以由4个径向渐变和2个线性渐变合成,用代码实现就是

tips{  -webkit-mask-image:     /*4个径向渐变和2个线性渐变*/    radial-gradient(circle at 5px 5px, green 5px,transparent 0),    radial-gradient(circle at 5px 5px, green 5px,transparent 0),    radial-gradient(circle at 5px 5px, green 5px,transparent 0),    radial-gradient(circle at 5px 5px, green 5px,transparent 0),    linear-gradient(red,red),    linear-gradient(blue,blue);  -webkit-mask-size:    10px 10px,      10px 10px,    10px 10px,    10px 10px,    100% calc(100% - 15px),    calc(100% - 10px) calc(100% - 5px)  -webkit-mask-position:    left top,    right top,    left 0 bottom 5px,    right 0 bottom 5px,    left 5px,    5px top;  -webkit-mask-repeat: no-repeat}

只要有点耐心,都可以很顺利的写出来

但是...

太长了,有很多重复的(4个radial-gradient),非常啰嗦,有没有什么办法优化呢?这里有一个技巧,碰到重复有规律的东西,可以多想想 repeat,利用背景的平铺特性,合理设置背景尺寸就可以了,如下

11.gif

可以看到,背景尺寸设置成 calc(100% - 10px) 就可以达到平铺效果,代码实现就是

tips{  -webkit-mask-image:     /*只需要一个径向渐变即可*/    radial-gradient(circle at 5px 5px, green 5px,transparent 0),    linear-gradient(red,red),    linear-gradient(blue,blue);  -webkit-mask-size:    calc(100% - 10px) calc(100% - 15px),/*圆角的尺寸,高度由于还需要减去三角形尺寸,所以多了5px*/    100% calc(100% - 15px),    calc(100% - 10px) calc(100% - 5px);&nbs
  


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • CSS如何实现渐变提示框(tooltips)

相关文章

  • 聊聊ThinkPHP3.2.3从php5升级到php7艰辛之路
  • “内容”优化影响排名 “内容”提升用户体验
  • dedecms后台打开慢解决方法
  • PHP怎么只保留汉字
  • 帝国CMS灵动标签显示标题属性、截取标题字数
  • 你值得了解的一种CSS获取图片主题色的小技巧(分享)
  • TP框架中的钩子怎么配置调用(附代码实例)
  • javascript:void什么意思
  • 怎么通过CakePHP内置模块发送邮件(Gmail)
  • WordPress密码重设提示“您的密码重设链接无效,请在下方请求新链接”

文章分类

  • dedecms
  • ecshop
  • z-blog
  • UcHome
  • UCenter
  • drupal
  • WordPress
  • 帝国cms
  • phpcms
  • 动易cms
  • phpwind
  • discuz
  • 科汛cms
  • 风讯cms
  • 建站教程
  • 运营技巧

最近更新的内容

    • 织梦cms二次开发普通会员隐藏/VIP会员显示
    • dedecms调用Discuz!X2.5最新帖子和图片的方法
    • PhotoShop制作沙漠里的3D立体残破钢筋文字教程
    • MySQL数据库的root密码忘记该怎么办
    • Photoshop制作绿色风格金属立体字教程
    • uniapp适配到微信小程序需要注意些什么?
    • Photoshop制作简洁时尚的形象主页
    • js中!与!!的用法介绍
    • Linux服务器快速卸载安装node环境(简单上手)
    • Photoshop设计绚丽魔幻效果的艺术字

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有