JavaScript & CSS实现div选中效果

效果如下:

<div id="options">
  <div class="title">
    <el-checkbox :indeterminate="isIndeterminate" v-model="isCheckAll" @change="checkAll">
      全选
    </el-checkbox>
  </div>
  <div class="buttons" v-for="(item, index) in allOptions" :id="item" :key="index" @click="checkSingle">
    {{item}}
    <div class="select-border" v-show="checkedOptions.indexOf(item) != -1">
      <span class="select-border-text">✓</span>
    </div>
  </div>
</div>    
checkAll (isAll) {
  this.isCheckAll = isAll
  this.isIndeterminate = false
  let buttons = document.getElementById('options').children
  for (let i = 1; i < buttons.length; i++) {
    let displayStatus = buttons[i].children[0].style.display
    if (isAll) {
      // 选中所有
      if (displayStatus == "block") {
        continue
      } else {
        buttons[i].children[0].style.display = 'block'
      }
    } else {
      // 全部不选
      if (displayStatus == "none") {
        continue
      } else {
        buttons[i].children[0].style.display = 'none'
      }
    }
  }

  if (isAll) {
    this.selectLayers = this.filterLayers
  } else {
    this.selectLayers = []
  }
},
// 选中单个选项
checkSingle (event) {
  let target = event.currentTarget
  let id = target.id
  // 获取当前div元素的选中状态
  let element = target.children[0]
  let showStatus = element.style.display
  // 控制图层的显隐
  if (showStatus == "none") {
    element.style.display = 'block'
    this.checkedOptions.push(id)
  } else {
    element.style.display = 'none'
    this.checkedOptions = this.checkedOptions.filter(ele => ele != id)
  }

  // 判断是否全选或者全不选
  let children = target.parentElement.children
  let blockCount = 0, noneCount = 0;
  let tempSelectLayer = []
  debugger
  for (let i = 1; i < children.length; i++) {
    let displayStatus = children[i].children[0].style.display
    if (displayStatus == "none") {
      noneCount++
    } else {
      blockCount++
    }
  }
  // 更新“全选”checkbox的状态
  if (blockCount > 0 && noneCount > 0) {
    // 部分选中,部分不选
    this.isCheckAll = false
    this.isIndeterminate = true
  } else if (blockCount > 0 && noneCount == 0) {
    // 全部选中
    this.isCheckAll = true
    this.isIndeterminate = false
  } else if (blockCount == 0 && noneCount > 0) {
    // 全部不选
    this.isCheckAll = false
    this.isIndeterminate = false
  } else {
    return
  }
}

完整代码 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
实现HTML轮播效果圆点,可以使用CSS样式设置圆点的样式,并使用JavaScript控制圆点的选中状态。 首先,在HTML中创建轮播图和圆点: ```html <div class="slider"> <div class="slide"></div> <div class="slide"></div> <div class="slide"></div> </div> <div class="dots"> <span class="dot"></span> <span class="dot"></span> <span class="dot"></span> </div> ``` 然后,在CSS中设置圆点的样式: ```css .dot { display: inline-block; width: 10px; height: 10px; margin: 0 5px; border-radius: 50%; background-color: gray; } .dot.active { background-color: black; } ``` 最后,在JavaScript实现轮播图圆点的选中效果(排他思想): ```javascript var dots = document.querySelectorAll('.dot'); var slides = document.querySelectorAll('.slide'); var currentSlide = 0; function showSlide(n) { slides[currentSlide].classList.remove('active'); dots[currentSlide].classList.remove('active'); slides[n].classList.add('active'); dots[n].classList.add('active'); currentSlide = n; } for (var i = 0; i < dots.length; i++) { dots[i].addEventListener('click', function() { var n = Array.prototype.indexOf.call(dots, this); showSlide(n); }); } setInterval(function() { var n = currentSlide + 1; if (n >= slides.length) { n = 0; } showSlide(n); }, 5000); ``` 这段代码中,我们首先获取了所有的圆点和轮播图,然后定义了一个`showSlide`函数,用于显示指定的轮播图和圆点。在点击圆点时,我们使用了`Array.prototype.indexOf.call`方法获取了当前点击的圆点在数组中的下标,然后调用`showSlide`函数显示对应的轮播图和圆点。最后,我们使用`setInterval`方法定时切换轮播图,并在切换时调用`showSlide`函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值