当前位置:首页 > 行业动态 > 正文

html图片扇形滚动

HTML图片扇形滚动需结合CSS定位与JS控制,通过绝对定位设置图片角度,配合transform旋转及

实现原理

通过CSS圆形布局与JavaScript控制图片位置,模拟扇形展开效果,结合定时器或事件触发实现滚动切换。

html图片扇形滚动  第1张


结构设计

<div class="fan-container">
  <div class="fan-item" style="transform: rotate(0deg) translate(150px) rotate(0deg)">
    <img src="image1.jpg" alt="">
  </div>
  <div class="fan-item" style="transform: rotate(60deg) translate(150px) rotate(-60deg)">
    <img src="image2.jpg" alt="">
  </div>
  <!-其他图片项 -->
</div>
<button class="prev">上一张</button>
<button class="next">下一张</button>

样式定义

属性 说明
position: relative 容器相对定位
width/height: 300px 定义圆形直径
transform-origin: center 设置旋转中心点
transition: transform 0.5s 添加平滑过渡
border-radius: 50% 圆形布局基础

核心代码

.fan-container {
  position: relative;
  width: 300px;
  height: 300px;
  transform-origin: center;
}
.fan-item {
  position: absolute;
  width: 100px;
  height: 150px;
  left: 50%;
  top: 50%;
  transform-origin: bottom;
  transition: transform 0.5s;
}
let current = 0;
const items = document.querySelectorAll('.fan-item');
document.querySelector('.next').addEventListener('click', () => {
  current = (current + 1) % items.length;
  updatePosition();
});
document.querySelector('.prev').addEventListener('click', () => {
  current = (current 1 + items.length) % items.length;
  updatePosition();
});
function updatePosition() {
  items.forEach((item, index) => {
    const angle = 360 / items.length  (index current);
    item.style.transform = `rotate(${angle}deg) translate(150px) rotate(-${angle}deg)`;
  });
}
updatePosition(); // 初始化位置

响应式适配

屏幕宽度 调整方案
>768px 保持300px直径,正常布局
≤768px 缩小至200px,调整translate值
移动端 增加触屏滑动事件支持

相关问题与解答

Q1:如何修改扇形层数为5层?
A1:调整360 / items.length360 / (items.length 2),并修改translate距离为半径 Math.sin(角度)动态计算。

Q2:图片变形怎么办?
A2:在.fan-item中添加padding-top: 150%(宽高比)和overflow: hidden,配合`img{width:1

0