【3D卡片切换】基于jquery实现3D堆叠卡片切换效果(附完整源码)

news2024/12/25 13:07:41

文章目录

  • 写在前面
  • 涉及知识点
  • 实现效果
  • 1、搭建页面
    • 1.1 创建ul li节点
    • 1.2 丰富元素
      • Html代码所示
      • CSS代码所示
  • 2、JS实现堆叠切换
  • 3、源码分享
    • 3.1 百度网盘
    • 3.2 123云盘
    • 3.3 邮箱留言
  • 总结


写在前面

其实3D卡片堆叠切换效果,从我入前端坑以来就一直喜欢的一种轮播效果,以前也有相关整理的,总是有其他琐事给耽搁了,这不趁着周四给大家整理一下基于jquery如何实现3D卡片切换效果的。这篇文章主要讲的是实现的过程,希望能够给你们带来启发。

涉及知识点

Jquery如何实现卡片堆叠轮播切换,如何实现3D图文卡片堆叠轮播效果,js实现3D卡片堆叠切换效果,3D卡片堆叠轮播demo。
版权声明:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。

实现效果

这个主要为了给大家一个最终实现效果的反馈,文尾附完整代码包的分享链接。
在这里插入图片描述

1、搭建页面

1.1 创建ul li节点

首先我先创建一个节点,我采用的是浮动布局的方式,主要通过设置样式和html,其中效果如下所示:
在这里插入图片描述

1.2 丰富元素

从A步骤我们就已经创建好了一个容器,接下来就是在里面放东西,首先我想到的是标题部分、图片部分、个人基本信息及简介部分。

Html代码所示

<div class="lb_gl">
        <div class="container">
            <h1 class="turn_3d">原创于CSDN博主-《拄杖盲学轻声码》</h1>
            <div class="pictureSlider poster-main">
                <!-- <div class="poster-btn poster-prev-btn"></div> -->
                <ul id="hdpturn" class="poster-list">
                    <li class="poster-item hdpturn-item">
                        <p class="xxgy">黄大大</p>
                        <p class="say">拄杖盲学轻声码</p>
                        <div class="for_btn">
                            <img src="img/a0.png" width="100%">
                            <a href="#" class="in_page"><img src="images/iconin.png"></a>
                        </div>
                        <div class="students_star">
                            <p class="cell_list"><span class="lf">姓名:<span class="darks">黄大大</span></span> <span
                                    class="rt">薪资 :<span class="darks">21k</span></span>
                            </p>
                            <p class="cell_list"><span>入职:<span class="darks">向前看,向钱看</span></span>
                            </p>
                            <div class="zwjs">
                                自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展
                            </div>
                        </div>
                    </li>
                </ul>
            </div>
        </div>

    </div>

CSS代码所示

/*轮播*/
// 原创于CSDN博主-《拄杖盲学轻声码》
.lb_gl {
    margin-bottom: 30px;
    background: url(../images/bg_3d.png);
    background-size: 100% 100%;
    height: 725px;
}

.container {
    width: 1024px;
    margin: 0 auto;
    position: relative;
}

.pictureSlider {
    height: 518px;
    margin-bottom: 24px;
}

.poster-item {
    background: #fefefe;
    height: 453px;
    width: 336px;
    border-radius: 10px;
    border: 1px solid #666;
    padding: 45px 23px 20px 23px;
    transition: all 0.5s;
    cursor: default;
    -moz-transition: all 0.5s;
    cursor: default;
    -webkit-transition: all 0.5s;
    cursor: default;
    -o-transition: all 0.5s;
    cursor: default;
}

.turn_3d {
    text-align: center;
    color: #999;
    font-weight: 400;
    font-size: 36px;
    padding: 28px 0;
}

.xxgy {
    font-size: 30px;
    font-weight: 900;
    padding-left: 10px;
}

.poster-item .say {
    font-size: 18px;
    margin-bottom: 5px;
    padding-left: 10px;
}

.students_star {
    padding: 10px 10px 0 10px;
}

.cell_list {
    margin-bottom: 20px;
    color: #999;
    font-size: 18px;
    overflow: hidden;
}

.darks {
    color: #000;
    padding-left: 10px;
}

.zwjs {
    border-top: 1px solid #d0cddb;
    line-height: 26px;
    padding-top: 5px;
    color: #999;
    font-size: 12px;
    max-height: 84px;
    overflow: hidden;
}

.for_btn {
    position: relative;
    height: 214px;
    overflow: hidden
}

.in_page {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 40px;
    height: 40px;
    margin-left: -20px;
    margin-top: -20px;
}

.in_page>img {
    width: 40px;
    height: 40px;
}

.check_more {
    width: 180px;
    height: 50px;
    line-height: 50px;
    text-align: center;
    color: #fff;
    background: #bc241d;
    margin: 0 auto;
    display: block;
}

页面实现效果
在这里插入图片描述

2、JS实现堆叠切换

因为是多个贴片,如果按照正常人去写的话估计就是复制粘贴,然后形成堆叠状态,但是博主不是正常人,所以我想着模拟后台返回数据(用假数据),然后采用遍历的方式去赋值实现多个卡片堆叠的效果,于是乎实现代码如下:

var aa;
        $(function () {
            //动态加载元素
            var _keyData = [{
                name: "黄大大",
                money: "21k",
                tiptxt: "拄杖盲学轻声码",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄小小",
                money: "22k",
                tiptxt: "何惧风飞沙",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄大中",
                money: "23k",
                tiptxt: "天地无涯",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄大小",
                money: "21.5k",
                tiptxt: "谁怕,一蓑烟雨任平生",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄小小",
                money: "21.5k",
                tiptxt: "拄杖盲学轻声码",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄中小",
                money: "21.5k",
                tiptxt: "一生有爱",
                ming: "向前看,向钱看",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }, {
                name: "黄中中",
                money: "21.5k",
                ming: "向前看,向钱看",
                tiptxt: "拄杖盲学轻声码",
                textar: "自我介绍:90后的阳光开朗大男孩,喜欢在CSDN(拄杖盲学轻声码)上写写文章,爱舞蹈,喜编程,好诗赋,奔名企,求发展"
            }];
            var kstr = "";
            for (var k = 0; k < _keyData.length; k++) {
                kstr += `<li class="poster-item hdpturn-item">
                        <p class="xxgy">`+ _keyData[k].name + `</p>
                        <p class="say">`+ _keyData[k].tiptxt + `</p>
                        <div class="for_btn">
                            <img src="img/a`+ k + `.png" width="100%">
                            <a href="#" class="in_page"><img src="images/iconin.png" /></a>
                        </div>
                        <div class="students_star">
                            <p class="cell_list"><span class="lf">姓名:<span class="darks">`+ _keyData[k].name + `</span></span> <span
                                    class="rt">薪资 :<span class="darks">`+ _keyData[k].money + `</span></span>
                            </p>
                            <p class="cell_list"><span>入职:<span class="darks">`+ _keyData[k].ming + `</span></span>
                            </p>
                            <div class="zwjs">
                                `+ _keyData[k].textar + `
                            </div>
                        </div>
                    </li>`;
            }
            $("#hdpturn").html("").html(kstr);
            aa = new hdpturn({
                id: "hdpturn",
                opacity: 0.9,
                width: 382,
                Awidth: 1024,
                scale: 0.9
            })
        })

其中不难发现里面还有一个hdpturn函数,这个当然是我自己去封装的,需要引入hdpturn.js具体封装代码如下(文尾有完整代码包):

(function (win, doc, undefined) {
    var hdpturn = function (turn) {
        this.turn = turn
        this.hdpturn = $("#" + turn.id)
        this.X = 0
        this.hdpturnitem = this.hdpturn.children(".hdpturn-item")
        this.num_li = this.hdpturnitem.length//轮播元素个数 hdpturnPy为每个的偏移量
        this.hdpturnPy = turn.Awidth / (this.num_li - 1)
        this.init()
        this.turn_()
        return this
    }
    hdpturn.prototype = {
        constructor: hdpturn,
        init: function () {
            var _self = this;
            this.hdpturn.children(".hdpturn-item").each(function (index, element) {
                //index是第几个元素 X是选取的中间数 num_li是总数
                var rt = 1//1:右侧:-1:左侧
                if ((index - _self.X) > _self.num_li / 2 || (index - _self.X) < 0 && (index - _self.X) > (-_self.num_li / 2)) { rt = -1 }//判断元素左侧还是右侧
                var i = Math.abs(index - _self.X);//取绝对值
                if (i > _self.num_li / 2) { i = parseInt(_self.X) + parseInt(_self.num_li) - index; }//i:是左或者右的第几个
                if ((index - _self.X) < (-_self.num_li / 2)) { i = _self.num_li + index - _self.X }
                $(this).css({
                    'position': 'absolute',
                    'left': '50%',
                    'margin-left': -_self.turn.width / 2 + _self.hdpturnPy * rt * i + "px",
                    'z-index': _self.num_li - i,
                    'opacity': Math.pow(_self.turn.opacity, i),
                    'transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')',
                    '-webkit-transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')',
                    '-webkit-transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')',
                    '-moz-transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')',
                    '-ms-transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')',
                    '-o-transform': 'scale(' + Math.pow(_self.turn.scale, i) + ')'
                })
                $(this).attr("data_n", index)
            })
        },
        turn_: function () {
            var _self = this
            this.hdpturnitem.click(function () {
                _self.X = $(this).attr("data_n")
                _self.init()
            })
        },
        prev_: function () {
            var _self = this
            this.X--
            if (this.X < 0) { this.X = this.num_li - 1 }
            this.init()
        },
        next_: function () {
            var _self = this
            this.X++
            if (this.X >= this.num_li) { this.X = 0 }
            this.init()
        }
    }
    win.hdpturn = hdpturn;
}(window, document))

最终实现效果如下:
在这里插入图片描述

3、源码分享

3.1 百度网盘

链接:https://pan.baidu.com/s/1coCkeOlHV3zxxU9vTGuwOw
提取码:hdd6

3.2 123云盘

链接:https://www.123pan.com/s/ZxkUVv-0xI4.html
提取码:hdd6

3.3 邮箱留言

评论区留下您的邮箱账号,博主看到第一时间发给您,祝您生活愉快!


总结

以上就是今天要讲的内容,本文主要介绍了基于jquery实现3D卡片堆叠轮播切换的特效,实现轮播切换的过程,js如何实现3D叠加卡片轮播切换,3D叠加卡片轮播切换的demo,也期待大家一起进步哈,2023年一起加油!!!

版权声明:此文原创于CSDN博主-《拄杖盲学轻声码》,主页有很多分享的代码,期待您的访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/853447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

护网行动 | AD360 在网络安全中的重要作用

随着数字化时代的来临&#xff0c;网络已经成为了人们生活和工作中不可或缺的一部分。然而&#xff0c;随之而来的是网络安全问题日益突出。为了应对这些安全威胁&#xff0c;护网行动应运而生&#xff0c;其中AD360在保障网络安全方面扮演着至关重要的角色。 AD360是一个集成的…

封装上传组件(axios,进度条onUploadProgress,取消请求)

目录 定时模拟进度条 方法 A.axios B.xhr 取消请求​​​​​​​cancelToken A.axios.canceltoken B.source对象创建canceltoken 完整代码 A.自定义上传组件 B.二次封装组件 情况 增加cancelToken不生效&#xff0c;刷新页面 进度条太快->设置浏览器网速 定时…

发布属于自己的 npm 包

1 创建文件夹&#xff0c;并创建 index.js 在文件中声明函数&#xff0c;使用module.exports 导出 2 npm 初始化工具包&#xff0c;package.json 填写包的信息&#xff08;包的名字是唯一的&#xff09; npm init 可在这里写包的名字&#xff0c;或者一路按回车&#xff0c;后…

JedisDataException DENIED Redis is running in protected mode...异常的解决办法

一. 异常现象 壹哥最近在带学生做项目的过程中&#xff0c;有学生在使用Redis的时候&#xff0c;产生了如下这样的异常信息&#xff1a; com.yyg.demo.Demo01Exception in thread "main" redis.clients.jedis.exceptions.JedisDataException: DENIED Redis is runni…

企业邮箱安全对比:哪家公司的产品更可靠?

邮箱仍然是企业沟通的关键组成部分&#xff0c;但往往容易受到安全威胁。为了保护敏感信息&#xff0c;企业需要采取措施使企业邮箱更加安全。这可以通过投资先进的安全解决方案&#xff0c;创建限制或控制访问的策略&#xff0c;并定期对员工进行最佳实践培训来实现。 1、投资…

Java实战:高效提取PDF文件指定坐标的文本内容

前言 临时接到一个紧急需要处理的事项。业务侧一个同事有几千个PDF文件需要整理&#xff1a;需要从文件中的指定位置获取对应的编号和地址。 要的急&#xff0c;工作量大。所以就问到技术部有没有好的解决方案。 问技术的话就只能写个demo跑下了。 解决办法 1. 研究下PDF文档…

B站又添黑马UP主,首发创下1800万播放

众所周知&#xff0c;ACG类是B站最受欢迎的内容&#xff0c;毕竟B站由二次元内容为起点发展至今&#xff0c;吸引了众多年轻一代的用户群体。 而B站又是一个“来自用户”的平台&#xff0c;由用户转变成UP主自发投稿作品&#xff0c;构建出现在这个存在着大大小小几十个分区的…

固定资产管理工作总结

固定资产管理是现代企业管理工作的重点。在过去的一段时间里&#xff0c;企业专注于固定资产管理&#xff0c;以达到节约企业资源的效果。 企业要坚持以标准化管理为载体&#xff0c;制定完善的固定资产管理制度&#xff0c;全面规范固定资产进出口、汇总、储存、维护、损坏等…

利用 3D 地理空间数据实现Cesium的沉浸式环境

推荐&#xff1a;使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 为了将大量异构 3D 地理空间数据处理和分散到各行各业的地理空间应用程序和运行时引擎&#xff0c;Cesium 创建了 3D Tiles&#xff0c;这是一种用于高效流式传输和渲染大量异构数据集的开放标准。3D Tile…

《Python入门到精通》函数详解

「作者主页」&#xff1a;士别三日wyx 「作者简介」&#xff1a;CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」&#xff1a;小白零基础《Python入门到精通》 函数 1、函数的调用2、函数的参数2.1、变量的就近原则2.2、传递参数2.3、形参和实…

恶意扩展可滥用 VS Code 漏洞窃取认证令牌

微软的 Visual Studio Code (VS Code) 代码编辑器存在一个漏洞&#xff0c;允许恶意扩展程序检索 Windows、Linux 和 macOS 中存储的身份验证令牌。 这些令牌用于集成各种第三方服务和 API&#xff0c;如 Git、GitHub 和其他编码平台&#xff0c;因此窃取这些令牌可能会对数据…

试用MetaGPT

简介 最近朋友和B站都给我推 MetaGPT&#xff0c;正好有空就下载亲测了一下。MetaGPT 是目前&#xff08;230809&#xff09;github热榜第一名&#xff0c;今天就加了3000多个星。 MetaGPT是一个多智能体框架&#xff0c;能够生成不同的角色&#xff1a;工程师、产品经理、架…

【sonar】安装sonarQube免费社区版9.9【Linux】【docker】

文章目录 ⛺sonarQube 镜像容器⛺Linux 安装镜像&#x1f341;出现 Permission denied的异常&#x1f341;安装sonarQube 中文包&#x1f341;重启服务 ⛺代码上传到sonarQube扫描&#x1f341;java语言配置&#x1f341;配置 JS TS Php Go Python⛏️出现异常sonar-scanner.ba…

lc345. 反转字符串中的元音字母

元音字母按照从外到内成对的方式反转&#xff0c;不考虑出现的元音字母个数为奇数的情况 双指针&#xff1a;指针1由左向右遍历&#xff0c;指针2由右向左遍历&#xff0c;某个指针指向元音字母时停止&#xff0c;直到它另一个指针也指向元音字母&#xff0c;此时两个指针指向的…

YonGPT发布背后,“实用主义”成为大模型落地新风向

近年来伴随着数字经济的高歌猛进&#xff0c;国内企业服务赛道迅速站上行业风口。以ChatGPT为代表的大模型的到来&#xff0c;更为整个企服赛道添了一把火。而7月27日用友对外发布的首个企业服务大模型YonGPT&#xff0c;则正式宣告了企业服务大模型全新时代的到来。 目前参与…

C# 2048小游戏核心算法

文章目录 01.程序结构划分02.去零03.合并04.上移05.下移/左移/右移&#xff0c;只是取数据的方向不同06.提高可读性 01.程序结构划分 02.去零 有序向量“唯一化”的思路。 /// <summary>/// 去零/// </summary>/// <param name"row">对于一行或一…

torch.functional.affine_grid的坑

问题描述&#xff1a;在用torch进行图像仿射变换的时候&#xff0c;平移始终有问题 比如现在想要让一张图对应的tensor平移0.5个图像长度 那么需要先构造一个transform_matrix&#xff0c;这里网上说的是偏移量不是像素值&#xff0c;而是归一化的比例 shift_x 0.5 shift_y…

dependency xxxx not found 爆红

一、根本方法&#xff1a;直接手动安装jar包 mvn官网下载之后&#xff0c;终端进入该jar包目录下&#xff08;把下载的jar包移动到本地仓库&#xff09; 运行mvn install:install-file -Dfilejar包的路径 -DgroupIdgruopId中的内容 -DartifactIdactifactId的内容 -Dversionver…

智能财务分析的无冕之王-奥威BI数据可视化工具

利用智能数据可视化分析工具&#xff0c;可极大提升财务分析效率和报表可读性&#xff0c;缩短从分析到决策的耗时。但财务分析的难度往往比其他分析更高&#xff0c;因为它的分析指标计算组合变化太多也太快。哪些数据可视化工具能胜任智能财务数据分析&#xff1f; 奥威BI数…

共享饮水机开发让饮用水更放心

共享饮水机是指基于共享经济模式&#xff0c;将饮水机资源进行共享的服务&#xff0c;区别于传统饮水机&#xff0c;它是一款集物联网控制、远程上报、设备检测等为一体的设备。通过共享饮水机&#xff0c;用户可以方便地获得新鲜的饮用水而不需要购买和维护自己的饮水机。 共享…