当前位置:   article > 正文

用vue实现多选框单选,全选和删除_vue3 input checkout实现多选

vue3 input checkout实现多选

原文链接:https://www.jianshu.com/p/0c00c2c47f41

原文链接:https://www.jianshu.com/p/0c00c2c47f41

原文链接:https://www.jianshu.com/p/0c00c2c47f41

包含功能:

  • 单选
  • 多选
  • 全选
  • 批量删除

实现原理:

  • fruits:决定显示元素的多少,所以,对元素增删改查都操作它
  • fruitIds: 通过对数组的增删改查,控制元素选中与否
  • isCheckedAll: 判断是否全选,如果全选,就把数组fruits中的id都添加给fruitIds

注意事项:

1、全选框中,:checked="fruits.length===fruitIds.length && fruitIds.length"的处理,是为了防止 数据和fruitIds都为空,却全选选中的情况
2、如果需要封装成组件,请把变量设置为属性props,把事件通过$.emit发射到父级
3、真正开发中,这里要用到vuex,axios处理真实数据

  1. <template>
  2. <div>
  3. <input type="checkbox"
  4. class="input-checkbox"
  5. :checked="fruits.length===fruitIds.length && fruitIds.length"
  6. @click="checkedAll" />
  7. <label>全选</label>
  8. <div v-for="fruite in fruits"
  9. :key="fruite.id"
  10. class="fruiteList">
  11. <input type="checkbox"
  12. :checked="fruitIds.indexOf(fruite.id)>=0"
  13. name="checkboxinput"
  14. class="input-checkbox"
  15. @click="checkedOne(fruite.id)">
  16. <label>{{fruite.value}}</label>
  17. </div>
  18. <button @click="deleteSome">Delete</button>
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. data () {
  24. return {
  25. fruits: [{
  26. id: '1',
  27. value: '苹果'
  28. }, {
  29. id: '2',
  30. value: '荔枝'
  31. }, {
  32. id: '3',
  33. value: '香蕉'
  34. }, {
  35. id: '4',
  36. value: '火龙果'
  37. }],
  38. fruitIds: ['1', '3', '4'],
  39. // 初始化全选按钮, 默认不选
  40. isCheckedAll: false
  41. }
  42. },
  43. methods: {
  44. checkedOne (fruitId) {
  45. let idIndex = this.fruitIds.indexOf(fruitId)
  46. if (idIndex >= 0) {//如果已经包含就去除
  47. this.fruitIds.splice(idIndex, 1)
  48. } else {//如果没有包含就添加
  49. this.fruitIds.push(fruitId)
  50. }
  51. },
  52. checkedAll (e) {
  53. this.isCheckedAll = e.target.checked;
  54. if (this.isCheckedAll) {//全选时
  55. this.fruitIds = []
  56. this.fruits.forEach(item => {
  57. this.fruitIds.push(item.id)
  58. })
  59. } else {
  60. this.fruitIds = []
  61. }
  62. },
  63. deleteSome () {
  64. this.fruits = this.fruits.filter(item => this.fruitIds.indexOf(item.id) === -1)
  65. this.fruitIds = []
  66. }
  67. }
  68. }
  69. </script>
  70. <style scoped lang="scss">
  71. .input-checkbox {
  72. width: 40px;
  73. height: 40px;
  74. -webkit-appearance: none;
  75. position: absolute;
  76. outline: none;
  77. border: none;
  78. &::after {
  79. left: 0;
  80. top: 0;
  81. content: url("../assets/images/round.svg");
  82. }
  83. &:checked:after {
  84. left: 0;
  85. top: 0;
  86. content: url("../assets/images/done.svg");
  87. }
  88. }
  89. label {
  90. padding-left: 50px;
  91. height: 40px;
  92. line-height: 45px;
  93. }
  94. </style>

关于伪类元素不能修改宽高的问题

原文链接:https://blog.csdn.net/qq_27064559/article/details/83620479
:before /:after伪元素默认是一个行内元素,所以这个元素设置width/height是无效的
就像你对a元素设置width/height一样

你可以把图片设为背景图片,通过bakckground-size来设置大小

  1. #center_box:before{
  2. content:’’;
  3. background-image:url(http://localhost/quding/photos/u14.png);
  4. background-size:1000px 200px;
  5. position: absolute;
  6. width:1000px;
  7. height:200px;
  8. z-index: 100;
  9. top: -110px;
  10. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/100918
推荐阅读
相关标签
  

闽ICP备14008679号