HTML布局
<div class="news-title"> <ul class="news-module" id="news-module"> <li>头条</li> <li class="active">行情</li> <li>政策</li> <li>股市</li> <li>热点</li> </ul> <!-- 滑动条 --> <div class="news-slider"></div> </div>
CSS
* { margin: 0; padding: 0; } li { list-style-type: none; } .news-title { position: relative; border-bottom: 0.2rem solid #e5e8f0; width: 100%; } .news-module { display: flex; } .news-module>li { width: 20%; text-align: center; font-size: 1.3rem; line-height: 3.5rem; color: #000; background-color: #FFFFFF; cursor: pointer; } .news-module .active { color: #259251; font-size: 1.35rem; } .news-slider { background-color: #38AD67; height: 0.35rem; width: 2.5rem; transition: 0.5s; position: absolute; bottom: -0.2rem; left: 0.5rem; border-radius: 0.3rem; }
js
document.querySelector(".news-module").addEventListener("click", function (e) { let active = document.querySelector(".news-module>li.active") active.classList.remove("active") e.target.classList.add("active") reckon({value:e.target}) }) function reckon({value = document.querySelector('.news-module>li.active')} = {}) { let th_width = value.clientWidth;// 获取带有active标识的li let th_left = value.offsetLeft// 获取带有active的li到右边偏移多少px let slider_width = document.querySelector(".news-slider").clientWidth;// 滑块宽度 let slider_left = th_left + (th_width / 2) - (slider_width / 2)// 设置滑块偏移默认地位 document.querySelector(".news-slider").style.left = `${slider_left}px`// 扭转滑块地位 } reckon()
成果