<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style type="text/css">
body {
font-size: 14px;
font-family: "Lantinghei SC Extralight", Arial;
}
ul {
padding: 0;
margin: 0;
list-style: none;
}
a {
text-decoration: none;
}
img {
vertical-align: top;
}
#wrap {
width: 760px;
height: 260px;
margin: 100px auto;
padding: 145px 120px 95px;
background: url(img/bg.jpg) no-repeat 0 0;
}
#section {
width: 760px;
height: 260px;
-moz-box-shadow: 0px 0px 4px rgba(0, 0, 0, .2);
box-shadow: 0px 0px 4px rgba(0, 0, 0, .2);
}
#choose {
width: 760px;
height: 50px;
margin: 0 auto;
background: url(img/nav_bg.png) no-repeat 0 0;
line-height: 50px;
text-indent: 21px;
}
#type {
width: 100%;
height: 210px;
background: url(img/type_bg.png) no-repeat 0 0;
padding: 17px 0 16px 28px;
}
#type li {
height: 44px;
color: #8a8a8a;
line-height: 44px;
}
#type a {
margin: 0 12px 0 11px;
color: #000;
}
#choose mark {
position: relative;
display: inline-block;
height: 24px;
line-height: 24px;
border: 1px solid #28a5c4;
color: #28a5c4;
margin: 12px 5px 0;
background: none;
padding: 0 30px 0 6px;
text-indent: 0;
}
#choose mark a {
position: absolute;
top: 3px;
right: 2px;
display: inline-block;
width: 18px;
height: 18px;
background: #28a5c4;
color: #fff;
line-height: 18px;
font-size: 16px;
text-align: center;
}
.active {
background: rgb(40, 165, 196);
}
</style>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script type="text/javascript">
let data = [{
title: '品牌',
index: -1,
list: ["蘋果", "小米", "錘子", "魅族", "華為", "三星", "OPPO", "vivo", "樂視", "360", "中興", "索尼"]
},
{
title: '尺寸',
list: ["3.0英寸以下", "3.0-3.9英寸", "4.0-4.5英寸", "4.6-4.9英寸", "5.0-5.5英寸", "6.0英寸以上"]
},
{
title: '系統',
list: ["安卓", "(", "Android", ")", "蘋果", "(", "IOS", ")", "微軟", "(", "WindowsPhone", ")", "無", "其他"]
},
{
title: '網絡',
list: ["聯通3G", "雙卡單4G", "雙卡雙4G", "聯通4G", "電信4G", "移動4G"]
}
]
</script>
</head>
<body>
<div id="wrap">
<section id="section">
<nav id="choose">
你的選擇:
<!-- <mark>錘子<a href="javascript:;">x</a></mark> -->
<mark v-for="item in choose">
{{item}}
<a href="javascript:;">x</a>
</mark>
</nav>
<ul id="type">
<li v-for="item,index in dataList">
{{item.title}}:
<a
href="javascript:;"
v-for="option,i in item.list"
v-bind:class="{active: item.index === i}"
@click="addChooseHandle(option,index,i)"
>{{option}}</a>
</li>
</ul>
</section>
</div>
<script type="text/javascript">
/*
{
0:'蘋果',
1:3.0
}
key值不重復
key值就是每一行的下標
思路:用對象來存每一行選中的標簽,把每一行下標作為key值
需要給數據的每一行添加一個屬性,屬性用來記錄選中的標簽
*/
//需要處理data
//item表示data里面的每一個對象
//item.index表示新添的屬性並且屬性的值為-1
data.forEach(item => item.index= -1)
console.log(data);
new Vue({
el:'#wrap',
data: {
dataList: data,
choose: {}
},
methods: {
addChooseHandle: function(option, index, i){
console.log(option,index)
//這樣給對象添加屬性並不會響應
//this.choose[index] = option;
//this.option 對象
//index key值
//option value值
this.$set(this.choose,index,option)
//找到操作的一行,把這一行的數據中的index,設置為點擊的標簽的下標
this.dataList[index].index = i;
}
}
})
</script>
</body>
</html>