background-size的transition不生效的解决方案

本文解决了一个CSS技巧问题:为何在尝试使用transition使背景大小改变时,从cover到百分比值的过渡不起作用。通过理解CSS transition的工作原理及背景大小属性的特性,找到了有效的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

background-size的transition可能不生效的原因

今天在实现鼠标悬浮背景图渐渐扩大的效果时,遇到一个坎:

div{
    background-size:cover;
    transition:background-size .5s;
}
div:hover{
    background-size:120% auto;
}

以上是css样式,然而,当鼠标悬浮在div上时,背景图扩大了但是却没有过渡效果。由于background-size属性的值是连续型的,transition是支持的呀。百度一番之后,找到了答案:
https://stackoverflow.com/questions/31718598/transition-on-background-size-doesnt-work
因为background-size的值从cover变化到120% auto不能让transition判断出渐变过程(cover120% auto非同种值)。

解决方案

以一种与120% auto同等的方式来替换cover
我使用cover的目的是在数值方向上截取背景图片,因此可用100% auto来替换。

.menu-preview .el-scrollbar[data-v-58274818]{height:100%}.menu-preview .el-scrollbar[data-v-58274818] .scrollbar-wrapper{overflow-x:hidden}.menu-preview .el-menu-horizontal-demo .el-menu-item[data-v-58274818]{cursor:pointer;padding:0;margin:0;color:#fff;white-space:nowrap;display:flex;font-size:16px;border-color:#ffc800 #ffc800 #ffc800 #ffc800;line-height:56px;border-radius:0;background:none;width:120px;justify-content:center;border-width:0;position:relative;border-style:solid;list-style:none;text-align:center;height:56px}.menu-preview .el-menu-horizontal-demo .el-menu-item.is-active[data-v-58274818],.menu-preview .el-menu-horizontal-demo .el-menu-item[data-v-58274818]:hover{cursor:pointer;padding:0;margin:0;color:#fff;white-space:nowrap;font-size:14px;border-color:#ffa100 #ffa100 #ffa100 #ffa100;line-height:56px;border-radius:0;background:#0b4887;width:120px;border-width:0;position:relative;border-style:solid;list-style:none;height:56px}.banner-preview .el-carousel[data-v-58274818] .el-carousel__indicator button{width:0;height:0;display:none}.banner-preview .el-carousel[data-v-58274818] .el-carousel__container .el-carousel__arrow--left{width:36px;font-size:12px;height:36px}.banner-preview .el-carousel[data-v-58274818] .el-carousel__container .el-carousel__arrow--left:hover{background:#2087c3}.banner-preview .el-carousel[data-v-58274818] .el-carousel__container .el-carousel__arrow--right{width:36px;font-size:12px;height:36px}.banner-preview .el-carousel[data-v-58274818] .el-carousel__container .el-carousel__arrow--right:hover{background:#2087c3}.banner-preview .el-carousel[data-v-58274818] .el-carousel__indicators{padding:0;margin:0 0 12px 0;z-index:2;position:absolute;list-style:none}.banner-preview .el-carousel[data-v-58274818] .el-carousel__indicators li{border-radius:50%;padding:0;margin:0 4px;background:#fff;display:inline-block;width:12px;opacity:.4;transition:.3s;height:12px}.banner-preview .el-carousel[data-v-58274818] .el-carousel__indicators li:hover{borde
03-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值