<div id="app">
<h1>Heroes</h1>
<div class="sorting">
<label for="filtername">Find your hero:</label>
<input v-model="findName" id="filtername" type="text" />
</div>
<ul>
<li v-for="name in filteredNames">
{{ name }}
</li>
</ul>
</div>
body {
background: rgb(131,58,180);
background: linear-gradient(90deg, rgba(131,58,180,1) 0%, rgba(253,29,29,1) 50%, rgba(252,176,69,1) 100%);
display: flex;
justify-content: center;
align-items: center;
line-height: 1.4;
color: #2c0938;
font-family: 'Signika', sans-serif;
}
#app {
width: 270px;
background: white;
padding: 20px;
margin: 30px;
border-radius: 4px;
opacity: 0.95;
}
h1 {
text-align: center;
margin: 5px;
}
li {
list-style: none outside none;
}
.sorting {
display: flex;
border-bottom: 1px solid #ccc;
padding-bottom: 10px;
input {
width: 50%;
margin-left: 10px;
}
}
View Compiled
new Vue({
el: '#app',
data() {
return {
findName: '',
names: [
'Evan You',
'Angie Jones',
'John Lindquist',
'Mark Techson',
'Jason Lengstorf',
'Miriam Suzanne',
'Chris Coyier',
'Geoff Graham',
'Ben Hong',
'Lea Verou',
'Rachel Andrew',
'Vitaly Friedman',
'Shweta Saraf',
'Tara Manicsic',
'Jen Simmons',
'Robin Rendle',
'Nicole Sullivan'
]
}
},
computed: {
filteredNames() {
let filter = new RegExp(this.findName, 'i')
return this.names.filter(el => el.match(filter))
}
}
})
View Compiled
This Pen doesn't use any external CSS resources.