前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端|动态发光按钮

前端|动态发光按钮

作者头像
算法与编程之美
发布2020-08-17 16:53:36
2.8K0
发布2020-08-17 16:53:36
举报

问题描述

通常我们在HTML表单中使用button元素,是通过<button>标签定义一个按钮,再在button元素内部来放置内容,动态发光按钮原理类似。动态发光按钮是通过CSS工具使按钮呈现颜色渐变效果,最后引入JavaScript使得按钮发光的一种效果。

解决方案

制作动态发光按钮时,要注意以下细节:

使用background: linear-gradient标签来设置按钮颜色的渐变效果。

制作过程:

(1)设置页面背景,使用背景图片填充网页。使图片的高度height:100vh;让网页高度撑满,background标签后面加上no-repeat让背景不重复,使用background-size: cover;把背景图像扩展至足够大,让背景图像完全覆盖背景区域。

代码语言:javascript
复制

* {

         padding: 0;

         margin: 0;

     }

     body {

         height: 100vh;    /*让高度页面撑满*/

         background: url(fg1.jpg) no-repeat;

         background-size: cover;

     }

     ul {

         list-style: none;

     }

     button {

         outline: none;

         border: none;

     }

(2)创建一个容器class="firefly"的按钮,并为它添加CSS效果。

代码语言:javascript
复制
 .firefly  {

         width: 180px; /*宽度*/

         height: 60px; /*高度*/

         position: absolute; /*绝对定位*/

         top: 50%;/*网页顶部距离*/

         left: 50%;/*网页左边距离*/

         transform: translate(-50%, -50%);/*实现水平垂直居中*/

         background: linear-gradient(to right, #55c3a0 10%, #f7d66e);/*background-images:linear-gradient(位置,颜色1,颜色2…颜色n);*/

         border-radius: 40px;/*设置圆角*/

         opacity: .88;/*透明程度*/

         cursor: pointer;/*光标呈现为指示链接的指针(一只手)*/

         transition: 1s;/*平滑过渡的时间*/

     }

     .firefly:hover {  /*鼠标移上按钮时*/

         box-shadow: 0 0 10px #B4FFB4; /*阴影大小,颜色*/

     }

     .firefly p {

         line-height: 60px; /*行高:与高度相同时,文字呈现在按钮中心*/

         font-size: 22px;

         color: #e4e4d5;

         font-family: firefly;

         opacity: .88;

     }

(3)为按钮设置发光内边框和发光气泡点。

代码语言:javascript
复制
<div><!--气泡-->

            <ul>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

                <li></li>

            </ul>

         </div>
代码语言:javascript
复制
 .lightning  {

         width: 95%;

         height: 80%;

         position: absolute;

         top: 50%;

         left: 50%;

         transform: translate(-50%, -50%);

         border-radius: 40px;

         transition: .8s;

         overflow: hidden;/*隐藏溢出,清除浮动*/

     }

     .firefly:hover .lightning {

         box-shadow: 0 0 4px #B4FFB4 inset;/*鼠标上移时,按钮内边框的大小颜色*/

    }

     .lightning ul {

         opacity: 0;

         transition: .8s;

     }

     .firefly:hover ul {

         opacity: .8;

     }

     .lightning ul li { /*气泡*/

         width: 5px;

         height: 5px;

         background-color: #91FA91;/*气泡颜色*/

         position: absolute;

         bottom: 10%;/*距按钮底部距离*/

         border-radius: 50%;

         opacity: .6;

         animation: fireflymove infinite linear;/*动画:动画名称  间隔时间 动画的速度曲线*/

     }

     @keyframes fireflymove {/*设置动画效果*/

         100% {

            bottom: 100%;   /*要实现的css样式*/

         }

     }

(4)引入JavaScript,为按钮内气泡设置不同的高低位置和运行速度。

代码语言:javascript
复制
<script>

     var lgh = $('.lightning li').length;

 

     $('.lightning li').each(function(i) {

         $(this).css({

            left: i * (100/lgh) + '%',

            bottom: randomNum(-20, 10) + '%',  //为气泡设置不同高度

             animationDuration: randomNum(1,  5) + 's'//动画

         });

     });

 

 //  随机数方法:

     function randomNum(max, min) {

         var num = Math.floor(Math.random() * (max-min+1) + min);

         return num;

     }

</script>

效果图:

图1

图2

结语

本篇文章中用到的前端效果是通过网上视频教学来完成的。其中的重点是用@keyframes和animation结合的动画效果以及其中的JavaScript代码,如有错误还请指正。

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-08-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 算法与编程之美 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档