Vue.jS的ul-li标签仿select标签

互联网 18-3-27
这次给大家带来Vue.jS的ul-li标签仿select标签,使用Vue.jS的ul-li标签仿select标签注意事项有哪些,下面就是实战案例,一起来看一下。

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

知识点:

组件的写法及运用

组件之间的数据传递(props的运用)

组件之间的数据传递($emit的运用)

动态数据的绑定(v-bind)

自定义事件通信

效果图:

1、未做任何操作前,下拉列表为隐藏状态

2、点击输入框显示下拉列表

3、 点击列表项,输入框值跟随改变

PS: 为了演示data1, data2两组数据的绑定,实例中创建了两个列表

html代码:

<!DOCTYPE html>  <html>  <head>   <meta charset="UTF-8">   <title>ul-li模仿select下拉菜单</title>   <link rel="stylesheet" type="text/css" href="style.css" rel="external nofollow" />   <script src="https://unpkg.com/vue/dist/vue.js"></script>  </head>  <body>   <p 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>   </p>  </body>  </html>

JavaScript代码

<script type="text/javascript">  //注册全局组件  //在my-select组件中套用ul-select组件,my-select为父组件ul-select为子组件  Vue.component('my-select', {   //组件中data要写成函数形式   data() {    return {     ulShow: false, //默认ul不显示,单击input改变ul的显示状态     selectVal: '' //选项值,input的值与选项值动态绑定    }   },   //父组件向子组件通信用props   props: ['btnName', 'list'],   template: `    <p id="selectWrap">     <p class="searchBox">      <input type="text" :value="selectVal" @click='ulShow = !ulShow'/>      <a href="#" rel="external nofollow" class="search" v-text='btnName'></a>     </p>      <my-ul v-show='ulShow' v-bind:list='list' v-on:receive='changeVal'></my-ul>     </p>   `,   methods: {    changeVal(value) {     this.selectVal = value    }   }  })  //子组件  Vue.component('my-ul', {   props: ['list'],   template: `    <ul class="skill">     <li v-for='item of list' v-on:click='selectLi(item)'>{{item}}</li>    </ul>   `,   methods: {    selectLi: function(item) {     //$emit触发当前实例上的自定义事件 receive     this.$emit('receive', item);    }   }  })  //创建Vue实例  new Vue({   el: '#demo',   //定义两组数据分别传递到两个组件的li中,两个列表的操作互不影响   data: {    data1: ['CSS', 'HTML', 'JavaScript'],    data2: ['Vue.js', 'Node.js', 'Sass'],   }  })  </script>

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;  }

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

使用javascript的模块加载器

v-for怎么加载本地静态图片

以上就是Vue.jS的ul-li标签仿select标签的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: select
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:iview的select下拉框选项错位怎么处理

相关资讯