• Tab选项卡


    案例:Tab选项卡

    实现步骤:

    1. 实现静态UI效果

          用传统的方式实现标签结构和样式

    2. 基于数据重构UI效果

      将静态的结构和样式重构为基于Vue模板语法的形式

      处理事件绑定和js控制逻辑

    3. 声明式编程

      模板的结构和最终显示的效果基本一致

    1.html结构

    <div id="app">
            <div class="tab">
                <!--  tab栏  -->
                <ul>
                    <li class="active">orange</li>
                    <li class="">lemon</li>
                    <li class="">apple</li>
                </ul>
                  <!--  对应显示的图片 -->
                <div class="current"><img src="img/orange.png"></div>
                <div class=""><img src="img/lemon.png"></div>
                <div class=""><img src="img/apple.png"></div>
            </div>
        </div>

    2、 提供的数据

    list: [{
                            id: 1,
                            title: 'orange',
                            path: 'img/orange.png'
                        },
                        {
                            id: 2,
                            title: 'lemon',
                            path: 'img/lemon.png'
                        }, {
                            id: 3,
                            title: 'apple',
                            path: 'img/apple.png'
                        }
                    ]

    3、 把数据渲染到页面

    • 把tab栏 中的数替换到页面上

      • 把 data 中 title  利用 v-for 循环渲染到页面上

      • 把 data 中 path利用 v-for 循环渲染到页面上

    <div id="app">
            <div class="tab">
                <ul>
                    <!--  
                        1、绑定key的作用 提高Vue的性能 
                        2、 key 需要是唯一的标识 所以需要使用id, 也可以使用index ,
                            index 也是唯一的 
                        3、 item 是 数组中对应的每一项  
                        4、 index 是 每一项的 索引
                    -->
                    <li v-on:click='change(index)' :class='currentIndex==index?"active":""' :key='item.id'
                        v-for='(item,index) in list'>{{item.title}}
                    </li>
                </ul>
                <div :class='currentIndex==index?"current":""' :key='item.id' v-for='(item, index) in list'>
                    <img :src="item.path">
                </div>
            </div>
        </div>
       
        <script>
            var vm = new Vue({
                //  指定 操作元素 是 id 为app 的 
                el: '#app',
                data: {
                    currentIndex: 0, // 选项卡当前的索引
                    list: [{
                            id: 1,
                            title: 'orange',
                            path: 'img/orange.png'
                        },
                        {
                            id: 2,
                            title: 'lemon',
                            path: 'img/lemon.png'
                        }, {
                            id: 3,
                            title: 'apple',
                            path: 'img/apple.png'
                        }
                    ]
    
                }
             })
        </script>

    4.给每一个tab栏添加事件,并让选中的高亮

    • 4.1 、让默认的第一项tab栏高亮

      • tab栏高亮 通过添加类名active 来实现   (CSS  active 的样式已经提前写好)

        • 在data 中定义一个 默认的  索引 currentIndex  为  0

        • 给第一个li 添加 active 的类名 

          • 通过动态绑定class 来实现   第一个li 的索引为 0     和 currentIndex   的值刚好相等

          • currentIndex     ===  index  如果相等  则添加类名 active  否则 添加 空类名

    • 4.2 、让默认的第一项tab栏对应的div 显示

      • 实现思路 和 第一个 tab 实现思路一样  只不过 这里控制第一个div 显示的类名是 current

    <body>
        <script src="vue.js"></script>
        <div id="app">
            <div class="tab">
                <ul>
                    <!--  
                        1、绑定key的作用 提高Vue的性能 
                        2、 key 需要是唯一的标识 所以需要使用id, 也可以使用index ,
                            index 也是唯一的 
                        3、 item 是 数组中对应的每一项  
                        4、 index 是 每一项的 索引
                    -->
                    <li v-on:click='change(index)' :class='currentIndex==index?"active":""' :key='item.id'
                        v-for='(item,index) in list'>{{item.title}}
                    </li>
                </ul>
                <div :class='currentIndex==index?"current":""' :key='item.id' v-for='(item, index) in list'>
                    <img :src="item.path">
                </div>
            </div>
        </div>
       
        <script>
            var vm = new Vue({
                //  指定 操作元素 是 id 为app 的 
                el: '#app',
                data: {
                    currentIndex: 0, // 选项卡当前的索引
                    list: [{
                            id: 1,
                            title: 'orange',
                            path: 'img/orange.png'
                        },
                        {
                            id: 2,
                            title: 'lemon',
                            path: 'img/lemon.png'
                        }, {
                            id: 3,
                            title: 'apple',
                            path: 'img/apple.png'
                        }
                    ]
    
                },
                methods: {
                    change: function (index) {
                        // 在这里实现选项卡切换操作:本质就是操作类名
                        //如何操作类名?就是通过currentIndex
                        this.currentIndex = index;
                    }
                }
            })
        </script>
    </body>
  • 相关阅读:
    [好文翻译]保卫你的日历
    如何使用PowerShell修改Host文件
    如何使用PowerShell修改注册表
    MSDN文章纠错Automating Microsoft SharePoint 2010 with Windows PowerShell 2.0 (book excerpt)
    如何在PowerShell中得到一个对象的所有属性名和方法名呢?
    Service Object Model
    记录一个问题的解决方法
    STSADM Sync 命令里的 – Ignoreisactive 标志位
    Javascript实现图片位置控制(鼠标拖拽 + 键盘方向键移动)源码分享
    从零开始学习jQuery (六) AJAX快餐【转】
  • 原文地址:https://www.cnblogs.com/bky-/p/14060771.html
Copyright © 2020-2023  润新知