Vue.js做select下拉列表(ul-li标签仿select标签)

目标:用ul-li标签结合Vue.js知识做一个模仿select标签的下拉选项列表。
知识点:

  • 组件的写法及运用
  • 组件之间的数据传递(props的运用)
  • 组件之间的数据传递($emit的运用)
  • 动态数据的绑定(v-bind)
  • 自定义事件通信

    效果图:

1、未做任何操作前,下拉列表为隐藏状态
Vue.js做select下拉列表(ul-li标签仿select标签)_第1张图片
2、点击输入框显示下拉列表
Vue.js做select下拉列表(ul-li标签仿select标签)_第2张图片

3、 点击列表项,输入框值跟随改变
Vue.js做select下拉列表(ul-li标签仿select标签)_第3张图片

PS: 为了演示data1, data2两组数据的绑定,实例中创建了两个列表
Vue.js做select下拉列表(ul-li标签仿select标签)_第4张图片

html代码:


<html>

<head>
    <meta charset="UTF-8">
    <title>ul-li模仿select下拉菜单title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script src="https://unpkg.com/vue/dist/vue.js">script>
head>

<body>
    <div id="demo">
        <my-select btn-name='search' v-bind:list='data1' style='float: left;margin-right: 2rem;'>my-select>
        <my-select btn-name='搜索' v-bind:list='data2' style='float: left;'>my-select>
    div>
body>

html>

JavaScript代码

CSS样式

ul, li {
    margin: 0;
    padding: 0;
    list-style: none;
}
#selectWrap {
    width: 250px;
    padding: 2rem;
    background: #4682b4;
}
.searchBox input, .searchBox a {
    line-height: 1.5rem;
    height: 1.5rem;
    margin-bottom: 1rem;
    padding: 0 5px;
    vertical-align: middle;
    border: 1px solid #aaa;
    border-radius: 5px;
    outline: none;
}
.searchBox a {
    display: inline-block;
    text-decoration: none;
    background-color: #b1d85c;
}
.skill li {
    font-size: 18px;
    line-height: 2rem;
    height: 2rem;
    padding-left: 5px;
    cursor: pointer;
}
.skill li:hover {
    background-color: #008b45;
}

你可能感兴趣的:(vue-js,web前端)