核心提示:FLIP 动画实现多维网格的过渡Demo地址:https://jsfiddle.net/chrzmzxv/meta charset=UTF-8 /title/titlescript type=text...
FLIP 动画实现多维网格的过渡
Demo地址:https://jsfiddle.net/chrzmzxv/
<meta charset="UTF-8" />
<title></title>
<script type="text/javascript" src="vue.js"></script><script type="text/javascript" src="lodash.min.js"></script>
<style rel="stylesheet" type="text/css">
button{
width: 100px;
height: 30px;
border: 1px solid #666666;
border-radius: 5px;
background: rgba(195, 197, 221, 0.36);
margin: 10px;
}
button:active, button:hover {
box-shadow: 2px 3px 2px #999 inset;
border: 1.5px solid rgba(195, 197, 221, 0.57);
}
.container {
display: flex;
flex-wrap: wrap; /*flex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行*/
width: 238px;
}
.cell {
display: flex;
justify-content: space-around; /*在弹性盒对象的 <p> 元素中的各项周围留有空白,用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式*/
align-items: center;/*居中对齐弹性盒的各项 <p> 元*/
width: 25px;
height: 25px;
border: 1px solid #aaa;
margin-right: -1px;
margin-bottom: -1px;
}
.cell:nth-child(3n) {
margin-right: 0;
}
.cell:nth-child(27n) {
margin-bottom: 0;
}
.cells-move {
transition: transform 1s;
}</style>
<p id="demo"><button click="shuffle">Shuffle</button><transition-group class="container" name="cells" tag="p">
<p :key="cell.id" class="cell" v-for="cell in cells">{{ cell.number }}</p>
</transition-group></p>
<script type="text/javascript">
new Vue({
el : "#demo",
data: {
cells: Array.apply(null, {length : 81}).map(function(_, index) {
return {
id: index,
number : index % 9 + 1
}
})
},
methods : {
shuffle: function() {
this.cells = _.shuffle(this.cells);
}
}
})
</script>


