<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

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js