HTML5CSS动画如何点击一下就立即结束动画

html-css016

HTML5CSS动画如何点击一下就立即结束动画,第1张

主要利用animation-play-state属性,可以测试以下代码,看是不是你想要的效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/htmlcharset=utf-8" />

<title>动画暂停测试</title>

<style>

#test{

width:200px

height:200px

position:relative

background:red

animation:move 5s alternate infinite

}

@keyframes move{

0%{left:0background:red}

100%{left:600pxbackground:green}

}

</style>

<script>

function start(){

var x=document.getElementById('test')

x.style.animationPlayState="running"

}

function end(){

var y=document.getElementById('test')

y.style.animationPlayState="paused"

}

</script>

</head>

<body>

<div id="test"></div>

<button onclick="start()">开始动画</button>

<button onclick="end()">结束动画</button>

</body>

</html>

每次吃饭点外卖的时候(暴露了自己是个死肥宅,手动滑稽),或者在淘宝购物的时候,将商品加入购物车时会有一个很炫酷的动画,如下图饿了么点餐动画:

所以百度了一下前端使用css实现这个效果,然后就自己就照葫芦画瓢的写了一个小小的demo,完全当作学习了一把。

在界面上,我是参考了图片上的界面,写的css,然后在美团上面扒的数据。完成后的界面如下图:

开始想着只是做一个简单的实现效果,界面上只有div框,按钮什么的这些,反正想着很丑的界面,但是自己看到饿了么这么好看的界面,自己就忍不住模仿着写了一下下。

主要用到的是移动端适配方案:flexible.js + rem的方案

首先获取到页面上所有按钮,然后给按钮添加点击事件,获取到点击当前按钮的位置坐标信息

方案一:使用定位+transition的方式实现

方案二:使用transform + transition的方式实现

其实还可以使用css的animate来实现,只不过由于需要动态计算目标位置的坐标,实现起来比较困难,所以我就没有写,如果目标位置的坐标值固定,那么可以通过animate改变top、left或者translateX、translateY的值来实现这个效果,垂直方向的动画使用贝塞尔曲线的 function-timing 。

初识CSS抛物线动画

https://github.com/HyFun/CSS-Sample-ElemeAnimate