效果展示

完整代码如下
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>折叠面板</title>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
</head>
<body>
<div id="app">
<div class="co-accordion" v-for="(item,index) in content" :key="item.id">
<div role="button" class="co-accordion-title" @click="change(index)">
<label :class="{rotate:isrotate == index}">></label>
<p>{{item.title}}</p>
</div>
<div class="co-accordion-message" :class="{block:isrotate == index}">
<p>{{item.message}}</p>
</div>
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
content :[
{title:'example实例1',message:'与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。'},
{title:'example实例2',message:'与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。'},
{title:'example实例3',message:'与现实生活一致:与现实生活的流程、逻辑保持一致,遵循用户习惯的语言和概念;在界面中一致:所有的元素和结构需保持一致,比如:设计样式、图标和文本、元素的位置等。'}
],
isrotate:-1
}
},
methods:{
change(index) {
this.isrotate=index;
}
}
})
</script>
<style>
#app {
width:500px;
height:500px;
border:1px solid #ccc;
border-radius:3px;
box-shadow:#ccc 0px 0px 4px;
font-size:13px;
color:#303131;
line-height:20px;
padding:10px;
}
.co-accordion {
border-bottom:.5px solid #ccc;
cursor: pointer;
}
.co-accordion-title p,.co-accordion-title label {
display:inline-block;
}
label {
float:right;
line-height:46px;
transform:rotate(0deg);
}
.rotate {
transform:rotate(90deg);
}
.co-accordion-message {
display:none;
}
.block {
display:block;
}
</style>
</body>
</html>