dede首页产品图滚动如何实现?

99ANYc3cd6
预计阅读时长 24 分钟
位置: 首页 DEDE建站 正文

准备工作:获取产品数据

确保你的首页模板(通常是 index.htm)中已经有了需要展示的产品列表,DedeCMS通常通过调用 arclist 标签来实现。

一个典型的产品列表调用代码如下:

<!-- 准备一个容器来放置所有产品 -->
<div id="product-scroll-container">
    <ul class="product-list">
        {dede:arclist row='8' titlelen='30' typeid='1' orderby='pubdate'}
        <li>
            <a href="[field:arcurl/]" title="[field:title/]">
                <img src="[field:litpic/]" alt="[field:title/]">
                <p>[field:title/]</p>
            </a>
        </li>
        {/dede:arclist}
    </ul>
</div>
  • row='8':表示调用8条产品。
  • typeid='1':表示调用ID为1的栏目下的产品,请根据你的实际情况修改。
  • [field:litpic/]:产品缩略图。
  • [field:title/]
  • [field:arcurl/]:产品链接。

使用jQuery实现无缝滚动(推荐)

这是最常用、效果最好的方法,可以实现平滑、无缝的滚动效果。

第1步:引入jQuery库

在你的首页模板 <head> 标签内,确保引入了jQuery库,如果你还没有,可以从CDN引入:

<head>
    <meta charset="utf-8">我的Dede网站</title>
    <!-- 引入jQuery库 -->
    <script src="https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js"></script>
    <!-- 后面会引入我们的CSS和JS -->
    <link rel="stylesheet" href="/static/css/product-scroll.css">
    <script src="/static/js/product-scroll.js"></script>
</head>

第2步:编写CSS样式

/static/css/product-scroll.css 文件中(路径可以自定义),添加以下样式:

/* 滚动容器 */
#product-scroll-container {
    width: 100%; /* 或者固定宽度,如 1200px */
    height: 200px; /* 固定高度 */
    overflow: hidden; /* 隐藏超出部分,这是实现滚动的关键 */
    position: relative;
    margin: 20px auto;
    border: 1px solid #eee;
}
/* 产品列表 */
.product-list {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex; /* 使用flex布局让产品项横向排列 */
    transition: transform 0.5s ease-in-out; /* 平滑过渡效果 */
}
/* 单个产品项 */
.product-list li {
    flex: 0 0 200px; /* 固定宽度,不允许伸缩 */
    height: 200px;
    margin-right: 10px; /* 产品之间的间距 */
    text-align: center;
}
.product-list li a {
    text-decoration: none;
    color: #333;
    display: block;
}
.product-list li img {
    max-width: 100%;
    max-height: 160px;
    object-fit: contain; /* 保证图片不变形 */
    margin-bottom: 5px;
}
.product-list li p {
    font-size: 14px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

第3步:编写jQuery脚本

/static/js/product-scroll.js 文件中(路径可以自定义),添加以下脚本:

$(document).ready(function() {
    // 获取产品列表和容器
    var $productList = $('.product-list');
    var $container = $('#product-scroll-container');
    // 克隆一份产品列表,用于无缝滚动
    var $cloneList = $productList.clone();
    // 将克隆的列表追加到原始列表后面
    $container.append($cloneList);
    // 设置初始位置
    var totalWidth = $productList.width();
    var animationSpeed = 50; // 滚动速度,值越小越快
    // 开始向左滚动
    function scrollLeft() {
        // 当滚动到第一份列表的末尾时,瞬间重置位置,形成无缝效果
        if ($productList.position().left <= -totalWidth) {
            $productList.css('transform', 'translateX(0)');
        }
        // 继续向左移动
        $productList.css('transform', 'translateX(' + ($productList.position().left - 1) + 'px)');
        $cloneList.css('transform', 'translateX(' + ($cloneList.position().left - 1) + 'px)');
    }
    // 使用定时器实现连续滚动
    var scrollInterval = setInterval(scrollLeft, animationSpeed);
    // 鼠标悬停时暂停滚动
    $container.hover(
        function() {
            clearInterval(scrollInterval);
        },
        function() {
            scrollInterval = setInterval(scrollLeft, animationSpeed);
        }
    );
});

说明:

  • 这个脚本会复制一份产品列表,当原始列表滚出视野时,复制的列表正好接上,然后瞬间将位置重置,从而实现“无缝”效果。
  • hover 事件让鼠标移到滚动区域上时暂停,移开时继续,提升了用户体验。

使用现成的DedeCMS标签(最简单)

如果你不想写代码,可以寻找一些现成的DedeCMS滚动标签插件,这些插件通常只需要你复制一段代码到模板中,并稍作配置即可。

搜索关键词: dedeCMS 滚动标签dedeCMS 产品轮播dedeCMS marquee标签

使用示例(以某个假想的滚动标签为例):

<!-- 假设你找到了一个名为 'dede:scrollpic' 的标签 -->
<div class="scroll-box">
    {dede:scrollpic row='8' titlelen='20' class='scroll-img' speed='100' isauto='1'}
        <a href="[field:arcurl/]" title="[field:title/]">
            <img src="[field:litpic/]" alt="[field:title/]" class="scroll-img">
            <span>[field:title/]</span>
        </a>
    {/dede:scrollpic}
</div>

优缺点:

  • 优点: 极其简单,零代码基础也能使用。
  • 缺点:
    • 灵活性差,样式和效果可能不符合你的网站设计。
    • 依赖第三方插件,可能存在安全风险或不兼容新版本DedeCMS的风险。
    • 停止维护的可能性较大。

不推荐使用 <marquee>:这是一个非常古老的HTML标签,虽然简单,但已废弃,样式丑陋,且在不同浏览器中表现不一致,强烈不建议使用


纯CSS实现横向滚动(现代方法)

如果你只需要一个简单的横向滚动条,而不需要自动滚动效果,可以使用纯CSS实现,性能更好。

HTML 结构(与准备工作中的一样)

<div class="css-scroll-wrapper">
    <div class="css-scroll-content">
        {dede:arclist row='8' titlelen='30' typeid='1' orderby='pubdate'}
        <div class="css-scroll-item">
            <a href="[field:arcurl/]" title="[field:title/]">
                <img src="[field:litpic/]" alt="[field:title/]">
                <p>[field:title/]</p>
            </a>
        </div>
        {/dede:arclist}
    </div>
</div>

CSS 样式

/* 外层容器,提供滚动轨道 */
.css-scroll-wrapper {
    width: 100%;
    overflow-x: auto; /* 关键:允许水平滚动 */
    white-space: nowrap; /* 关键:让子元素不换行 */
    /* 为了美化滚动条,可以添加以下样式 */
    scrollbar-width: thin; /* Firefox */
    scrollbar-color: #888 #f1f1f1; /* Firefox */
}
/* 隐藏默认的滚动条(可选) */
.css-scroll-wrapper::-webkit-scrollbar {
    display: none; /* Chrome, Safari, Edge */
}
*/
.css-scroll-content {
    display: inline-block; /* 关键:让宽度由内容撑开 */
}
/* 单个产品项 */
.css-scroll-item {
    display: inline-block; /* 关键:横向排列 */
    width: 200px;
    margin-right: 15px;
    text-align: center;
    /* ... 其他样式如方法一 ... */
}
.css-scroll-item img {
    max-width: 100%;
    height: auto;
}

优缺点:

  • 优点: 性能极佳,无需JavaScript,代码简洁。
  • 缺点: 无法实现自动滚动效果,需要用户手动拖动滚动条。

总结与建议

方法 优点 缺点 适用场景
jQuery无缝滚动 效果好,用户体验佳,功能强大 需要引入jQuery和写少量JS/CSS 强烈推荐,绝大多数网站的首选。
现成Dede标签 极其简单,零代码 灵活性差,有第三方依赖风险 快速搭建、对样式要求不高的临时或简单网站。
纯CSS横向滚动 性能最好,代码简单 无自动滚动,需用户手动拖动 产品数量较多,需要用户自行浏览的场景。

对于绝大多数DedeCMS用户来说,方法一(jQuery无缝滚动) 是最佳选择,它兼顾了效果、性能和用户体验,你可以直接套用我提供的代码,并根据你的网站样式进行微调。

-- 展开阅读全文 --
头像
为何织梦页面直接显示原代码?
« 上一篇 前天
dede导航如何调用子栏目?
下一篇 » 前天

相关文章

取消
微信二维码
支付宝二维码