菜鸟科技网

如何在dw中插入多张图片滚动的代码

DW中,用CSS设置容器为横向滚动条样式,将多张图片并排置于其中,通过调整布局参数实现

Dreamweaver(DW)中实现多张图片自动滚动展示的效果,通常有两种主流方案:纯CSS动画或结合少量JavaScript增强交互性,以下是详细的操作步骤、完整代码示例及注意事项,帮助你高效完成这一功能。

如何在dw中插入多张图片滚动的代码-图1
(图片来源网络,侵删)

准备工作

首先整理需要轮播的图片素材(建议统一尺寸以避免布局错乱),将它们上传至网站根目录的某个文件夹(如images/gallery/),打开DW新建HTML文件,切换到“代码”视图与“设计”视图同步编辑会更直观。


核心实现方法(以CSS关键帧动画为主)

HTML结构搭建

创建一个容器包裹所有图片,并为每张图片设置独立类名以便控制,推荐使用无序列表(<ul>)作为外层结构,因为其语义更符合“一组可滑动项”的场景,示例如下:

<!-轮播图容器 -->
<div class="slider-container">
    <ul class="slider">
        <li><img src="images/gallery/pic1.jpg" alt="图片1描述"></li>
        <li><img src="images/gallery/pic2.jpg" alt="图片2描述"></li>
        <li><img src="images/gallery/pic3.jpg" alt="图片3描述"></li>
        <!-可继续添加更多图片 -->
    </ul>
</div>

提示:alt属性必须填写,这是无障碍访问的基本要求;若图片较多,建议用预加载技术优化首屏速度。

CSS样式设计(关键!)

通过CSS实现水平排列、隐藏溢出部分,并利用@keyframes定义动画效果,以下是完整的样式代码及解析:

如何在dw中插入多张图片滚动的代码-图2
(图片来源网络,侵删)
/ 重置默认边距 /
body { margin: 0; padding: 0; }
/ 主容器:固定宽度/高度,超出部分隐藏 /
.slider-container {
    width: 800px;          / 根据需求调整宽度 /
    height: 450px;         / 高度=单张图片的高度 /
    margin: 50px auto;     / 居中显示 /
    overflow: hidden;      / 核心!隐藏非当前显示的图片区域 /
    position: relative;    / 为内部绝对定位做准备 /
}
/ 图片列表:横向排列,总宽度=单张宽度×数量 /
.slider {
    list-style: none;      / 去除列表符号 /
    width: calc(800px  3); / 假设有3张图,每张800px宽 → 总宽2400px /
    display: flex;         / 弹性盒子实现水平排列 /
    animation: scrollSlide 12s infinite linear; / 动画名称|时长|循环次数|速度曲线 /
}
/ 单个图片项:设置宽高与容器一致 /
.slider li {
    width: 800px;           / 与容器同宽 /
    height: 450px;          / 与容器同高 /
    flex-shrink: 0;        / 禁止压缩,确保每张图占满自己的区间 /
}
/ 定义关键帧动画:从0%到100%移动整个列表 /
@keyframes scrollSlide {
    0% { transform: translateX(0); }       / 初始位置:第一张图可见 /
    33.33% { transform: translateX(-800px); } / 向左移动一个图片宽度,显示第二张 /
    66.66% { transform: translateX(-1600px); }/ 再移动一次,显示第三张 /
    100% { transform: translateX(0); }      / 回到起点,形成无缝循环 /
}
/ 可选美化:给图片加边框或圆角 /
.slider img {
    border-radius: 8px;    / 轻微圆角提升美观度 /
    box-shadow: 0 4px 8px rgba(0,0,0,0.2); / 投影增加层次感 /
}

注:① calc()函数动态计算总宽度,避免手动算数错误;② 动画时长可根据图片数量调整——若有N张图,则每段停留时间为总时长/N(如3张图+12秒→每张4秒);③ linear表示匀速运动,若想缓入缓出可改为ease-in-out

兼容性优化(针对旧浏览器)

部分低版本IE不支持flexcalc(),可通过以下方式降级处理:

  • 替换display: flex;float: left;(需给.slider li添加float: left;);
  • 用具体数值替代calc()(例如直接写width: 2400px;当有3张800px宽的图片时);
  • 添加厂商前缀确保动画生效(如-webkit-animation-moz-animation等)。

进阶技巧:添加导航指示器(小圆点)

为了让用户知道当前播放进度,可以手动添加一组小圆点作为导航,修改后的HTML结构如下:

<div class="slider-container">
    <ul class="slider">...</ul>
    <!-新增导航条 -->
    <div class="indicators">
        <span class="dot active"></span> <!-对应第1张图 -->
        <span class="dot"></span>        <!-对应第2张图 -->
        <span class="dot"></span>        <!-对应第3张图 -->
    </div>
</div>

配套CSS:

如何在dw中插入多张图片滚动的代码-图3
(图片来源网络,侵删)
.indicators {
    position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); / 底部居中 /
    display: flex; gap: 10px; / 圆点间距 /
}
.dot {
    width: 12px; height: 12px; border-radius: 50%; background: #ccc; cursor: pointer;
    transition: background 0.3s; / 鼠标悬停变亮 /
}
.dot:hover { background: #999; }
.dot.active { background: #f00; } / 当前激活状态为红色 /

此时需要配合少量JavaScript实现点击切换功能(可选):

// 获取所有圆点和图片项
const dots = document.querySelectorAll('.dot');
const slides = document.querySelectorAll('.slider li');
let currentIndex = 0;
// 为每个圆点绑定点击事件
dots.forEach((dot, index) => {
    dot.addEventListener('click', () => {
        // 移除所有激活状态
        dots.forEach(d => d.classList.remove('active'));
        slides.forEach(s => s.classList.remove('active'));
        // 设置新的激活项
        dot.classList.add('active');
        slides[index].classList.add('active');
        currentIndex = index;
    });
});

说明:此JS仅用于交互反馈,实际动画仍由CSS驱动,性能损耗极小。


常见问题排查指南

如果发现图片无法正常滚动,按以下顺序检查:

  1. 容器是否设置了overflow: hidden; 这是隐藏多余图片的关键,漏掉会导致所有图片堆叠显示;
  2. 动画名称是否拼写正确? CSS中的animation属性引用的关键帧名称必须与@keyframes定义的名称完全一致(区分大小写);
  3. transform的值是否正确? 例如有3张图时,第二段应移动-800px(单张宽度),第三段-1600px,最后回到0
  4. 图片路径是否正确? 右键点击浏览器中的图片选择“检查元素”,确认src属性指向正确的本地或在线地址。

FAQs

Q1:如何让图片自动暂停鼠标悬停时的滚动?
A:在CSS的.slider规则中添加animation-play-state: paused;,并通过伪类:hover覆盖该属性,完整写法如下:

.slider {
    animation: scrollSlide 12s infinite linear;
    animation-play-state: running; / 默认运行 /
}
.slider:hover {
    animation-play-state: paused; / 鼠标悬停时暂停 /
}

这样当用户将鼠标移到轮播区域时,动画会暂时停止,移开后恢复播放。

Q2:为什么图片之间有空白间隙?
A:可能由两个原因导致:① 图片本身带有默认的外边距(浏览器对img标签有内置样式),解决方法是在CSS中添加img { margin: 0; display: block; };② li元素的flex-basis未正确设置(若使用flex布局),确保.slider liwidth明确指定为与容器相同的值(如width: 800px;)。

分享:
扫描分享到社交APP
上一篇
下一篇