css3动画怎么触发子菜单隐藏和显示

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css3动画怎么触发子菜单隐藏和显示相关的知识,希望对你有一定的参考价值。

参考技术A itjob为您解答:
<style>
.it
list-style:none;


.it li
float:none;
width:50px;
height:30px;
position:relative;

margin-right:10px;


.it li ul
display:none;
position:absolute;
top:30px;
left:0px;



.it li a
display:block;
text-decoration:none;


@keyframes itjob
display:block;


.it li a:hover ul
animation:itjob 2s;


</style>

html:

<div class="div1">
<ul class="it">
<li><a href="#">远标培训1</a></li>
<li>
<a>

<ul>
<li><a href="#">远标培训2</a></li>

</ul>
</a>
</li>
<li><a href="#">远标培训3</a></li>
</ul>

</div>本回答被提问者采纳

VueJS - 触发子函数

【中文标题】VueJS - 触发子函数【英文标题】:VueJS - trigger child function 【发布时间】:2017-06-11 03:17:36 【问题描述】:

我是使用 vuejs (2.0) 的新手。我正在尝试降低此功能:

点击一个按钮 子组件中的触发函数 孩子数据中的增量数字

这是我目前拥有的

HTML:

<div id="root">
    <cart @addtocart="add()"></cart>
    <button @click="$emit('addtocart')">Add to Cart</button>
</div>

JS:

Vue.component('cart', 
  template: `<span> items </span>`,
  data() 
    return 
      items: 0
    
  ,
  methods: 
    add() 
      alert('add');
    
  
);


new Vue(
  el: '#root',
  components: ['cart'],
);

任何帮助将不胜感激。谢谢大家!

【问题讨论】:

【参考方案1】:

它非常适合在Parent Vue Component 上使用$children 访问method,它使事情变得非常简单:

<div id="main-component">

   <!-- BUTTON on Main Component that will trigger the method in Child Component -->
   <button @click="$children[0].coolMethod();">I will trigger the a method on Child Component</button>

   <!-- CHILD Component -->
   <some-component-that-has-cool-method></some-component-that-has-cool-method>
</div>

注意:$children[0],因为我们指的是method,即index 0

还有其他方法可以实现这一点,它们被描述为here。

以下是该讨论的摘录:

就像一个组件的 $parent 是一个子组件 另一个,有一个孩子($children?不太记得)的 子组件,但您可以在组件中添加一个 ref 来制作 也许更清楚一点。

祝你好运……

【讨论】:

$children[0] 指的是第一个子组件,而不是它的第一个方法,这使得这有点hacky和不可扩展。【参考方案2】:

您可以使用集中式集线器向其发出事件(如文档 https://vuejs.org/v2/guide/migration.html#dispatch-and-broadcast-replaced 中所建议的那样),然后在您的子组件中侦听这些事件并对这些事件做出反应。以下是您的代码的快速更新:

var eventHub = new Vue();

Vue.component('cart', 
  template: `<span> items </span>`,
  data() 
    return 
      items: 0
    
  ,
  created() 
    eventHub.$on('add-item', this.add)
  ,
  methods: 
    add() 
      alert('add');
      this.items++;
    
  
);


new Vue(
  el: '#root',
  components: ['cart'],
  methods: 
    addToCart() 
        eventHub.$emit('add-item')
    
  
);

我自己刚开始使用 vue,所以我可能错了,但据我所知,让子组件依赖于特定的父组件是一个坏主意,因为它会强制子组件“耦合”到该父组件才能运行并使其不便携。不过,从子组件备份发出事件很好,因为那只是让任何人在听的人都知道发生了什么事的组件。我想您可以使用this.$parent.$on('add-item', this.method) 直接访问父级及其发出的事件,但这对我来说看起来很骇人。也许如果您的根组件和子组件始终以这种方式紧密耦合,this.$parent 就可以了。上面的“实例化一个新的 vue 实例”示例可能只是另一种方法,无需将子组件绑定到父组件,因为 Vue 实例实现了事件系统(因此暴露了 $emit、$on 方法)

【讨论】:

非常感谢。我想我错过了“中心”文档。你知道必须实例化一个 vue 实例只是为了在组件之间进行通信的原因吗? 见我上面的编辑。我自己还在学习 vue,所以有人可以更好地解释这一点。 不错。这通常也称为eventBus 注意子组件卸载时也要删除事件监听beforeDestroy: function () eventHub.$off('add-item', this.add) ,

以上是关于css3动画怎么触发子菜单隐藏和显示的主要内容,如果未能解决你的问题,请参考以下文章

取消悬停时的 CSS3 动画

P23:React高级-CSS3实现react显示隐藏

CSS3和SVG实现的圆环菜单动画效果

怎么用js触发css3动画

css3图片文字实现动画效果

CSS3 动画(关键帧动画)