前端盒子点击后增加边框页面样式会发生改变 如何解决

要在点击一个盒子时,使其增加2px的边框,而不导致页面布局改变,你可以使用CSS的box-sizing属性。通过将box-sizing设置为border-box,元素的边框宽度会包含在元素的总宽度和高度内,防止元素大小发生变化。下面是一个示例代码:

<template>
  <div class="container">
    <div v-for="(box, index) in boxes" :key="index"
         class="box" :style="{ backgroundColor: box.color }"
         @click="selectBox(index)">
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      boxes: [
        // 这里填入你的盒子数组
        // 示例: { color: '#ff0000' }, { color: '#00ff00' }, { color: '#0000ff' }
      ]
    };
  },
  methods: {
    selectBox(index) {
      this.boxes[index].selected = true;
    }
  }
};
</script>

<style scoped>
.container {
  display: flex;
  flex-wrap: wrap;
}

.box {
  width: calc(20% - 20px);
  height: calc(25% - 20px);
  margin: 10px;
  border: 2px solid transparent;
  box-sizing: border-box;
}

.box.selected {
  border-color: #ffcc00;
}
</style>

在上述代码中,我们给每个盒子(.box)添加了一个初始状态的边框样式,并将box-sizing属性设置为border-box

当点击盒子时,通过selectBox方法给对应的盒子添加一个.selected类名,这个类名的样式会使其边框颜色变为黄色(示例中是#ffcc00)。

由于使用了border-box,增加边框并不会导致元素的大小发生变化,因此页面布局不会改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值