loading

Vue Directives

Special HTML properties with the prefix v- that provide additional functionality to an HTML tag are called vue directives.

To construct dynamic and responsive user interfaces, Vue directives establish a connection with the Vue instance.

When it comes to developing responsive pages, Vue makes things considerably simpler and uses less code than standard JavaScript techniques.

Different Vue Directives

The following is a list of the many Vue directives that we utilize in this tutorial.

DirectiveDetails
v-bindConnects an attribute in an HTML tag to a data variable inside the Vue instance.
v-ifCreates HTML tags depending on a condition. Directives v-else-if and v-else are used together with the v-if directive.
v-showSpecifies if an HTML element should be visible or not depending on a condition.
v-forCreates a list of tags based on an array in the Vue instance using a for-loop.
v-onConnects an event on an HTML tag to a JavaScript expression or a Vue instance method. We can also define more specifically how our page should react to a certain event by using event-modifiers.
v-modelUsed in HTML forms with tags like <form><input> and <button>. Creates a two way binding between an input element and a Vue instance data property.

Example: The v-bind Directive

The browser searches the Vue instance for the class to attach the <div> element to.

				
					<!DOCTYPE html>
<html lang="en">
<head>
  <style>
    .pinkBG {
      background-color: lightpink;
    }
  </style>
</head>
<body>

  <div id="app">
    <div v-bind:class="vueClass"></div>
  </div>

  <script data-minify="1" src="https://codingask.com/wp-content/cache/min/1/vue@3/dist/vue.global.js?ver=1730183021" defer></script>
  <script>
    const app = Vue.createApp({
      data() {
        return {
          vueClass: "pinkBG"
        }
      }
    })
    app.mount('#app')
  </script>
<script>class RocketElementorAnimation{constructor(){this.deviceMode=document.createElement("span"),this.deviceMode.id="elementor-device-mode",this.deviceMode.setAttribute("class","elementor-screen-only"),document.body.appendChild(this.deviceMode)}_detectAnimations(){let t=getComputedStyle(this.deviceMode,":after").content.replace(/"/g,"");this.animationSettingKeys=this._listAnimationSettingsKeys(t),document.querySelectorAll(".elementor-invisible[data-settings]").forEach(t=>{const e=t.getBoundingClientRect();if(e.bottom>=0&&e.top<=window.innerHeight)try{this._animateElement(t)}catch(t){}})}_animateElement(t){const e=JSON.parse(t.dataset.settings),i=e._animation_delay||e.animation_delay||0,n=e[this.animationSettingKeys.find(t=>e[t])];if("none"===n)return void t.classList.remove("elementor-invisible");t.classList.remove(n),this.currentAnimation&&t.classList.remove(this.currentAnimation),this.currentAnimation=n;let s=setTimeout(()=>{t.classList.remove("elementor-invisible"),t.classList.add("animated",n),this._removeAnimationSettings(t,e)},i);window.addEventListener("rocket-startLoading",function(){clearTimeout(s)})}_listAnimationSettingsKeys(t="mobile"){const e=[""];switch(t){case"mobile":e.unshift("_mobile");case"tablet":e.unshift("_tablet");case"desktop":e.unshift("_desktop")}const i=[];return["animation","_animation"].forEach(t=>{e.forEach(e=>{i.push(t+e)})}),i}_removeAnimationSettings(t,e){this._listAnimationSettingsKeys().forEach(t=>delete e[t]),t.dataset.settings=JSON.stringify(e)}static run(){const t=new RocketElementorAnimation;requestAnimationFrame(t._detectAnimations.bind(t))}}document.addEventListener("DOMContentLoaded",RocketElementorAnimation.run);</script></body>
</html>
				
			

Note: With a little patience, the aforementioned example may be written much more simply without the Vue code. Later examples, when we create responsive pages, will demonstrate the true power of Vue.

Share this Doc

Vue Directives

Or copy link

Explore Topic