Toggle navigation
在线编辑器
在线代码
文本比较
jQuery下载
前端库
在线手册
登录/注册
下载代码
html
css
js
分享到微信朋友圈
X
html
Racecar
css
@import url("https://fonts.googleapis.com/css?family=Quicksand&display=swap"); html, body { background: black; display: flex; font-family: 'Quicksand', sans-serif; height: 100%; align-items: center; justify-content: center; } #info { color: white; position: fixed; bottom: 0; } #inputContainer label { font-size: 1em; font-weight: bold; display: block; margin-bottom: 10px; line-height: 0px; } #inputContainer input { border-radius: 16px; height: 40px; width: 360px; }
JavaScript
const racecars = Splitting({ target: document.querySelector("#racecarLabel"), by: "chars" })[ 0].chars; const colors = [ "#FF0000", "#FF7F00", "#FFFF00", "#00FF00", "#00FFFF", "#0000FF", "#8B00FF"]; const racetrack = document.querySelector("#racetrack"); //Don't hardcode positions like this at home kids const startPositions = [0, 11, 21, 30, 39, 47, 56]; const ease = Power2.easeInOut; const SPEED_INCREASE = 0.35; let pitStop = false; let colorCount = 0; for (let car of racecars) { car.carNumber = colorCount; car.style.color = colors[colorCount]; colorCount++; } racetrack.addEventListener("focus", race); racetrack.addEventListener("blur", () => pitStop = true); function race() { const trackWidth = racetrack.clientWidth; const trackHeight = racetrack.clientHeight; pitStop = false; for (let car of racecars) { car.style.position = "absolute"; start(car, trackWidth, trackHeight); } } function start(car, tw, th) { TweenMax.to(car, Math.random() * 0.5 + SPEED_INCREASE, { x: tw + 10, ease, rotation: 360, onComplete: () => { firstTurn(car, tw, th); } }); } function firstTurn(car, tw, th) { TweenMax.to(car, Math.random() * 0.5 + SPEED_INCREASE, { y: th + 20, ease, rotation: 720, onComplete: () => { longStretch(car, tw, th); } }); } function longStretch(car, tw, th) { TweenMax.to(car, Math.random() * 0.5 + SPEED_INCREASE, { x: -15, ease, rotation: 1080, onComplete: () => { finalTurn(car, tw, th); } }); } function finalTurn(car, tw, th) { TweenMax.to(car, Math.random() * 0.5 + SPEED_INCREASE, { y: -10, ease, rotation: 1440, onComplete: () => { if (pitStop) { backToStartingPosition(car); } else { start(car, tw, th); } } }); } function backToStartingPosition(car) { TweenMax.to(car, 0.5, { x: startPositions[car.carNumber], y: 0 }); }
粒子
时间
文字
hover
canvas
3d
游戏
音乐
火焰
水波
轮播图
鼠标跟随
动画
css
加载动画
导航
菜单
按钮
滑块
tab
弹出层
统计图
svg
×
Close
在线代码下载提示
开通在线代码永久免费下载,需支付20jQ币
开通后,在线代码模块中所有代码可终身免费下!
您已开通在线代码永久免费下载,关闭提示框后,点下载代码可直接下载!
您已经开通过在线代码永久免费下载
对不起,您的jQ币不足!可通过发布资源 或
直接充值获取jQ币
取消
开通下载
<!doctype html> <html> <head> <meta charset="utf-8"> <title>输入框动画-jq22.com</title> <script src="https://www.jq22.com/jquery/jquery-1.10.2.js"></script> <style>
</style> </head> <body>
<script>
</script>
</body> </html>
2012-2021 jQuery插件库版权所有
jquery插件
|
jq22工具库
|
网页技术
|
广告合作
|
在线反馈
|
版权声明
沪ICP备13043785号-1
浙公网安备 33041102000314号