您现在的位置是:网站首页> 编程资料编程资料
css实现抖音订阅按钮动画效果CSS3 水墨风格背景动画按钮基于CSS 属性实现按钮悬停边框和背景动画集合CSS实现菜单按钮动画
2021-09-03
1011人已围观
简介 这篇文章主要介绍了css实现抖音订阅按钮动画效果,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
前段时间刷抖音,觉得关注时的按钮动画很好看,加上自己本身最近也在学习前端知识。所以就想怎么自己实现出来,最终效果还可以,但是感觉自己做的还不够好。仅供参考。
🍻最终效果

💡思路
- 使用jQuery的
toggleClass()方法,添加删除类active - 分别为原本的和
active的元素设置样式,使用css的transition属性,定义变化时间,速度等 - 使用css的
animation为active元素设置变化动画
👨💻实现
HTML
Document
JS
$(function () { // jQuery入口函数 $('#followBtn').click(function (e) { // 绑定点击事件 $('#followBtn').toggleClass('active'); $('#line1').toggleClass('active'); $('#line2').toggleClass('active'); }); })CSS
body { width: 1024px; margin: 0 auto; /* 居中 */ } #followBtn { position: relative; display: block; width: 100px; height: 100px; margin: 100px auto; border-radius: 100px; // 使div变为圆形 background-color: #ccc; transition: all linear .5s; // 定义样式转换时的过度动画的属性 } #followBtn.active { background-color: crimson; } #line1 { position: absolute; /*绝对定位,定位基于最近的一个已经定位(relative, absolute, fixed)的祖先元素*/ left: 25px; top: 46px; display: block; width: 50px; height: 8px; border-radius: 5px; background-color: crimson; transition: all linear .5s; } #line2 { position: absolute; left: 25px; top: 46px; display: block; width: 50px; height: 8px; border-radius: 8px; background-color: crimson; transform: rotate(90deg); /* 旋转90度 */ transition: all linear .5s; } #line1.active { background-color: #ccc; /*触发动画,forwards表示动画结束后,元素样式保留为动画的最后一个关键帧的样式*/ animation: line1 .5s ease-in-out forwards; } #line2.active { background-color: #ccc; animation: line2 .5s ease-in-out forwards; } /* @keyframes定义动画 */ @keyframes line1 { 50% { width: 8px; height: 8px; left: 20px; top: 52px; border-radius: 8px; } 100% { width: 30px; left: 20px; top: 52px; transform: rotate(45deg); } } @keyframes line2 { 50% { width: 8px; height: 8px; border-radius: 8px; left: 35px; } 100% { width: 50px; left: 35px; transform: rotate(-45deg); } }分割线👇👇👇使用svg绘制对号✔🍻最终效果

👨💻实现
HTML
Document
JS
❗❗❗一定要使用jQuery3,3以下的版本操作svg元素(添加类)时有bug,3修复了这个问题。
$(function () { $('#followBtn').click(function (e) { $('#followBtn').toggleClass('active'); $('.line').toggleClass('active'); $('polyline').toggleClass('active'); }); })CSS
body { width: 1024px; margin: 0 auto; } #followBtn { position: relative; display: block; width: 100px; height: 100px; margin: 100px auto; border: none; border-radius: 100px; background-color: crimson; transition: all linear .5s; } #followBtn:focus { outline: none; /* 浏览器点击不会有蓝框 */ } #followBtn.active { background-color: #ccc; } .line { position: absolute; /*绝对定位,定位基于最近的一个已经定位(relative, absolute, fixed)的祖先元素*/ left: 25px; top: 46px; width: 50px; height: 8px; border-radius: 8px; background-color: #ccc; transition: ease-in 0; } .line:nth-child(1) { transform: rotate(90deg); } .line.active { animation: fade .5s forwards; } polyline { /* 属性stroke-dasharray设置线段缺口以形成曲线, * 当缺口足够大,看起来折线就隐藏了 * 属性stroke-dashoffset指定了dash模式到路径开始的距离,0时折线完全显示 */ stroke-dasharray: 80px; stroke-dashoffset: 80px; } polyline.active { animation: show .5s forwards; animation-delay: .5s; } @keyframes show { to { stroke-dashoffset: 0; } } @keyframes fade { to { opacity: 0; transform: rotate(360deg) scale(0.5, 0.5); } }👨🎓感悟
普通HTML元素和SVG元素的旋转方式不同:
普通HTML元素的transform-origin默认为自身的中心SVG元素的transform-origin默认为SVG画布的左上角

去除按钮点击后的蓝框,可以设置outline: none;
jQuery3以下的版本,不能正确的给修改SVG元素的类。
//.attr()方法对于SVG是有效的,所以如果你必须使用jQuery的话 // 使用 $("#item").attr("class", "oldclass newclass"); // 而不是 .addClass("newclass") // 使用 $("#item").attr("class", "oldclass"); // 而不是 .removeClass("newclass") // 原生JS解决办法 var element = document.getElementById("item"); // 使用 element.setAttribute("class", "oldclass newclass"); // 使用 element.setAttribute("class", "oldclass");🔗参考
jQuery SVG, why can’t I addClass?
到此这篇关于css实现抖音订阅按钮动画效果的文章就介绍到这了,更多相关css抖音订阅按钮动画内容请搜索以前的文章或继续浏览下面的相关文章,希望大家以后多多支持!
相关内容
- CSS选择器中的正则表达式使用CSS3选择器新增问题的实现CSS 选择所有子元素添加样式的方法CSS3 新增选择器的实例一文教你玩转CSS 组合选择器
- 巧用CSS属性值正则匹配选择器(小技巧)css3的focus-within选择器的使用CSS选择器中的正则表达式使用css选择器四大类:基本、组合、属性、伪类css复杂选择器及css字体样式、颜色属性详解详解如何使用CSS3中的结构伪类选择器和伪元素选择器CSS3 新增选择器的实例css3 伪类选择器快速复习小结CSS 样式的使用方式、选择器 盘点CSS Selectors Level4中新增的选择器CSS 中的六个重要选择器(三秒就可以记住)
- 通过css动画实现一个表格滚动轮播效果CSS3制作轮播图的一种方法css实现带箭头和圆点的轮播纯HTML和CSS实现JD轮播图效果利用 CSS3 实现的无缝轮播功能代码HTML+CSS+JS实现堆叠轮播效果的示例代码
- CSS实现两栏布局,左边固定,右边自适应的4种方法两个div左边的固定宽度右边的自动填充的css
- 利用CSS3的3D效果制作正方体css3中transform属性实现的4种功能详解CSS3.0(Cascading Style Sheet) 层叠级联样式表纯CSS3实现div按照顺序出入效果CSS3实现列表无限滚动/轮播效果css3 利用transform-origin 实现圆点分布在大圆上布局及旋转特效CSS3实现的侧滑菜单CSS3实现的3D隧道效果用CSS3画一个爱心css3 实现文字闪烁效果的三种方式示例代码六种css3实现的边框过渡效果
- CSS实现带遮罩层可关闭的弹窗效果使用CSS content的attr实现鼠标悬浮提示(tooltip)效果CSS实现鼠标悬浮无限向下级展示的实例代码CSS鼠标悬浮DIV后显示DIV外的按钮解决方法CSS3制作了一个动画导航效果(鼠标悬浮会放大)css实现缕空遮罩层的示例代码css3遮罩层镂空效果的多种实现方法CSS实现鼠标移至图片上显示遮罩层效果CSS 鼠标悬浮在图片上添加遮罩层效果的实现
- css如何利用负margin技术实现平均布局css 布局 之 两端布局的实例代码 (利用父级负的margin)css布局之负margin妙用及其他实现CSS中使用负margin值来调整居中位置css利用负margin实现平均布局的示例
- css3媒体查询中device-width和width的区别详解Css深刻理解width:auto的用法让IE6支持兼容min-width、max-width CSS样式属性的方法CSS属性探秘系列(五):min-widthCSS中height和width在IE和其他浏览器中的区别图文详解css行内元素padding,margin,width,height没有变化CSS 透明背景时,记得给容器加上width宽度IE6不支持CSS中的min-width/height属性问题的解决方法
- css3 flex实现div内容水平垂直居中的几种方法使用CSS实现盒子水平垂直居中的方法(8种)CSS 水平居中并限定最大的宽度实现CSS实现子元素div水平垂直居中的示例CSS中的translate(-50%,-50%)实现水平垂直居中效果CSS3 不定高宽垂直水平居中的几种方式CSS3实现水平居中、垂直居中、水平垂直居中的实例代码手把手教你CSS水平、垂直居中的10种方式(小结)web前端之css水平居中代码解析
- 解决CCS中的margin:top塌陷问题
