Vue

by Clément Rigo

HTML

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
<div id="app">
  <h2>Items:</h2>
  <div class="columns is-multiline is-mobile is-vcentered">
    <div class="column is-3"
      v-for="item in _.range(1, 30)"
      :key="item"
     >
       <div class="item" v-text="item"></div>
     </div>
  </div>
  <div
    class="cart-sticky-bottom box"
    :class="{
      'is-open': isDropupOpen
    }"
  >
    <button class="button is-primary is-small"
      @click="toggle"
    >
      Open {{ isDropupOpen ? 'yes' : 'no' }}
    </button>
    <hr>
    <div class="column is-3"
      v-for="item in _.range(1, 15)"
      :key="item"
     >
       <div class="item" v-text="item"></div>
     </div>
  </div>
    
</div>

SCSS

body {
  background: #fff;
  padding: 20px;
  font-family: Helvetica;
}
.item {
  height: 100px;
  background-color: #d2d2d2;
}
.cart-sticky-bottom {
    border-radius: 4px 4px 0 0;
    position: fixed;
    left: 15%;
    right: 15%;
    transition: all .3s ease-out;
    top: calc(100vh - 54px);
    &.is-open {
        position: fixed;
        bottom: 0px;
        top: 30%;
    }
}

Vue

new Vue({
  el: "#app",
  data: {
    isDropupOpen: false,
  },
  methods: {
  	toggle() {
    	this.isDropupOpen = !this.isDropupOpen;
    }
  }
})