物理弹性滚动 js 对联广告代码
您希望实现一个带有物理弹性滚动的对联广告,即广告在页面上显示时,具有类似物理物体被弹动的效果。
transition
属性实现过渡效果。
<div class="ad-container">
<img src="your-ad-image.jpg" alt="对联广告">
<span class="close">X</span>
<div class="ad-content">
<p>上联:...</p>
<p>下联:...</p>
</div>
</div>
CSS
.ad-container {
position: fixed;
top: -100px; /* 初始位置在屏幕上方 */
right: 20px;
transition: top 0.5s ease-in-out;
}
JavaScript
const adContainer = document.querySelector('.ad-container');
const closeBtn = document.querySelector('.close');
// 模拟弹跳效果函数
function bounce(element, maxHeight) {
let currentHeight = -maxHeight;
let velocity = 10;
let gravity = 0.5;
function animate() {
currentHeight += velocity;
velocity -= gravity;
if (currentHeight > 0) {
currentHeight = maxHeight;
velocity = -velocity * 0.8; // 每次弹跳速度减小80%
}
element.style.top = currentHeight + 'px';
if (Math.abs(velocity) < 1) {
return;
}
requestAnimationFrame(animate);
}
animate();
}
// 显示广告并触发弹跳效果
adContainer.style.display = 'block';
bounce(adContainer, 100); // 最大弹跳高度为100px
// 关闭按钮点击事件
closeBtn.addEventListener('click', () => {
adContainer.style.display = 'none';
});
requestAnimationFrame
实现动画循环,通过不断更新元素的top
属性模拟弹跳效果。velocity
和gravity
的值,可以控制弹跳的幅度和速度。requestAnimationFrame
是现代浏览器支持的API,对于不支持的浏览器需要提供兼容性处理。除了使用JavaScript实现,还可以使用CSS3的animation
属性来实现弹跳效果。不过,CSS3的动画在复杂度和自定义性方面可能不如JavaScript。
温馨提示: 在实际应用中,您可能需要根据您的具体需求对代码进行调整和优化。
希望这份代码能帮助您实现物理弹性滚动的对联广告效果!
如果您还有其他问题,欢迎随时提出。
关键词: 物理弹性滚动,JS动画,对联广告,CSS transition,requestAnimationFrame