You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flex轮播中尺寸动态变化的div内background-image如何始终居中

解决方案

核心需要给带背景图的.column元素添加background-position属性,指定背景图始终基于容器中心定位即可实现需求,同时可以优化原有动画逻辑让过渡效果更统一。

具体修改点

  • 给.column类新增background-position: center center属性,确保背景图中心点始终和容器中心点对齐
  • 将过渡效果从JS事件中挪到CSS的.column类定义里,让所有宽度变化都有平滑过渡,避免只有悬停元素有动画的生硬效果
  • 可选优化:给列元素统一绑定事件,减少重复代码

修改后的完整代码

CSS 代码

.main-body{
  display: flex;
  height: 500px;
}

.column{
  cursor: pointer;
  background-image:url("https://www.basketblog.gr/articleimages/LebronJames_April20212112121212.jpg");
  background-size: cover;
  /* 新增背景居中属性 */
  background-position: center center;
  /* 统一设置过渡效果,仅针对flex属性变化生效,性能更优 */
  transition: flex 0.4s ease;
}

#one{
  flex: 1 0 25%;
}

#two{
  flex: 1 0 50%;
}

#three{
  flex: 1 0 25%;
}

JS 代码(优化版,可替换原有重复逻辑)

const columns = document.querySelectorAll('.column');
columns.forEach(currentCol => {
  currentCol.addEventListener('mouseover', () => {
    columns.forEach(col => col.style.flex = '1 0 25%');
    currentCol.style.flex = '1 0 50%';
  })
})

HTML 代码和原有逻辑一致,无需修改。

修改后无论列的宽度如何动态变化,背景图都会始终保持在容器中心位置,不会出现偏移。

内容的提问来源于stack exchange,提问作者Giannis Sioutis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:24:03