рдЕрд▓реНрдкрд╛рдЗрди.рдЬреЗрдПрд╕ - рдбреЗрдЯрд┐рдВрдЧ рдЬрд╛рд░реА рд░рдЦреЗрдВ

рдпрд╣ рд╣реЛрдирд╣рд╛рд░ рдЕрд▓реНрдкрд╛рдЗрди.рдЬреЗрдПрд╕ рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреВрд╕рд░рд╛ рд▓реЗрдЦ рд╣реИ ред
рдпрд╣рд╛рдВ рдкрд╣рд▓реЗ рдПрдХ рдХреЛ рдкрдврд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЕрд▓реНрдкрд╛рдЗрди.рдЬреЗрдПрд╕ - рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╣рд▓реНрдХрд╛ рдврд╛рдВрдЪрд╛


рд╣рдо рдЗрд╕ рдЕрджреНрднреБрдд рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдореБрджрд╛рдп рдХреЛ рдкрд░рд┐рдЪрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред
рдкреВрд░реНрдг рдкрд╛рда рдХреЛрдб рдпрд╣рд╛рдБ рд╣реИ ред


рдПрдХреНрд╕-рд╢реЛ рдФрд░ рдПрдХреНрд╕-рдХреНрд▓реЛрдХрд╛


<div x-data="{ show: false }">
  <button x-on:click="show= ! show" x-text="show ? '' : '' ">
  </button>
  <p x-show="show" x-cloak>!</p>
</div>

рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рдирдП рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗред рдПрдХреНрд╕-рд╢реЛ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрдХреНрд╕-рдЕрдЧрд░ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдорд╛рди, рднреНрд░рдорд┐рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдПрдХреНрд╕-рд╢реЛ рдкреГрд╖реНрда рдЯреНрд░реА рдХреЛ рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрддреНрд╡ рдХреА рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЖрдЗрдЯрдо рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рджрд┐рдЦрд╛рдпрд╛ рдирд╣реАрдВ рдЧрдпрд╛ред


рдПрдХреНрд╕-рдХреНрд▓реЛрдХ рдПрдХ рдирд┐рд░реНрджреЗрд╢ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рджреАрдХреНрд╖рд╛ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ? рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЬрдм рд╣рдо рдКрдкрд░ рдХреЛрдб рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкрд▓ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХреНрд╕-рд╢реЛ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдореЗрдВ рдЧрд▓рдд рдорд╛рди рдХреЗ рдмрд╛рд╡рдЬреВрдж "рд╣реИрд▓реЛ!" рдкрд╛рда рдХреЗ рд╕рд╛рде рдПрдХ рддрддреНрд╡ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХреНрд╕-рдХреНрд▓реЛрдХ рд╣рдорд╛рд░реА рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЖрддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдЙрд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╢реИрд▓реА рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:


[x-cloak] { 
  display: none;
}

рдЕрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рддрдХ рддрддреНрд╡ рдЫрд┐рдкрд╛ рд░рд╣реЗрдЧрд╛ред


рдХрд┐рд╕реА рддрддреНрд╡ рдХреА рдЕрдЪрд╛рдирдХ рдЙрдкрд╕реНрдерд┐рддрд┐ рдФрд░ рдЧрд╛рдпрдм рд╣реЛрдирд╛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрди рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЪреЗрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .transition рд╕рдВрд╢реЛрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред


рдПрдХреНрд╕-SHOW.TRANSITION


рд╣рдо рд╕рдВрд╢реЛрдзрдХ рдХреА рдорджрдж рд╕реЗ рдкрд┐рдЫрд▓реЗ рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░реЗрдВрдЧреЗ:


<div x-data="{ show: false }">
  <button x-on:click="show= ! show" x-text="show ? '': '' ">
  </button>
  <p x-show="show"> NO TRANSITION</p>
  <p x-show.transition="show">TRANSITION</p>
  <p x-show.transition.in.duration.1000ms="show">TRANSITION IN</p>
  <p x-show.transition.out.duration.1000ms="show">TRANSITION OUT</p>
  <p x-show.transition.scale.05.duration.1000ms="show">TRANSITION Scale</p>
  <p x-show.transition.opacity.in.duration.1000ms="show">TRANSITION Opacity</p>
  <p x-show.transition.in.duration.1000ms.out.duration.500ms="show">TRANSITION IN Duration</p>
</div>

1 .in.duration.1000ms


transition ( ) opacity scale ( scale: 0.95), cubic-bezier(0.4, 0.0, 0.2, 1), 150 75 . , .

:


  • .in ;
  • .out тАФ ;
  • .scale тАФ ;
  • .opacity тАФ ;
  • .duration .

x-if x-transition. x-show. . .


X-INIT


X-init тАФ , , . created Vue.js. x-data. :



<div
  x-data="{ posts: [] }"
  x-init="
    fetch('https://jsonplaceholder.typicode.com/albums/1/photos')
      .then((response) => {
        return response.json();
      })
      .then((data) => {
        posts = data
      });
    "
>
  <template x-for="post in posts" :key="post.id">
    <div class="post">
      <h1 x-text="post.title"></h1>
      <img :src="post.thumbnailUrl" :alt="post.title" />
    </div>
  </template>
  <hr/>
</div>

x-data posts, . x-init fetch json- . x-for ┬л┬╗ .


X-REF $REFS


рдпрд╣ рдирд┐рд░реНрджреЗрд╢ рдШрдЯрдХ рдХреЗ рдмрд╛рд╣рд░ рд╕рд╣рд┐рдд рдкреГрд╖реНрда рдХреЗ рдХрд┐рд╕реА рднреА рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рднреА рд▓рд┐рдВрдХ рд╡реИрд╢реНрд╡рд┐рдХ $ refs рдХреНрд╖реЗрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ:


<div x-data="{ }">
  <input type="text" x-ref="myInput"/>
  <button x-on:click="alert($refs.myInput.value)">Alert</button>
<hr />
</div>

рдПрдХреНрд╕-рд░реЗ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдореЗрдВ рджрд░реНрдЬ рдкрд╛рда = "myInput" рд╡рд┐рд╢реЗрд╖рддрд╛ $ refs.myInput.value рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧреА


рдпрд╣ рд╣рдорд╛рд░реЗ рдЖрдЬ рдХреЗ рдкрд╛рда рдХрд╛ рд╕рдорд╛рдкрди рдХрд░рддрд╛ рд╣реИред рдкрд╛рда рдХреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдБ рд╣реИрдВ ред
рд╕рднреА рд╕рдлрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рдФрд░ рдЬрд▓реНрдж рд╣реА рдЖрдкрдХреЛ рдорд┐рд▓рддреЗ рд╣реИрдВ!


All Articles