原生JS实现上拉下拉列表
2019-08-14 10:12:57来源:博客园 阅读 ()
话不多说,代码上来,有些知识点直接就在注释里
HTML
<div class="list-down"> <button id="btn">选择项</button> <ul id="list-chooses" style="display: none;"> <li><a href="#">Python</a></li> <li><a href="#">JavaScript</a></li> <li><a href="#">Java</a></li> <li><a href="#">PHP</a></li> <li><a href="#">C++</a></li> <li><a href="#">C语言</a></li> <li><a href="#">Android</a></li> <li><a href="#">微信小程序</a></li> <li><a href="#">Node.js</a></li> <li><a href="#">Bootstrap</a></li> <li><a href="#">HTML && CSS</a></li> <li id="close"><a href="#">关闭</a></li> </ul> </div>
CSS
<style type="text/css"> * { margin: 0; padding: 0; font-size: 16px; /* 消除按钮点击之后默认出现的蓝色边框 */ outline: none; } ul { list-style: none; } .list-down { width: 150px; margin: 10px auto; text-align: center; } .list-down button { width: 150px; height: 40px; cursor: pointer; background-color: #ea6f5a; border: none; color: #ccc; } .list-down button:hover { color: #fff; font-size: 17px; font-style: 2000; } .list-down button:focus { border: none; } .list-down #list-chooses { border-top: 1px solid #ddd; } .list-down #list-chooses li { width: 150px; height: 0; line-height: 40px; background-color: #ea6f5a; } .list-down #list-chooses li a { color: #ccc; text-decoration: none; } .list-down #list-chooses li:hover a { color: #fff; font-size: 17px; font-style: 2000; } .list-down #list-chooses li#close { border-top: 1px solid #ddd; } </style>
JavaScript
<script type="text/javascript"> window.onload = () => { const listBtn = document.getElementById('btn') const lists = document.getElementById('list-chooses'); const listsLis = lists.querySelectorAll('li'); const listsCloseBtn = document.getElementById('close'); // 列表选项从上而下出现 let listDown = () => { let startHeight = 0; let stopHeight = 40; let timeId = setInterval(() => { startHeight++; // 注意:forEach() 方法在 IE8 以下不支持 listsLis.forEach((item) => { item.style.height = startHeight + 'px'; }); if (startHeight >= stopHeight) { clearInterval(timeId); } }, 10); lists.style.display = 'block'; }; // 列表选项从下而上消失 let listUp = () => { let startHeight = 40; let stopHeight = 0; let timeId = setInterval(() => { startHeight--; listsLis.forEach((item) => { item.style.height = startHeight + 'px'; }); if (startHeight <= stopHeight) { clearInterval(timeId); } }, 10); // 这里,如果不延时的话,会直接消失,而没有上拉的效果 setTimeout(() => { lists.style.display = 'none'; }, 350); }; // 如果列表选项为隐藏,点击则显示;如果列表选项为显示,点击则隐藏 listBtn.addEventListener('click', () => { if (lists.style.display == 'none') { listDown(); } else { listUp(); } }); listsCloseBtn.addEventListener('click', () => { listUp(); }); }; </script>
原文链接:https://www.cnblogs.com/duxiu-fang/p/11177971.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- js防止表单重复提交实现代码 2020-03-29
- 基于JQuery的多标签实现代码 2020-03-29
- js实现翻页后保持checkbox选中状态的实现方法 2020-03-25
- NiftyCube实现圆角边框的方法 2020-03-20
- JS实现标签页切换效果 2020-03-12
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash