Vue简易案例二(指令)

前端写特效的时候必须要保证DOM是加载完毕的,之前我用组件生命周期的update写,多有不便, 现发现自定义指令比较好,指令里面也是有周期,能做到相对的分离,案例奉上

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta charset="utf-8">
    <script src="https://unpkg.com/vue/dist/vue.js"></script>
    <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
    <style type="text/css">
        *{padding: 0;margin:0;}
        ul,li{list-style: none}
        .sliderCon{
            width: 800px;
            height: 400px;
            margin: 50px auto;
            overflow: hidden;
            font-family: "微软雅黑";
            position: relative;
        }
        .sliderCon ul{
            position: absolute;
            left: 0;
            top: 0
        }
        .sliderCon ul li{
            width: 800px;
            height: 100%;
            line-height: 400px;
            text-align: center;
            font-size: 50px;
            color: #fff;
            float: left;
            /*font-weight: 700*/

        }
        .sliderCon ul li:nth-child(odd){
            background: green
        }
        .sliderCon ul li:nth-child(even){
            background: pink
        }
    </style>
</head>
<body>
    <div id="app">
        <div v-slider=lists class="sliderCon">
            <ul>
                <li v-for="(item,index) in lists">{{item.name}}</li>
            </ul>
        </div>
    </div>
</body>
</html>
<script type="text/javascript">
    var vm=new Vue({
        el:"#app",
        data:{
            lists:[
                {name:"第一条"},
                {name:"第二条"},
                {name:"第三条"},
                {name:"第四条"},
            ]
        },
        directives:{
            slider:{
                bind:function(el,obj){
                },
                update:function(el){
                    console.log("更新");

                },
                componentUpdate:function(){
                    console.log("组件更新");
                },
                inserted:function(el,obj){
                    // obj.value[0].name="4555656";
                    var ul=$(el).find("ul");
                    var li=ul.find("li");
                    ul.css("width",li.length*$(el).width());
                    var index=0;
                    setInterval(function(){
                        index>=li.length-1?index=0:index++;
                        ul.animate({"left":"-"+index*li.width()+"px"},300)
                    },1000)

                }
            }
        }
    })

</script>
复制代码
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 自定义指令是一种可以扩展 Vue.js 框架的功能的方式。它允许你在 DOM 元素上添加自定义行为。在 Vue 中,你可以使用 `Vue.directive` 方法来创建一个自定义指令。 以下是一个简单的示例,展示如何创建一个名为 `my-directive` 的自定义指令: ```javascript // 在 Vue 实例中注册自定义指令 Vue.directive('my-directive', { bind: function (el, binding, vnode) { // 在绑定元素被插入父节点时调用 // 进行一些初始化的工作 }, inserted: function (el, binding, vnode) { // 绑定元素插入父节点时调用 // 可以在这里操作 DOM }, update: function (el, binding, vnode) { // 组件更新时调用,可能会触发多次 // 可以根据需要进行相应的更新操作 }, unbind: function (el, binding, vnode) { // 指令与元素解绑时调用 // 进行一些清理工作 } }); ``` 在上述示例中,我们定义了 `bind`、`inserted`、`update` 和 `unbind` 四个钩子函数。这些钩子函数分别在不同的生命周期阶段被调用,你可以根据需要在这些函数中执行相应的操作。 要在模板中使用该自定义指令,可以通过 `v-my-directive` 的方式将指令绑定到元素上,如: ```html <div v-my-directive></div> ``` 你还可以通过指令的参数和修饰符来传递额外的信息给指令,这些信息可以在指令的钩子函数中使用。例如: ```html <div v-my-directive:arg.modifier></div> ``` 在自定义指令的钩子函数中,你可以通过 `binding` 参数获取传递给指令的参数和修饰符的值。 希望这个简单的示例能帮助你了解如何在 Vue 中创建自定义指令。如果你有进一步的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值