实现效果:
HTML部分
<div class="collapse">
<ul>
<li>
<div class="header">
<h4>一致性 Consistency</h4>
<span class="iconfont icon-jiantou"></span>
</div>
<div class="footer">与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;<br>
在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。</div>
</li>
<li>
<div class="header">
<h4>反馈 Feedback</h4>
<span class="iconfont icon-jiantou "></span>
</div>
<div class="footer">控制反馈:通过界面样式和交互动效让用户可以清晰的感知自己的操作;<br>
页面反馈:操作后,通过页面元素的变化清晰地展现当前状态。</div>
</li>
<li>
<div class="header">
<h4>效率 Efficiency</h4>
<span class="iconfont icon-jiantou"></span>
</div>
<div class="footer">简化流程:设计简洁直观的操作流程;<br>
清晰明确:语言表达清晰且表意明确,让用户快速理解进而作出决策;<br>
帮助用户识别:界面简单直白,让用户快速识别而非回忆,减少用户记忆负担。</div>
</li>
<li>
<div class="header">
<h4>可控 Controllability</h4>
<span class="iconfont icon-jiantou"></span>
</div>
<div class="footer">用户决策:根据场景可给予用户操作建议或安全提示,但不能代替用户进行决策;<br>
结果可控:用户可以自由的进行操作,包括撤销、回退和终止当前操作等。</div>
</li>
</ul>
</div>
CSS部分
<style>
*{
margin: 0;
padding: 0;
box-sizing: border-box;
}
li{
list-style: none;
}
.collapse{
width: 900px;
border: 1px solid rgb(235, 235, 235);
margin: 50px auto;
padding: 25px;
}
.collapse ul{
border-top: 1px solid rgb(235, 235, 235);
}
.collapse ul li{
border-bottom: 1px solid rgb(235, 235, 235);
}
.collapse ul .header{
cursor: pointer;
position: relative;
/* background-color: pink; */
height: 40px;
line-height: 40px;
}
.collapse ul .header h4{
font-size: 18px;
font-weight: normal;
color: rgb(62, 63, 65);
}
.collapse ul li span{
position: absolute;
right: 0;
top: -1px;
transition: 0.8s ease;
}
.collapse ul li span.active{
transform: rotate(-90deg);
}
.collapse ul .footer{
overflow: hidden;
max-height: 0;
transition: max-height 0.8s ease;
color: rgb(62, 63, 65)
}
.collapse ul li .footer.active{
max-height: 500px;
}
</style>
JS部分
<script>
const headers=document.querySelectorAll('.header')
headers.forEach(function(item){
item.addEventListener('click',function(){
const icon=this.querySelector('.iconfont')
const footer=this.nextElementSibling
icon.classList.toggle('active');
footer.classList.toggle('active');
})
})
</script>