hover时,添加border对background-image的影响及解决


由于需求,要实现hover时添加边框,原代码如下

 1 .item {
 2   position: relative;
 3   display: flex;
 4   flex-direction: column;
 5   width: 30%;
 6   border-radius: 4px;
 7   padding: 30px 20px;
 8   cursor: pointer;
 9   font-size: 14px;
10   letter-spacing: 1px;
11   line-height: 18px;
12   border: 2px solid transparent;
13   &:hover {
14     border: 2px solid #3c6ef0;
15   }
16   &.actived {
17     border: 2px solid #3c6ef0;
18     &::after {
19       position: absolute;
20       right: 0px;
21       top: 0px;
22       content: '';
23       display: block;
24       width: 32px;
25       height: 32px;
26       background: url('~@/assets/select/xuanzhong.svg') no-repeat;
27       background-size: contain;
28     }
29   }
30 }
31 .main {
32   background-image: url('~@/assets/select_category/background-main.png');
33 }

但是图片因此向边框方向重复填充,首先想到的是取消他的填充效果

.background {
  background-repeat: no-repeat;
  -moz-background-size: 100% 100%;
  background-size: 100% 100%;
}

但是填充虽然取消,图片却会产生抖动,直接放弃了修改background本身,改为修改border成背景色

.item {
  border: 2px solid white;
}

最终没有深究background的定位,而是单纯的解决了问题。