温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

vue如何实现单选和多选功能

发布时间:2021-04-23 14:23:41 来源:亿速云 阅读:433 作者:小新 栏目:web开发

这篇文章将为大家详细讲解有关vue如何实现单选和多选功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Vue的优点

Vue具体轻量级框架、简单易学、双向数据绑定、组件化、数据和结构的分离、虚拟DOM、运行速度快等优势,Vue中页面使用的是局部刷新,不用每次跳转页面都要请求所有数据和dom,可以大大提升访问速度和用户体验。

vue实现单选和多选功能的具体代码,具体内容如下复制代码

<!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8">  <meta>  <title>Document</title>  <script src="../vue.js"></script>  <style>   ul, li {    list-style-type: none;   }   * {    margin: 0;    padding: 0;   }   .border-1px {    position: relative;   }   .border-1px:after {    display: block;    position: absolute;    left: 0;    bottom: 0;    width: 100%;    border-top: 1px solid rgba(7, 17, 27, .1);    content: ' ';   }   @media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) {    .border-1px::after {     -webkit-transform: scaleY(0.7);     transform: scaleY(0.7);    }   }   @media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {    .border-1px ::after {     -webkit-transform: scaleY(0.5);     transform: scaleY(0.5);    }   }   #example {    margin: 20px;   }   h4 {    font-size: 26px;    margin-left: 20px;    height: 60px;   }   .self-radio {    display: none;   }   .self-radio + label {    -webkit-appearance: none;    background-color: #fff;    border: 1px solid #aaa;    border-radius: 50px;    display: inline-block;    position: relative;    width: 30px;    height: 30px;    box-sizing: border-box;   }   .self-radio:checked + label {    border: 1px #47d9bf solid;   }   .self-radio:checked + label:after {    position: absolute;    top: 9px;    left: 9px;    content: ' ';    width: 10px;    height: 10px;    border-radius: 50px;    background: #47d9bf;    box-shadow: 0px 0px 5px 0px #47d9bf;   }   .check-area {    display: inline-block;    width: 400px;    padding: 12px 20px;    border: 1px solid #aaa;    border-top-left-radius: 4px;    border-top-right-radius: 4px;   }   li {    height: 60px;   }   li .self-radio + label {    vertical-align: middle;   }   li span {    margin-left: 20px;    display: inline-block;    line-height: 60px;    font-size: 22px;   }   p {    height: 60px;    line-height: 60px;    margin-left: 20px;   }   p span {    color: #f00;   }   .btn {    margin: 20px auto;    width: 100%;    text-align: center;   }   .btn button {    width: 120px;    height: 40px;    line-height: 30px;    font-size: 16px;    color: #fff;    background: #47d9bf;    border: 1px #23d5b6 solid;    border-radius: 6px;    text-align: center;    outline: none;   }   .btn button:hover {    background: #23d5b6;   }  </style> </head> <body> <div id="example">  <h4>单选按钮</h4>  <div class="check-area" v-show="items.length!=0">   <ul>    <li class="border-1px" v-for="(item,index) in items">     <input class="self-radio" type="radio"       :id="'radio-'+item.id"       :data-id="'food-'+item.id" name="radio"       :checked="index==0"       :value="item.value"       v-model="checkValue">     <label :for="'radio-'+item.id" @click="setCheckValue(item)"></label>     <span>{{item.value}}</span>    </li>   </ul>   <p>您选择了:<span>{{checkValue}}</span></p>   <div class="btn">    <button @click="showCheck(checkId)">按钮</button>    <span>{{checkId}}</span>   </div>  </div> </div> <script>  var itemData = [{id: '20170811001', value: '香蕉'},   {id: '20170811002', value: '苹果'},   {    id: '20170811003',    value: '梨子'   }, {id: '20170811004', value: '葡萄'}]  //itemData = [];  var vm = new Vue({   el: '#example',   data: {    items: '',    checkValue: '',    checkId: ''   },   methods: {    init: function () {    },    initData: function () {     var self = this;     self.items = itemData;     if (itemData.length != 0) {      self.checkValue = self.items[0].value;      self.checkId = 'food-' + self.items[0].id     }    },    setCheckValue: function (item) {     this.checkId = 'food-' + item.id;    }    ,    showCheck: function () {     console.log(this.checkId)    }   },   mounted: function () {    this.initData();   }  }) </script> </body> </html>

vue如何实现单选和多选功能

vue实现多选功能

<!DOCTYPE html> <html lang="en"> <head>  <meta charset="UTF-8">  <meta>  <title>Document</title>  <script src="../vue.js"></script>  <style>  ul, li {   list-style-type: none;  }  * {   margin: 0;   padding: 0;  }  .border-1px {   position: relative;  }  .border-1px:after {   display: block;   position: absolute;   left: 0;   bottom: 0;   width: 100%;   border-top: 1px solid rgba(7, 17, 27, .1);   content: ' ';  }  @media (-webkit-min-device-pixel-ratio: 1.5),(min-device-pixel-ratio: 1.5) {   .border-1px::after {   -webkit-transform: scaleY(0.7);   transform: scaleY(0.7);   }  }  @media (-webkit-min-device-pixel-ratio: 2),(min-device-pixel-ratio: 2) {   .border-1px ::after {   -webkit-transform: scaleY(0.5);   transform: scaleY(0.5);   }  }  #example {   margin: 20px;  }  h4 {   font-size: 26px;   margin-left: 20px;   height: 60px;  }  .self-checkbox {   display: none;  }  .self-checkbox + label {   margin-top: 16px;   -webkit-appearance: none;   background-color: #fff;   border: 2px solid #aaa;   border-radius: 5px;   display: inline-block;   position: relative;   width: 30px;   height: 30px;   box-sizing: border-box;   vertical-align: top;  }  .self-checkbox:checked + label {   border: 2px #47d9bf solid;  }  .self-checkbox:checked + label:after {   display: inline-block;   text-align: center;   content: '√';   width: 100%;   height: 30px;   line-height: 26px;   color: #47d9bf;   font-size: 18px;   text-shadow: 0px 0px 5px #47d9bf;  }  .check-area {   display: inline-block;   width: 400px;   padding: 12px 20px;   border: 1px solid #aaa;   border-top-left-radius: 4px;   border-top-right-radius: 4px;  }  li {   height: 60px;  }  li .self-radio + label {   vertical-align: middle;  }  li span {   margin-left: 20px;   display: inline-block;   line-height: 60px;   font-size: 22px;  }  p {   height: 60px;   line-height: 60px;   margin-left: 20px;  }  p span {   color: #f00;  }  .btn {   margin: 20px auto;   width: 100%;   text-align: center;  }  .btn button {   width: 120px;   height: 40px;   line-height: 30px;   font-size: 16px;   color: #fff;   background: #47d9bf;   border: 1px #23d5b6 solid;   border-radius: 6px;   text-align: center;   outline: none;  }  .btn button:hover {   background: #23d5b6;  }  </style> </head> <body> <div id="example">  <h4>多选按钮</h4>  <div class="check-area" v-show="items.length!=0">  <ul>   <li class="border-1px" v-for="(item,index) in items">   <input class="self-checkbox" type="checkbox"    :id="'checkbox-'+item.id"    :data-id="'food-'+item.id" name="radio"    :value="item.value"    v-model="checkValues"    @click="setCheckValue($event,item)">   <label :for="'checkbox-'+item.id"></label>   <span>{{item.value}}</span>   </li>  </ul>  <p>您选择了:<span v-show="checkValues.length">{{filterCheckValues}}</span></p>  <div class="btn">   <button @click="showCheck(checkIds)">按钮</button>   <span v-show="checkIds.length">{{checkIds}}</span>  </div>  </div> </div> <script>  var itemData = [{id: '20170811001', value: '香蕉'},  {id: '20170811002', value: '苹果'},  {   id: '20170811003',   value: '梨子'  }, {id: '20170811004', value: '葡萄'}]  //itemData = [];  var vm = new Vue({  el: '#example',  data: {   items: '',   checkValues: [],   checkIds: []  },  computed: {   filterCheckValues: function () {   var value = this.checkValues;   var reValue = '';   for (var i = 0; i < value.length; i++) {    reValue += value[i] + '、'   }   reValue = reValue.substring(0, reValue.length - 1)   return reValue;   }  },  methods: {   initData: function () {   var self = this;   self.items = itemData;   if (itemData.length != 0) { //   self.checkValues[0] = self.items[0].value; //   self.checkIds[0] = 'food-' + self.items[0].id;   }   },   setCheckValue: function (ev, item) {   var id = 'food-' + item.id;   if (ev.target.checked) {    this.checkIds.push(id);   } else if (this.checkIds.indexOf(id) > -1) {    this.checkIds.remove(id);   }   }   ,   showCheck: function () {   console.log(this.checkIds)   }  },  filter: {},  mounted: function () {   this.initData();  }  })  Array.prototype.remove = function (val) {  var index = this.indexOf(val);  if (index > -1) {   this.splice(index, 1);  }  }; </script> </body> </html>

vue如何实现单选和多选功能

关于“vue如何实现单选和多选功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue
AI