jQuery实现轮播图(效果同 bilibili)

jQuery 实现轮播图

图片滚动(效果同 bilibili)

  • 使用左浮动将所有图片拼接成一横条

  • 通过整体滑动实现图片的切换效果

  • 使用 overflow: hidden 将非当前显示图片隐藏

  • 封装图片切换方法

                var leftX = 0;
                function changePic(el){
                    el.addClass("on");
                    el.siblings().removeClass("on");
                    leftX = (-el.index())*400;
                    $(".pic").animate({
                        left: leftX
                    }, 500);
                    $("#pic_title").text(imgTitleList[el.index()]);
                }
    
  • 自动循环播放图片

                var timer;
                function autoPlay(el){
                    timer = setInterval(function(){
                        if(el.index()>=4){
                            el = $(".trig>span").eq(0);
                        }else{
                            el = $(".trig>span").eq(el.index()+1);
                        }
                        changePic(el);
                    }, 3000);
                }
                autoPlay($(".trig>span").eq(0));
    
  • 添加鼠标点击切换事件

                $(".trig>span").click(function(){
                    changePic($(this));
                    clearInterval(timer);
                    autoPlay($(this));
                });
    

完整源码

1、html 部分
		<div class="course_panel">
            <ul class="pic">
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
                <li>
                    <a href="javascript:;">
                        <img src="" alt="">
                    </a>
                </li>
            </ul>
            <span id="pic_title">Web应用开发</span>
            <ul class="trig">
                <span class="on"></span>
                <span></span>
                <span></span>
                <span></span>
                <span></span>
            </ul>
        </div>
2、CSS 部分
.course_panel{
    position: relative;
    margin: 30px auto;
    width: 400px;
    height: 220px;
    overflow: hidden;
}
.pic{
    position: relative;
    width: 2000px;
    height: 220px;
}
.pic>li{
    list-style: none;
    width: 400px;
    height: 220px;
    float: left;
}
.pic>li>a>img{
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 5px;
}
#pic_title{
    position: absolute;
    width: 100%;
    height: 30px;
    bottom: 0;
    background: -webkit-linear-gradient(transparent,rgba(0,0,0,.3));
    color: #fff;
    cursor: pointer;
    text-indent: 1em;
}
.course_panel .trig{
    position: absolute;
    right: 15px;
    bottom: 4px;
    cursor: default;
}
.course_panel .trig span{
    display: inline-block;
    margin-left: 8px;
    cursor: pointer;
    width: 18px;
    height: 18px;
    background-image: url("../img/icons.png");
    background-position: -855px -790px;
    background-color: transparent;
    transition: none;
}
.course_panel .trig span:hover{
    background-position: -919px -790px;
}
.course_panel .trig span.on{
    background-position: -855px -727px;
    width: 18px;
    height: 18px;
}
3、Javascript 部分
       //    1、图片源
            var imgListUrl = ['1.png', '2.jpeg', '3.jpeg', '4.jpeg', '5.jpg'];
            var imgTitleList = ['Web程序设计', '移动开发', '大学物理', '计算机图形学', 'Python程序设计'];
            var imgList = $(".pic>li>a>img");
            for(let i = 0; i<5; i++){
                imgList.eq(i).attr("src","./img/"+imgListUrl[i]);
            }
            //  2、点击切换图片
            $(".trig>span").click(function(){
                changePic($(this));
                clearInterval(timer);
                autoPlay($(this));
            });
            var leftX = 0;
            function changePic(el){
                el.addClass("on");
                el.siblings().removeClass("on");
                leftX = (-el.index())*400;
                $(".pic").animate({
                    left: leftX
                }, 500);
                $("#pic_title").text(imgTitleList[el.index()]);
            }
        //    3、自动循环图片
            var timer;
            function autoPlay(el){
                timer = setInterval(function(){
                    if(el.index()>=4){
                        el = $(".trig>span").eq(0);
                    }else{
                        el = $(".trig>span").eq(el.index()+1);
                    }
                    changePic(el);
                }, 3000);
            }
            autoPlay($(".trig>span").eq(0));
非常好!**「基于Django的美食分享网站」** 是一个非常棒的毕业设计选题。它完美地规避了「推荐系统」的复杂算法风险,时又保留了有趣、贴近生活、易于展示的优点,完全符合你 **「简单开发、通过率高」** 的核心要求。 现在,我们来为这个选题进行详细的规划和设计。 ### 项目名称:《「食记」—— 基于Django的美食平台的设计与实现》 (给系统起一个好听的名字,能让你的项目更出彩) --- ### 一、系统核心功能模块 (清晰且实用) 设计题目: 《基于Django的美食平台的设计与实现》 内容: 1. 用户中心:注册/登录/注销、编辑个人资料;管理“我的菜谱”“我的收藏”“我的动态”;关注他人/查看粉丝,构建美食社交圈。 2. 菜谱核心:图文分步创作菜谱(含难度、食材等信息);按分类/难度/时间筛选菜谱;浏览详情页;推荐关注用户及常看类型的菜谱。 3. 美食动态(类似朋友圈):发布短文案+多图的美食日常(如成品图、食材采购、下厨瞬间);支持添加话题标签;动态流按关注用户/发布时间排序展示,可关联已发布菜谱。 4. 用户互动:对菜谱、动态点赞、收藏、楼中楼评论;通过发布内容(菜谱/动态)、获赞、连续登录解锁成就勋章。 5. 首页发现:推荐热门/最新菜谱及动态;展示后台精选内容轮播;点击话题标签聚合相关菜谱与动态。 6. 平台运营:审核管理菜谱、动态等内容,处理违规内容;可视化查看用户增长/内容发布量等运营数据;发起美食主题活动并置顶优质投稿 --- ### 二、技术栈选择 (成熟、简单、资料多) * **后端框架**:Python + Django (MTV模式) * **数据库**:SQLite (开发) / MySQL (生产) * **前端**:**Bootstrap 5** + 少量jQuery + Django模板语法 * **坚决不用Vue/React**:避免增加复杂度。Bootstrap能让你快速搭建出美观、响应式的页面,有大量免费模板可用。 * **关键第三方库**: * `django-ckeditor`:提供强大的富文本编辑器,让用户能图文混排菜谱步骤。 * `Pillow`:Django处理图片上传需要用的库。 * **部署**:PythonAnywhere 或 腾讯云/阿里云服务器 (Linux + Nginx + Gunicorn) --- ### 三、为什么这个题目「通过率超高」? 1. **业务价值正向**:分享美食、记录生活,主题积极,容易获得好感。 2. **功能完整清晰**:包含了用户系统、内容发布系统、互动系统、管理系统,模块完整,工作量饱满。 3. **技术完全匹配**:纯粹是Django的经典应用场景,CRUD操作,没有任何超纲技术。 4. **难点可控**:最大的“难点”可能是图片上传和富文本编辑,但都有非常成熟的第三方库一键解决。 5. **演示效果极佳**:有漂亮的图片和直观的交互(点赞、收藏),演示过程会非常流畅和有趣。 6. **文档好**:功能都是通用的,流程图、ER图、类图都非常容易绘制和描述。 ### 四、快速开发路线图 1. **第1步(环境搭建)**:安装Python、Django、PyCharm。 2. **第2步(创建项目与应用)**:`django-admin startproject foodie_site` -> `python manage.py startapp recipes` 3. **第3步(设计模型Models)**:这是核心。设计`User`(继承Django自带)、`Recipe`(菜谱)、`Category`(分类)、`Comment`(评论)、`Like`(点赞)、`Favorite`(收藏) 等模型。 4. **第4步(启用Admin后台)**:在`admin.py`中注册模型,创建超级用户。**到此,你已经可以用后台管理数据了!** 5. **第5步(编视图Views和模板Templates)**:逐个功能实现: * 先实现首页和菜谱列表、详情页。 * 再实现用户登录、注册。 * 然后实现发布菜谱功能。 * 最后实现点赞、收藏、评论等交互功能。 6. **第6步(美化前端)**:引入Bootstrap CSS框架,使用它的组件和样式快速美化页面。 7. **第7步(论文)**:开发过程中,步撰毕业论文,做什么什么。 **去哪里找参考?** * **B站**:搜索 **“Django 项目实战”**,有大量完整的系列视频教程,即使不是美食类,你也可以学会如何组织代码。 * **GitHub**:搜索 **“Django recipe”** 或 **“Django blog”**,参考别人的代码结构和实现逻辑。
最新发布
09-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值