热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

案例:3D切割轮播图

一、3d转换3D旋转套路:顺着轴的正方向看,顺时针旋转是负角度,逆时针旋转是正角度二、代码<!DOCTYPEhtml><html>

一、3d转换

3D旋转套路:顺着轴的正方向看,顺时针旋转是负角度,逆时针旋转是正角度

二、代码

DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>3D切割轮播图title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box{
            width: 500px;
            height: 300px;
            margin: 100px auto 0;
            border: 1px solid #ccc;
            position: relative;
        }
        .box .imageBox{
            list-style: none;
            width: 100%;
            height: 100%;
        }
        .box .imageBox li{
            width: 100px;
            height: 100%;
            float: left;
            position: relative;
            /* 3D呈现 */
            transform-style: preserve-3d;
            transition: all 1s;
        }
        .box .imageBox li span{
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background: url("1.jpg") no-repeat;
        }
        /* 拼接立体容器:立体容器旋转中心在电脑平面上,每一个面的图片正面朝外 */
        .box .imageBox li span:nth-child(1){
            background-image: url("1.jpg");
            transform: translateZ(150px);
        }
        .box .imageBox li span:nth-child(2){
            background-image: url("2.jpg");
            transform: rotateX(90deg) translateZ(150px);
        }
        .box .imageBox li span:nth-child(3){
            background-image: url("3.jpg");
            transform: rotateX(180deg) translateZ(150px);
        }
        .box .imageBox li span:nth-child(4){
            background-image: url("4.jpg");
            transform:  rotateX(270deg) translateZ(150px);
        }
        /* 拼接背景 */
        .box .imageBox li:nth-child(1) span{
            background-position: 0 0;
        }
        .box .imageBox li:nth-child(2) span{
            background-position: -100px 0;
        }
        .box .imageBox li:nth-child(3) span{
            background-position: -200px 0;
        }
        .box .imageBox li:nth-child(4) span{
            background-position: -300px 0;
        }
        .box .imageBox li:nth-child(5) span{
            background-position: -400px 0;
        }
        .box .left,
        .box .right{
            position: absolute;
            top: 115px;
            width: 50px;
            height: 70px;
            background: rgba(255, 255, 0,0.1);
            text-align: center;
            line-height: 70px;
            font-size: 20px;
            color: #fff;
            text-decoration: none;
            font-weight: bold;
        }
        .box .right{
            right: 0;
        }
        .box .left{
            left: 0;
        }
    style>
head>
<body>
    <div class="box">
        <ul class="imageBox">
            
            <li>
                <span>span>
                <span>span>
                <span>span>
                <span>span>
            li>
            <li>
                <span>span>
                <span>span>
                <span>span>
                <span>span>
            li>
            <li>
                <span>span>
                <span>span>
                <span>span>
                <span>span>
            li>
            <li>
                <span>span>
                <span>span>
                <span>span>
                <span>span>
            li>
            <li>
                <span>span>
                <span>span>
                <span>span>
                <span>span>
            li>
        ul>
        <a class="left" href="Javascript:;"><a>
        <a class="right" href="Javascript:;">>a>
    div>
    <script src="jquery.min.js">script>
    <script>
        $(function(){
            //点击切换图片(定义一个索引)
            var index=0;
            // 开关
            var flag=true;
            // 点击左边的按钮,上一张
            $(".left").on("click",function(){
                if(!flag) return false;
                flag=false;
                index--;
                var angle=-index*90;
                $("li").css("transform","rotateX("+ angle +"deg)").each(function(i,item){
                    // 设置不同的延时
                    $(this).css("transition-delay",i*0.25+"s");
                });
            });
            //点击右边的按钮,下一张
            $(".right").on("click",function(){
                if(!flag) return false;
                flag=false;
                index++;
                var angle=-index*90;
                $("li").css("transform","rotateX("+ angle +"deg)").each(function(i,item){
                    // 设置不同的延时
                    $(this).css("transition-delay",i*0.25+"s");
                });
            });
            //优化:重复点击的时候动画会层叠----使用节流阀flag
            $("li:last").on("transitionend",function(){
                // 最后一部分图片加载完毕
                flag=true;
            });
        });
    script>
body>
html>

三、效果


推荐阅读
  • 本文介绍了解决IE678伪类不兼容问题的方法,包括少用CSS3和HTML5独有的属性,使用CSS hacker,使用last-child清除浮动、批量添加标签、去掉list item最后一个的border-right等技巧。同时还介绍了使用after清除浮动时加上IE独有属性zoom:1的处理方法。另外,本文还提到可以使用jQuery代替批量添加标签的功能,以及使用负边距和CSS2选择器element+element去掉list item最后一个的border-right的方法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文介绍了使用Python解析C语言结构体的方法,包括定义基本类型和结构体类型的字典,并提供了一个示例代码,展示了如何解析C语言结构体。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
author-avatar
大地瓜1975
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有