添加/刷新后,vue组件的高亮和淡入淡出效果

Posted

技术标签:

【中文标题】添加/刷新后,vue组件的高亮和淡入淡出效果【英文标题】:HIghlight and fade effect for vue component as soon as added/refreshed 【发布时间】:2018-10-10 06:59:48 【问题描述】:

如何在加载后立即在 vue 组件上实现高亮效果并在一段时间后淡出效果。也许 5 秒后。

当您发布问题或提交答案等时,可以在堆栈溢出中找到此行为。

我尝试了如下 vue sn-p 所示的哔声效果,它每 500 毫秒闪烁一次:

<template>
  <div>
    <div class="row" style="height:300px;" :class="'highlightBody': highlight, 'highlightBeep': highlight && beepLight" >
      <!-- <chart-panel></chart-panel> // Will use chart component--> 
    </div>
  </div>  
</template>

<script>

export default 
  name: 'hightlight-div',
  data () 
    return 
      highlight: true,
      beepLight: false,
    
  ,
  mounted () 
    this.$nextTick(() => 
      let ct = 0
      let interval = setInterval(() => 
        if (ct === 10) 
          clearInterval(interval)
          interval = null
          this.highlight = false
        
        this.beepLight = !this.beepLight
        ct++
      , 500)
    )
  
  

</script>

<style lang="scss" scoped>
.highlightBody 
  background: #fffbe9 !important;
  border: 1px solid #dcc76a;


.highlightBeep 
  background: #F5F5F5 !important;

</style>

但我想要类似于 stack-over flow 的效果(从深色背景淡入淡色)。

我必须在不使用 Jquery 的情况下实现此行为。 任何建议都将不胜感激。

【问题讨论】:

你试过什么?请用您的代码向我们展示一个基本的、最小的示例。见how to ask 和how to create a minimal, concrete and verifiable example (MCVE)。 @Terry 我已经更新了我的基本代码。请看一下。 【参考方案1】:

我可以用下面的 sn-p 解决渐隐效果和哔哔声效果:

<template>
  <div>
    <div class="row" :class="'highlightBody': !beepLight, 'highlightBeep': beepLight"  style="height:300px;" >
      Beep
    </div>
    <div class="row" style="height:300px;" :style="`background: #$highlightColor !important;`" >
      Fede Away
    </div>
  </div>
</template>

<script>

function colorShades (color, percent) 
  var num = parseInt(color, 16)
  var amt = Math.round(2.55 * percent)
  var R = (num >> 16) + amt
  var B = (num >> 8 & 0x00FF) + amt
  var G = (num & 0x0000FF) + amt

  return (0x1000000 + (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + (B < 255 ? B < 1 ? 0 : B : 255) * 0x100 + (G < 255 ? G < 1 ? 0 : G : 255)).toString(16).slice(1)


export default 
  name: 'hightlight-div',
  data () 
    return 
      beepLight: false,
      highlightColor: 'ffff94'
    
  ,
  mounted () 
    this.$nextTick(() => 
      let ct = 0
      let interval = setInterval(() => 
        this.highlightColor = colorShades('ffff94', ct * 4)
        this.beepLight = !this.beepLight
        ct++
        if (ct === 10) 
          clearInterval(interval)
          interval = null
          this.highlightColor = 'ffffff'
        
      , 500)
    )
  
  

</script>

<style lang="scss" scoped>
.highlightBody 
  background: #fffbe9 !important;
  border: 1px solid #dcc76a;


.highlightBeep 
  background: #fffbe9 !important;

</style>

您可以查看jsfiddle

【讨论】:

以上是关于添加/刷新后,vue组件的高亮和淡入淡出效果的主要内容,如果未能解决你的问题,请参考以下文章

javascript切换淡入淡出效果

重复淡入淡出效果不起作用

delphi 窗体的淡入淡出效果

同时为两个不同的元素淡入淡出过渡

HTML网页淡入淡出特效怎样实现

React-Native ListView加载图片淡入淡出效果的组件