美文网首页前端知识
Vue 手写下拉列表

Vue 手写下拉列表

作者: yimi珊 | 来源:发表于2019-03-10 10:45 被阅读0次

原生的下拉列表要修改成所需的样式,往往都挺麻烦的...(此处省略200字)


效果图
选项太长,滚动

此处的三角形图标使用的是vant的字体图标,可自行修改...
css单位为自定义的rem(),可自行修改为px/em/rem...

<template>
    <div>
        <div @click="hideArr">
            <ul class="con_ul">
                <li v-for="(testArr,t) in testArrs" :key=t @click.stop="selLi=t">
                    <span>{{testArr.title}}</span>
                    <van-icon name="play" :class="[selLi==t?'play_ani':'']" />
                    <ul class="con_small" v-if="selLi==t">
                        <li v-for="(con,c) in testArr.cons" :key=c @click.stop="option(t,c)">
                            {{con}}
                        </li>
                    </ul>
                </li>
            </ul>
        </div>
    </div>
</template>

<script>
    export default {
        data() {
            return {
                selLi: -1,
                testArrs: [{
                    title: '人数',
                    cons: ['10人以下', '10~20人', '20~30人', '30~50人', '50人以上']
                }, {
                    title: '年龄',
                    cons: ['5岁以下', '5~10岁', '10~20岁', '20岁以上']
                }, {
                    title: '行业领域',
                    cons: ['金融', '地产', '工程', '建筑', '服装', '机械', '食品', '环保', '餐饮', '科研机构', '互联网', '其他']
                }],
            }
        },
        methods: {
            hideArr() {
                this.selLi = -1;
            },
            option(t, c) {
                this.selLi = -1;
                this.testArrs[t].title = this.testArrs[t].cons[c];
            },
        }
    }
</script>

<style scoped lang='scss'>
@import "../assets/css/reset.scss";
.con_ul {
    background: white;
    padding: rem(20);
    &>li {
        background: rgba(245, 245, 245, 1);
        border-radius: rem(3);
        line-height: rem(36);
        height: rem(36);
        position: relative;
        margin-bottom: rem(10);
        display: flex;
        justify-content: space-between;
        padding-left: rem(15);
    }
    span {
        color: #333333;
        font-size: rem(14);
    }
    .van-icon {
        transform: rotate(90deg);
        padding: rem(15);
        transform-origin: center center;
        color: #C2C2C2;
    }
    .play_ani {
        transform: rotate(-90deg);
        transform-origin: center center;
        margin-right: rem(7);
    }
    .con_small {
        background: white;
        position: absolute;
        right: 0;
        z-index: 9;
        padding: 0 rem(15);
        box-shadow: 0px 1px rem(8) 0px rgba(22, 42, 73, 0.12);
        border-radius: rem(3);
        margin-top: rem(36);
        max-height: rem(250);
        overflow: auto;
        li {
            width: rem(115);
            line-height: rem(43);
            text-align: right;
            background: white;
            border-bottom: 1px solid #EBEBEB;
        }
    }
}
</style>

相关文章

  • Vue 手写下拉列表

    原生的下拉列表要修改成所需的样式,往往都挺麻烦的...(此处省略200字) 此处的三角形图标使用的是vant的字体...

  • 【Vue表单】v-model绑定下拉列表

    vue要绑定下拉列表会稍微有点不同。因为下拉列表不是一个标签能搞掂的。 原生的html写法如下 通常下拉列表会用到...

  • 类似select下拉框,鼠标点击元素以外隐藏下拉框(阻止冒泡事件

    实现效果: 1.点击按钮展开下拉列表2.点击下拉列表中的选项进行选择3.点击除下拉列表外的body,收起下拉列表 ...

  • 解决blur与click冲突

    背景 在开发下拉选择(picker)组件中遇到,点击输入框出现下拉列表,再点击下拉列表选项后下拉列表自动收缩,然而...

  • combotree(树形下拉框)

    含义 树形下拉框结合选择控件和下拉树控件。它与combobox(下拉列表框)类似,但是将下拉列表框的列表替换成了树...

  • 浏览器控制台模拟选择下拉列表项

    浏览器控制台使用 jQuery 模拟点击选择下拉列表项 下拉列表选项联动到另一个下拉列表项

  • 01.22 下拉列表和多行文本域

    下拉列表(菜单) select标签 - 代表整个下拉列表 option标签 - 代表列表中的每个选项,select...

  • 认识HTML---------表单标签非input标签

    表单标签非input标签 1.select标签 作用:用于定义下拉列表 格式: 列表数据 案例一:下拉列表----...

  • easyui常用方法

    1、下拉框“商品列表”实现 2、下拉框“客户列表”实现 3、下拉框“系统用户”实现 4、下拉框“物流公司”实现

  • select

    Select -- 下拉列表 属性 size:规定下拉列表中可见选项的数目 option: disabled:规定...

网友评论

    本文标题:Vue 手写下拉列表

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