
コンポーネントをorderで並び替え
Vue.jsのコンポーネントをCSSのorderで動的に並び替えたいことがあったのでサンプルコードを記述してみた。
まず、vue createでmy-orderを作成。
$ vue create my-order
App.vueにHTML, JavaScript, CSSを記載。
<template>
<div>
<p>select: {{ select }}</p>
<p>
appBlue: <input type="number" v-model="select.appBlue" value="1"><br>
appGreen: <input type="number" v-model="select.appGreen" value="2"><br>
appRed: <input type="number" v-model="select.appRed" value="3">
</p>
<div class="flex">
<app-blue v-if="select.appBlue" :style="{order: select.appBlue}" />
<app-green v-if="select.appGreen" :style="{order: select.appGreen}" />
<app-red v-if="select.appRed" :style="{order: select.appRed}" />
</div>
</div>
</template>
コンポーネントをcomponentsフォルダに入れて読み込む。
import Blue from "./components/Blue.vue";
import Green from "./components/Green.vue";
import Red from "./components/Red.vue";
export default {
data() {
return {
select: {
appBlue: 1,
appGreen: 2,
appRed: 3
}
};
},
components: {
appBlue: Blue,
appGreen: Green,
appRed: Red
}
};
p {
text-align: center;
}
input {
width: 50px;
}
.flex {
display: flex;
flex-flow: column;
}
Blue.vueはこのように。(他2つは色違い)
<template>
<div>appBlue</div>
</template>
<style scoped>
div {
width: 50%;
border: 1px solid blue;
background-color: lightblue;
padding: 10px;
margin: 10px auto;
text-align: center;
}
</style>
以上で完成。



