使用 Vue 及自定义组件完成 10x10 图片表格的点击效果

引入vue.js

<head>
        <meta charset="utf-8" />
        <title></title>
        <!-- 引入vue.js -->
        <script src="js/vue.js"></script>

html部分

<body>
        <!-- 定义一个id为app标签 -->
        <div id="app">
            <!-- 在id为app的标签中再定义一个class为content的标签 -->
            <div class="content">
                <!-- 用v-for将图片循环遍历显示 -->
                <test-div v-for="i in imgs" :im="i"></test-div>
            </div>
        </div>
        <!-- template 标签定义结构的模板,为其template模板定义属性,通过.item进行绑定-->
        <template id="temp">
            <!-- 对图片定义一个点击事件 -->
            <div class="item" @click="change">
                <!-- v-show为是否显示的判断 -->
                <img :src="im" v-show="show" />
            </div>
        </template>

注册一个全局组件

用methods方法实现图片点击效果

创建vue实例对象

<script>
            // 注册一个全局组件
            Vue.component("test-div", {
                template: '#temp',
                // props用来接受父组件定义的数据
                props: ["im"],
                data: function() {
                    return {
                        // show为true时,则显示。为false时隐藏
                        show: true,
                        img:"img/images/L_01.jpg"
                    }
                },
                methods: {
                    change: function() {
                        // 每一次调用把数据传过去进行取反,点击显示隐藏
                        this.show = !this.show
                    }
                }
            });
            // 创建一个实例对象
            var vm = new Vue({
                // 与id为app的元素进行绑定
                el: "#app",
                // 储存图片路径(以下imgs中的图片)
                data: {
                    imgs: ["img/images/L_01.jpg","img/images/L_02.gif","img/images/L_03.gif","img/images/L_04.gif","img/images/L_05.gif","img/images/L_06.gif","img/images/L_07.gif","img/images/L_08.gif","img/images/L_09.gif","img/images/L_10.gif","img/images/L_11.gif","img/images/L_12.gif","img/images/L_13.gif","img/images/L_14.gif","img/images/L_15.gif","img/images/L_16.gif","img/images/L_17.gif","img/images/L_18.gif","img/images/L_19.gif","img/images/L_20.gif","img/images/L_21.gif","img/images/L_22.gif","img/images/L_23.gif","img/images/L_24.gif",

定义style样式

<style type="text/css">
            .content {
                width: 850px;
                border: 1px solid mediumpurple;
                margin: 0 auto;
                /* 弹性布局 */
                display: flex;
                justify-content: space-around;
                /* flex进行换行,wrap为自动换行,nowrap不换行 */
                flex-wrap: wrap;
            }

            .item {
                width: 80px;
                height: 45px;
                margin: 2px 0px;
                background-color: mediumpurple;
            }

            img {
                width: 80px;
                height: 45px;
            }
        </style>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值