JS伸缩广告源码详解
1. HTML结构
我们需要在HTML中创建一个广告容器,包含一个标题和一个内容区域。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF8"> <meta name="viewport" content="width=devicewidth, initialscale=1.0"> <title>JS伸缩广告</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="adcontainer"> <h3 class="adtitle">广告标题</h3> <div class="adcontent"> <p>广告内容</p> </div> </div> <script src="script.js"></script> </body> </html>
2. CSS样式
我们需要为广告容器添加一些基本样式,包括宽度、高度、背景颜色等。
/* style.css */ .adcontainer { width: 300px; backgroundcolor: #f5f5f5; padding: 10px; boxsizing: borderbox; } .adtitle { fontsize: 18px; fontweight: bold; marginbottom: 10px; } .adcontent { height: 0; overflow: hidden; transition: height 0.3s ease; }
3. JavaScript逻辑
我们需要编写JavaScript代码来实现广告的伸缩功能,当用户点击广告标题时,内容区域的高度会从0变为自动,实现伸缩效果。
// script.js document.addEventListener('DOMContentLoaded', function () { const adContainer = document.querySelector('.adcontainer'); const adTitle = adContainer.querySelector('.adtitle'); const adContent = adContainer.querySelector('.adcontent'); adTitle.addEventListener('click', function () { if (adContent.style.height) { adContent.style.height = null; } else { adContent.style.height = adContent.scrollHeight + 'px'; } }); });
相关问题与解答
Q1: 如果我希望广告在展开后自动关闭,如何修改代码?
A1: 你可以使用setTimeout
函数来实现这个功能,在广告展开后,设置一个定时器,在指定的时间后将广告内容区域的高度设置为0。
let timer; adTitle.addEventListener('click', function () { if (adContent.style.height) { adContent.style.height = null; clearTimeout(timer); } else { adContent.style.height = adContent.scrollHeight + 'px'; timer = setTimeout(function () { adContent.style.height = null; }, 3000); // 3秒后自动关闭广告 } });
Q2: 如果我希望在广告关闭时有一个渐变效果,如何修改代码?
A2: 你可以通过修改CSS样式来实现这个效果,为广告内容区域添加一个透明度变化的关键帧动画,并在JavaScript中控制动画的开始和结束。
@keyframes fadeOut { from { opacity: 1; } to { opacity: 0; } } .adcontent { animationduration: 0.3s; animationfillmode: forwards; }
adTitle.addEventListener('click', function () { if (adContent.style.height) { adContent.style.height = null; adContent.style.animationName = ''; } else { adContent.style.height = adContent.scrollHeight + 'px'; adContent.style.animationName = 'fadeOut'; setTimeout(function () { adContent.style.height = null; adContent.style.animationName = ''; }, 3000); } });
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1078545.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复