SVG 和 CSS3 实现一个超酷爱心 Like 按钮

Python微信订餐小程序课程视频

https://blog.csdn.net/m0_56069948/article/details/122285951

Python实战量化交易理财系统

https://blog.csdn.net/m0_56069948/article/details/122285941
在现代网页中,我们经常可以在一些文章、视频和图片页面上找到”Like”按钮,并且通过点击该按钮来表示自己对该内容的喜欢或者不喜欢。大部分”Like”按钮是纯文本按钮或者图片按钮,如果你想让它们具有特别的动画特效,那么我们就需要用到CSS3或者JavaScript了。本文给大家带来一个带有爱心散列动画的Like按钮,主要采用了SVG和CSS3这两个技术。当你点亮Like按钮时,按钮的四周将会散发出多个五彩绚丽的爱心。

效果预览

代码实现

HTML代码

首先我们用SVG的Path路径绘制了一个爱心按钮:

<svg height="320" width="320" class="like" onclick="document.body.classList.toggle('liked')"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90" fill="white"> 
svg>

同时定义了onclick事件,当点击这个爱心按钮时,CSS类将会在likeliked之间切换。

就下来就是定义爱心按钮点击后周围出现的元素,主要是一些五彩的小圆点和一些不同风格颜色的SVG小爱心,代码如下:

<div class="dot dot-1">div>
<div class="dot dot-2">div>
<div class="dot dot-3">div>
<div class="dot dot-4">div>
<div class="dot dot-5">div>
<div class="dot dot-6">div>
<div class="dot dot-7">div>
<div class="dot dot-8">div><svg height="40" width="40" viewBox="0 0 320 320" class="h h-1"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-2"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-3"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-4"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg><svg height="40" width="40" viewBox="0 0 320 320" class="h h-5"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-6"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-7"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="40" width="40" viewBox="0 0 320 320" class="h h-8"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg><svg height="110" width="110" viewBox="0 0 320 320" class="fly fly-1"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>
<svg height="110" width="110" viewBox="0 0 320 320" class="fly fly-2"><path class="path" d="M 160 145 c 15 -90 170 -20 0 90 m 0 -90 c -15 -90 -170 -20 0 90">svg>

到这里为止,我们利用了HTML和SVG将Like爱心按钮以及点击后的动画元素全部绘制了出来。接下来就是添加相应CSS来实现动画效果了。

CSS代码

首先是SVG爱心按钮的CSS代码,这是点击前的默认样式:

svg.like {position: fixed;z-index: 10;top: calc(50vh - 160px);left: calc(50vw - 160px);border-radius: 100%;-webkit-transform: scale(0.3);transform: scale(0.3);-webkit-transform-origin: 50% 50%;transform-origin: 50% 50%;box-shadow: 0 0 250px rgba(0, 0, 0, 0.4);background: #212121;cursor: pointer;
}

然后点击按钮后,CSS类将会切换到liked,这时候按钮将会闪动一下,同时周围将会飞入许多五彩的小圆点和小爱心。闪动动画的代码如下:

body.liked svg.like {-webkit-animation: blink 1s forwards;animation: blink 1s forwards;
}
@-webkit-keyframes blink {10% {-webkit-transform: scale(0.42);transform: scale(0.42);background: #8815b7;}100% {background: #e01f4f;}
}@keyframes blink {10% {-webkit-transform: scale(0.42);transform: scale(0.42);background: #8815b7;}100% {background: #e01f4f;}
}

小圆点和小爱心飞入的动画代码如下:

body.liked svg.fly.fly-1 {-webkit-animation: fly-1 1s 0.1s;animation: fly-1 1s 0.1s;
}
body.liked svg.fly.fly-2 {-webkit-animation: fly-2 1s 0.1s;animation: fly-2 1s 0.1s;
}
@-webkit-keyframes fly-1 {25% {margin: -100px 0 0 100px;}75% {margin: 100px 0 0 -100px;z-index: 5;}100% {z-index: 11;}
}
@keyframes fly-1 {25% {margin: -100px 0 0 100px;}75% {margin: 100px 0 0 -100px;z-index: 5;}100% {z-index: 11;}
}
@-webkit-keyframes fly-2 {25% {margin: -100px 0 0 -100px;}75% {margin: 100px 0 0 100px;z-index: 5;}100% {z-index: 11;}
}
@keyframes fly-2 {25% {margin: -100px 0 0 -100px;}75% {margin: 100px 0 0 100px;z-index: 5;}100% {z-index: 11;}
}

最后我们把五彩小圆点和小爱心的CSS代码也贴出来:

div.dot {width: 12px;height: 12px;background: white;position: fixed;z-index: 9;border-radius: 100%;top: calc(50vh - 6px);left: calc(50vw - 6px);
}
div.dot:before {content: "";width: 8px;height: 8px;border-radius: 100%;top: -20px;left: 2px;position: absolute;background: white;
}
div.dot:after {content: "";width: 11px;height: 11px;border-radius: 100%;top: -160px;left: 2px;position: absolute;background: white;display: none;
}
body.liked div.dot {opacity: 0;-webkit-transform: translateY(-100px);transform: translateY(-100px);background: #00e5ff;transition: opacity 0.5s 1s, background 0.1s 0.2s, -webkit-transform 1s;transition: transform 1s, opacity 0.5s 1s, background 0.1s 0.2s;transition: transform 1s, opacity 0.5s 1s, background 0.1s 0.2s, -webkit-transform 1s;
}
body.liked div.dot:after {display: block;
}
body.liked div.dot.dot-2 {-webkit-transform: rotate(45deg) translateY(-100px);transform: rotate(45deg) translateY(-100px);
}
body.liked div.dot.dot-3 {-webkit-transform: rotate(90deg) translateY(-100px);transform: rotate(90deg) translateY(-100px);
}
body.liked div.dot.dot-4 {-webkit-transform: rotate(135deg) translateY(-100px);transform: rotate(135deg) translateY(-100px);
}
body.liked div.dot.dot-5 {-webkit-transform: rotate(180deg) translateY(-100px);transform: rotate(180deg) translateY(-100px);
}
body.liked div.dot.dot-6 {-webkit-transform: rotate(225deg) translateY(-100px);transform: rotate(225deg) translateY(-100px);
}
body.liked div.dot.dot-7 {-webkit-transform: rotate(270deg) translateY(-100px);transform: rotate(270deg) translateY(-100px);
}
body.liked div.dot.dot-8 {-webkit-transform: rotate(305deg) translateY(-100px);transform: rotate(305deg) translateY(-100px);
}

到这里,整个Like爱心按钮动画就完成了。文章最后也将源码献给大家。

源码下载

完整的代码我已经整理出了一个源码包,供大家下载学习。

源码下载链接: https://mp.weixin.qq.com/s/rJK07Dr63KpJZ1xfCSKHBg

代码仅供参考和学习,请不要用于商业用途。

最后总结

这个SVG和CSS实现的Like按钮非常有创意,很适合在一些商品展示平台上使用。另外,对于like后出现的五彩小圆点和小爱心,大家也可以发挥自己的想象,修改或者添加别的元素,因为SVG非常灵活,可以轻松绘制任何你喜欢的形状。

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

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

相关文章

redis简单学习3-redis常用命令总结

2019独角兽企业重金招聘Python工程师标准>>> 1.键值相关的命令 keys 返回满足给定pattern的所有key 表达式* 代表取出所有的key redis 127.0.0.1:6379> keys * 1) "myzset2" 2) "myzset3" 3) "mylist" 4) "myset2" 5)…

微软的创新还是败笔?Windows 8为苹果创造天赐良机

网络安全公司Avast近日公布的数据显示&#xff1a;Windows系统使用人数正在不断下降。这一结果对微软来说可谓噩梦&#xff0c;于此同时&#xff0c;苹果则不断加强市场占有率。又是什么导致了这样的结果&#xff1f;接下来就看看最主要的几点&#xff1a; 调查覆盖了13.5万Wi…

testbench常用任务之SPI slave输出数据

模仿了SPI master从SPI slave读取数据的MiSO数据状态 每8个clk后读取的数据加1 用的一些额外寄存器需要自己声明和初始化 //------------------------------------------------------------------------- //send serial data which is increase by 1 on MiSO line //----------…

Vue生产环境调试的方法

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 vue 生产环境默认是无法启用vue devtools的&#xff0c;如果生产应用出了问题&…

RavenDB:基于Windows/.NET平台的NoSQL数据库

众所周知&#xff0c;NoSQL运动旨在成为大数据时代传统关系数据库管理系统的替代品。如今Microsoft对开源的态度有所转变&#xff0c;RavenDB就是很好的例子。Microsoft对RavenDB&#xff08;NoSQL数据库&#xff09;的认可令很多人感到惊讶。RavenDB可以轻易的替代关系数据库管…

JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

一、为什么我们要用连接池技术&#xff1f; 前面的数据库连接的建立及关闭资源的方法有些缺陷。统舱传统数据库访问方式&#xff1a;一次数据库访问对应一个物理连接,每次操作数据库都要打开、关闭该物理连接, 系统性能严重受损。 解决方案&#xff1a;数据库连接池&#xff08…

重温51汇编指令(附实验)

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 重温51汇编指令&#xff08;附实验&#xff09; 写在前面&#xff1a; 在电子控制…

SSH HTTPS 公钥、秘钥、对称加密、非对称加密、 总结理解

2019独角兽企业重金招聘Python工程师标准>>> 作者&#xff1a;shede333主页&#xff1a;http://my.oschina.net/shede333 && http://blog.sina.com.cn/u/1509658847版权声明&#xff1a;原创文章&#xff0c;版权声明&#xff1a;自由转载-非商用-非衍生-保…

升级nginx,查看已经安装的模块,并隐藏或者修改版本号

升级前&#xff0c;查看已经安装的版本以及模块[rootmail ~]# /opt/nginx/sbin/nginx -Vnginx version: nginx/0.5.34 built by gcc 3.4.6 20060404 (Red Hat 3.4.6-3)configure arguments: --prefix/opt/nginx --sbin-path/opt/nginx/sbin/nginx --conf-path/opt/nginx/conf/n…

SpringCloudAlibaba微服务docker容器打包和部署示例实战

Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https://blog.csdn.net/m0_56069948/article/details/122285941 概述 我们使用前面《SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码…

MongoVUE的Collections数据不显示的解决方法

问题描述&#xff1a; 使用 mongoDB数据库&#xff0c; 数据添加成功了&#xff0c;使用命令行能查询出来&#xff0c;但在MongoVUE 中数据却不显示 (我使用的是 mongoDB 3.4 的版本) 原因&#xff1a;引擎问题&#xff0c;只要降到2.X版本就可以显示了     3.x默认是wire…

SaltStack WEB UI Halite初体验

闲来无聊&#xff0c;话说saltstack webui halite还一直没玩&#xff0c;于是就凑今天体验一把&#xff1b;很多尝鲜的同学都说halite的功能较少&#xff0c;而其也正符合其说明console&#xff0c;不过其UI我还是蛮喜欢的&#xff0c;个人觉得比较清新简洁、挺好下面就来安装体…

Envoy熔断限流实践(二)Rainbond基于RLS服务全局限流

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

TAppEncoder的main函数

TAppEncoder是编码器工程&#xff0c;完成视频序列的编码。 运行时&#xff0c;首先调用encmain.cpp中的main函数 main函数中完成的工作主要有初始化encoder类&#xff0c;解析cfg文件&#xff0c;然后调用TAppEncTop::encode函数进入下一层&#xff0c;并且对编码过程进行计时…

【大话云原生】微服务篇-五星级酒店的服务方式

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

如何在Web前端实现CAD图文字全文搜索功能之技术分享

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

基于Java (spring-boot)的仓库管理系统

一、项目介绍 本系统的使用者一共有系统管理员、仓库管理员和普通用户这3种角色: 1.系统管理员&#xff1a;通过登录系统后&#xff0c;可以进行管理员和用户信息的管理、仓库和物品分类的管理&#xff0c;以及操作日志的查询&#xff0c;具有全面的系统管理权限。 2.仓库管理…

基于语义感知SBST的API场景测试智能生成

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…

2015 CALLED THE INTERFACE OF 2014

Writer&#xff1a;BYSocket&#xff08;泥沙砖瓦浆木匠&#xff09; 微博&#xff1a;BYSocket豆瓣&#xff1a;BYSocketReprint it anywhere u want. ”Hi , Happy New Year.Written in Stupid Enlish,Dont push me *.* ” 2014 System 2015 is coming.But 2014 is not over.…

论文解读(MERIT)《Multi-Scale Contrastive Siamese Networks for Self-Supervised Graph Representation Learni

&#x1f680; 优质资源分享 &#x1f680; 学习路线指引&#xff08;点击解锁&#xff09;知识定位人群定位&#x1f9e1; Python实战微信订餐小程序 &#x1f9e1;进阶级本课程是python flask微信小程序的完美结合&#xff0c;从项目搭建到腾讯云部署上线&#xff0c;打造一…