javascript切换淡入淡出效果

Posted

技术标签:

【中文标题】javascript切换淡入淡出效果【英文标题】:javascirpt toggle fade effects 【发布时间】:2021-11-02 02:52:20 【问题描述】:

我有一个问题。

在Vue.js中,你可以通过组件轻松指定淡入/淡出效果。

new Vue(
  el: '#demo',
  data: 
    show: true
  
)
.fade-enter-active, .fade-leave-active 
  transition: opacity .5s;

.fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ 
  opacity: 0;
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
  <button v-on:click="show = !show">
    Toggle
  </button>
  <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
</div>

不知道如何不使用过渡组件直接实现。

我自己尝试了几次,但我遇到了困难,如果我搜索,只会出现 jQuery 示例。

我想知道怎么做!

【问题讨论】:

直接?你的意思是使用CSS?还是 javascript 之类的? @evolutionxbox 两个! 【参考方案1】:

Vue 中,没有 &lt;transition&gt; 元素,通过 :class 使用绑定

new Vue(
  el: '#demo',
  data: 
    show: true
  
)
.item 
  transition: opacity .5s;
  opacity: 0;


.is-active 
  opacity: 1;
<div id="demo">
  <button @click="show = !show">Toggle</button>
  <div class="item" :class="'is-active' : show">hello</div>
</div>
    
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

在 JavaScript 中,您可以使用 classList.toggle()

const toggleTarget = (evt) =>  
  const selector = evt.currentTarget.dataset.toggle;
  document.querySelectorAll(selector)
    .forEach(EL => EL.classList.toggle("u-transparent"));
;

document.querySelectorAll("[data-toggle]")
  .forEach(EL => EL.addEventListener("click", toggleTarget));
.item 
  transition: opacity .5s;


/* UTILITY CLASSES, ATOMS */

.u-transparent 
  opacity: 0;
<button data-toggle="#item_1">Toggle</button>
<div id="item_1" class="item">hello</div>

【讨论】:

谢谢! @NVRM 欢迎评论! 是否可以切换css显示属性? (显示:块;/显示:无;) @zero86 是的,但不是过渡 - 这将是即时的。试试看!

以上是关于javascript切换淡入淡出效果的主要内容,如果未能解决你的问题,请参考以下文章

我想知道程序切换时候的淡入淡出效果单纯靠C++能不能实现?如果不能需要怎样才能实现?

如果单击具有淡入淡出效果的其他链接,则切换类名并删除

jQuery效果:隐藏显示切换滑动淡入淡出动画

js原生 JavaScript轮播图渐变淡入淡出效果实现(附代码)

jquery总结06-动画事件03-淡入淡出效果

html想做个文字淡入淡出的效果