问答

css动画,如何实现点击/长按时背景色切换的动画效果(背景从中间

作者:admin 2021-04-21 我要评论

与直接变色不同,颜色是有一个从中间向两边过渡的动画效果 按照评论区的方法会出现下面bug 也就是先点击,然后马上滑动的时候, 动画进行到一半就消失了 ,看起...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

与直接变色不同,颜色是有一个从中间向两边过渡的动画效果
1614764222560.gif

按照评论区的方法会出现下面bug

1614763888130.gif

也就是先点击,然后马上滑动的时候,动画进行到一半就消失了,看起来效果很糟糕

但最上的示例图就不会出现这类问题……

###

伪类+transform简单实现了一下,细节自己处理一下

image

<style>
.demo, .demo li {
  list-style: none;
  margin: 0;
  padding: 0;
}

.demo li {
  width: 500px;
  height: 100px;
  background: #eee;
  border-top:#ddd solid 1px;
  position:relative;
}

.demo li:before{
  content: '';
  position:absolute;
  left: 50%;
  transform: translateX(-50%);
  top: 0;
  bottom: 0;
  width: 80%;
  background: #ddd;
  border-radius: 50px;
  transition: 0.1s ease-out;
  opacity: 0;
}

.demo li:active:before {
  width: 100%;
  border-radius: 0;
  opacity: 1;
}
</style>
<ul class="demo">
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
</ul>
###

animation + keyframes

简易样例如下:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>背景渐变动画</title>
<style type="text/css">
div {
    width:300px;
    height:48px;
    background:#eee;
    text-align:center;
}
div:active{
    /*执行动画*/
    animation:show 0.5s 1;
    /*停止在最后一帧*/
    animation-fill-mode:forwards;
}
@keyframes show{
    10%{
        background:radial-gradient(Circle,#999 40%,  #999 40%,  #eee 40%); 
    }
    20%{
        background:radial-gradient(Circle,#999 60%,  #999 60%, #eee 60%); 
    }
    40%{
        background:radial-gradient(Circle,#999 80%,  #999 80%, #eee 80%);
    }
    60%{
        background:radial-gradient(Circle,#999 90%, #999 90%,, #eee 90%);
    }
    80%{
        background:radial-gradient(Circle,#999 95%, #999 95%, #eee 95%);
    }
    100%{
        background:radial-gradient(Circle,#999 100%, #999 100%, #eee 100%);
    }
}
</style>
</head>
<body>
<div>内容</div>    
</body>
</html>

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • css动画,如何实现点击/长按时背景色切

    css动画,如何实现点击/长按时背景色切

  • docker 启动mongodb,创建非admin数据

    docker 启动mongodb,创建非admin数据

  • 请问服务器上mongodb数据如何备份到本

    请问服务器上mongodb数据如何备份到本

  • a链接下载文档,本地可以下载,发布后

    a链接下载文档,本地可以下载,发布后

腾讯云代理商
海外云服务器