练手小案例:用js实现3D轮播图

使用HTML5+CSS3+JS实现3D轮播图,绝对的干货!

代码里面有相应的注释和介绍,所以话不多说,直接展示代码!

效果图:

HTML部分:

<div class="box">
    <!-- 图片部分 -->
    <ul>
        <li class="current"><a href="#"><img src="images/1.png" alt=""></a></li>
        <li class="next"><a href="#"><img src="images/2.png" alt=""></a></li>
        <li class="prev"><a href="#"><img src="images/3.png" alt=""></a></li>
    </ul>
    <!-- 图片部分 end -->
    <a href="javascript:void(0)" class="prevBtn">
        <img src="images/left.png">
    </a>
    <a href="javascript:void(0)" class="nextBtn">
        <img src="images/right.png">
    </a>
</div>

 CSS部分:

*{
    padding: 0;
    margin: 0;
}
ul,li,ol{
    list-style: none;
}
a{
    text-decoration: none; 
}
.box{
    width: 1200px;
    height: 700px;
    margin-right: auto;
    margin-left: auto;
    position: relative;
    perspective: 500px;   /* 3D虚拟视点距屏幕的距离 */
    /* background-color: purple; */
}
.box ul img{
    width: 627px;
    height: 375px;
}
.box>ul>li>a{
    display: block;
}
.box>ul>li{
    position: absolute;
    z-index: 1; /* 堆叠顺序 */
    transform: scale(0.7,0.7);
    transition:all 0.5s; /* 过度属性 很重要 */
    top: 140px;   /* 后面这两个属性也非常重要:*/
    left: 280px; /* 让图片原始位置居中 */
}
/* 当前图片 */
.box>ul>li.current{
    margin-left: 13px;
    transform:scale(1,1);
    z-index: 100;
}
/* 下一张图片 */
.box>ul>li.next{
    right: 0;
    margin-left: 300px;
    transform:scale(0.7,0.7) rotateY(-10deg);
    z-index: 50;
}
/* 上一张图片 */
.box>ul>li.prev{
    left: 0;
    margin-left: -6px;
    transform:scale(0.7,0.7) rotateY(10deg);
    z-index: 50;
}
/* 按钮 */
.prevBtn,.nextBtn{
    display: block;
    width: 50px;
    height: 90px;
    position: absolute;
    background-color: red;
    opacity: 0.5;
    top: 40%;
    transition: all 0.5s;
    z-index: 200;
}
.prevBtn{
    left:0;
}
.nextBtn{
    right:0;
}
 /* 按钮的hover 效果*/
.prevBtn:hover ,.nextBtn:hover{
    opacity: 1;
}

JavaScript部分:

let lis = document.querySelectorAll("ul > li");
let prevBtn = document.querySelector(".prevBtn");
let nextBtn = document.querySelector(".nextBtn");
let index = 0;
function showPic(n){
    let prevli,nextli;
    if(n === lis.length-1){
        nextli = 0;
    }else{
        nextli = n + 1;
    }
    if(n === 0){
        prevli = lis.length-1;
    }else{
        prevli = n - 1;
    }
    for(let i = 0; i <= lis.length-1; i++){
        lis[i].className = "";
    }
    lis[n].className = "current";
    lis[nextli].className = "next";
    lis[prevli].className = "prev";
}
showPic(index);//初始化
nextBtn.addEventListener("click",function(){
    index--;
    if(index < 0){
        index = lis.length-1;
    }
    showPic(index);
});
prevBtn.addEventListener("click",function(){
    index++;
    if(index > lis.length-1){
        index = 0;
    }
    showPic(index);
})
//自动切换
setInterval(function(){
    index--;
    if(index < 0){
        index = lis.length-1;
    }
    showPic(index);
},5000);

学会了记得点赞哦!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然,我可以为您提供一个 Inno Setup 的练手案例。以下是一个简单的示例,演示了如何使用 Inno Setup 创建一个安装程序,并将文件复制到用户的计算机上。 ```pascal [Setup] AppName=MyApp AppVersion=1.0 DefaultDirName={pf}\MyApp OutputDir=Output [Files] Source: "C:\Path\to\MyApp.exe"; DestDir: "{app}" Source: "C:\Path\to\MyFile.txt"; DestDir: "{app}" [Icons] Name: "{commondesktop}\MyApp"; Filename: "{app}\MyApp.exe" [Code] function NextButtonClick(CurPageID: Integer): Boolean; begin // 在点击“下一步”按钮之前执行自定义操作 Result := True; end; function BackButtonClick(CurPageID: Integer): Boolean; begin // 在点击“上一步”按钮之前执行自定义操作 Result := True; end; function CurPageChanged(CurPageID: Integer): Boolean; begin // 当前页面发生变化时执行自定义操作 Result := True; end; function ShouldSkipPage(PageID: Integer): Boolean; begin // 根据需要跳过特定页面的条件进行定制 Result := False; end; ``` 这是一个基本的 Inno Setup 脚本,其中包含了设置安装程序的基本信息,如应用程序名称、版本号、默认安装目录等。在 `[Files]` 部分中,您可以指定要复制到用户计算机上的文件路径。在 `[Icons]` 部分,您可以指定在安装完成后在桌面上创建一个快捷方式。在 `[Code]` 部分,您可以编写自定义的脚本函数来执行各种操作。 您可以将此脚本保存为 `.iss` 文件,并使用 Inno Setup Compiler 来编译生成安装程序。编译后的安装程序将按照您在脚本中定义的设置进行安装。 请根据您的实际需求进行修改和扩展。希望这个案例能帮到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值