ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

按钮点击出现涟漪效果

2020-04-28 12:51:15  阅读:401  来源: 互联网

标签:linear 100px 1px height width 点击 涟漪 background 按钮


点击涟漪效果

前天看到b站上一个视频,up主实现了一个按钮点击然后以点击点为圆心出现一个圆,然后这个圆慢慢变大最后消失,感觉很吊的样子,我觉得我也能实现,废话不多说,干就完了。

。。。。。。。。。。。。。。。

经过两分钟的编写,终于实现了 (如下图:点击了第二个按钮,然后出现了一个涟漪)

 

然后上代码

html:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>涟漪</title>
    <link rel="stylesheet" href="../css/base.css" />
    <link rel="stylesheet" href="../css/button.css" />
  </head>
  <body>
    <div id="app">
      <ul @click="cel">
        <li>
          <div class="btn-cel" @click="cel">
            click
          </div>
        </li>
        <li>
          <div class="btn-cel red" @click="cel">
            click
          </div>
        </li>
        <li>
          <div class="btn-cel blue" @click="cel">
            click
          </div>
        </li>
      </ul>
    </div>
  </body>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <script>
    new Vue({
      el: "#app",
      methods: {
        cel(tag) {
          let x = tag.offsetX;
          let y = tag.offsetY;
          let ripples = document.createElement("span");
          ripples.style.left = x + "px";
          ripples.style.top = y + "px";
          tag.srcElement.appendChild(ripples);
          setTimeout(() => {
            ripples.remove();
          }, 1000);
        },
      },
    });
  </script>
</html>

base.css:

* {
  margin: 0;
  padding: 0;
}

html,body {
  height: 100vh;
  width: 100vw;
  background-color: #fff;
  font-size: 14px;
  font-family: Arial, Helvetica, sans-serif;
  font-weight: normal;
}

a {
  text-decoration: none;
}
 li {
   list-style: none;
 }
input {
  outline: none;
}

然后是主要的button.css:

#app{
  width: 100%;
  height: 100%;
  background: linear-gradient(to right,#123456 0%,#abcdef 100%);
  display: flex;
  justify-content: center;
  align-items: center;
}
ul{
  width: 300px;
  height: 200px;
  background-color: #fff;
  padding: 20px;
  border-radius: 10px;
  position: relative;
  overflow: hidden;
}
li{
  margin: 20px;
}
.btn-cel{
  width: 100px;
  height: 30px;
  line-height: 30px;
  text-align: center;
  border: 1px solid #abcdef;
  margin: 0 auto;
  text-transform: uppercase;
  font-size: 14px;
  letter-spacing: 2px;
  border-radius: 6px;
  cursor: pointer;
  color: wheat;
  position: relative;
  background: linear-gradient(40deg,#755beaff,#ff72c077);
  overflow: hidden;
}
.red{background: linear-gradient(90deg,#6e1e22ff,#a3949677);}
.blue{background: linear-gradient(90deg,#43129eff,#a8aed477);}
span{
  position: absolute;
  display: inline-block;
  width: 10px;
  height: 10px;
  border-radius: 50%;
  transform: translate(-50%,-50%);
  background-color: #fff000;
  animation: animate 1s linear infinite;
}
@keyframes animate{
  from{width: 1px;height: 1px;opacity: .5;}
  to{width: 100px;height: 100px;opacity: .1;}
}

然后就OK了 美滋滋

不过:没有做浏览器兼容问题,谷歌浏览器是没问题的

 

这个小demo还是让俺复习到了一些知识点的:

1.vue点击事件怎么获取到当前元素:tag.srcElement

2.背景渐变:background: linear-gradient(to right,#123456 0%,#abcdef 100%);

3.c3动画:

animation: animate 1s linear infinite; @keyframes animate{   from{width: 1px;height: 1px;opacity: .5;}   to{width: 100px;height: 100px;opacity: .1;} }   over!

 

标签:linear,100px,1px,height,width,点击,涟漪,background,按钮
来源: https://www.cnblogs.com/rainbowLover/p/12793405.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有