美文网首页让前端飞vue3+typescript
vue3+typeScript 多选标签(每周一个小组件)

vue3+typeScript 多选标签(每周一个小组件)

作者: 谦卑沉程 | 来源:发表于2020-12-29 14:36 被阅读0次

    每周一个小组件

    前言

    实现功能:单击标签可选中或取消,标签可多选。
    每周分享一个vue3+typeScript的小组件,我只想分享下自己的实现思路,楼主是个菜鸡前端,记录下实现过程,说不定对你有帮助。

    效果展示

    预览地址
    github地址

    c2cxe-u62fb.gif

    开发过程

    其实,只要思路对了,实现这个标签多选功能非常简单,下面看代码结构

    html部分

       <div class="menu-box">
            <!-- 循环每个标签 -->
            <duv class="menu-item" v-for="(vo,inx) in items" @click="itemFn(inx)" :class="vo.isTrue?'acitve':''" :key="inx">
                {{vo.name}}
            </duv>
        </div>
    

    ts部分

    <script lang="ts">
    import {
        defineComponent,
        reactive,
        toRefs
    } from 'vue'
    export default defineComponent({
        setup() {
            const data = reactive({
                items: [{
                    name: '推荐',
                    isTrue: false
                }, {
                    name: '图片',
                    isTrue: false
                }, {
                    name: '视频',
                    isTrue: false
                }, {
                    name: '段子',
                    isTrue: false
                }, ],
                itemFn: (inx: number) => {
                    data.items[inx].isTrue = !data.items[inx].isTrue
                }
            })
            const data_ = toRefs(data)
            return {
                ...data_
            }
        }
    })
    </script>
    

    css部分

        .menu-box {
            width: 400px;
            height: 100px;
            background: #f5f5f5;
            display: flex;
            flex-wrap: wrap;
            justify-content: space-between;
            padding: 0 20px;
            padding-top: 20px;
    
            .menu-item {
                padding: 6px 15px;
                height: 40px;
                border: 1px solid #ddd;
                border-radius: 20px;
                cursor: pointer;
            }
    
            .acitve {
                border: 1px solid #409EFF;
                color: #409EFF;
            }
        }
    

    vue3持续更新中...

    相关文章

      网友评论

        本文标题:vue3+typeScript 多选标签(每周一个小组件)

        本文链接:https://www.haomeiwen.com/subject/rfwfoktx.html