如何使用CSS翻转多个div?

2024-02-04

如何翻转多个div当我使用 CSS3 单击菜单时?

This http://jsfiddle.net/Lucdd/代码仅适用于最后两个divs :

HTML 代码

<ul class="nav">
   <li><a href="#home">home</a></li>
   <li><a href="#about">about</a></li>
   <li><a href="#work">work</a></li>
   <li><a href="#contact">contact</a></li>
</ul>
<section class="container">
   <div id="card">
      <div class="front flipper" id="home">home</div>
      <div class="back flipper" id="about">about</div>
      <div class="front flipper" id="work">work</div>
      <div class="back flipper" id="contact">contact</div>
   </div>
</section>

CSS Code

    .container {
    width: 500px;
    height: 360px;
    position: relative;
    margin: 0 auto 40px;
    border: 1px solid #CCC;
    -webkit-perspective: 800px;
    -moz-perspective: 800px;
    -o-perspective: 800px;
    perspective: 800px;
}
#card {
    width: 100%;
    height: 100%;
    position: absolute;
    -webkit-transition: -webkit-transform 1s;
    -moz-transition: -moz-transform 1s;
    -o-transition: -o-transform 1s;
    transition: transform 1s;
    -webkit-transform-style: preserve-3d;
    -moz-transform-style: preserve-3d;
    -o-transform-style: preserve-3d;
    transform-style: preserve-3d;
}
#card.flipped {
    -webkit-transform: rotateX( 180deg);
    -moz-transform: rotateX( 180deg);
    -o-transform: rotateX( 180deg);
    transform: rotateX( 180deg);
}
#card .flipper {
    display: block;
    height: 100%;
    width: 100%;
    line-height: 260px;
    color: white;
    text-align: center;
    font-weight: bold;
    font-size: 140px;
    position: absolute;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -o-backface-visibility: hidden;
    backface-visibility: hidden;
}
.flipper {
    background: #963
}
#card .front {
    background: red;
}
#card .back {
    background: blue;
    -webkit-transform: rotateX( 180deg);
    -moz-transform: rotateX( 180deg);
    -o-transform: rotateX( 180deg);
    transform: rotateX( 180deg);
}

JavaScript 代码

   $(".nav li").on("click", function() {

    var activeTab = $(this).find("a").attr("href");

    //  alert(activeTab);

    if ($("#card").hasClass("flipped")) {
        $("#card").removeClass("flipped");
    } else {
        $("#card").addClass("flipped");
    }

    return false;
});

有什么建议 ?


与两个元素一起使用时的翻转动画非常简单,因为有一个背面和一个正面。但是,当需要使用许多元素来实现相同的功能时,它就会变得格外复杂,因为您需要维护如下 3 种状态:

  • 翻转 - 这是当一个块进入视野并且旋转为 0 度(基本上没有旋转)时。
  • 之前 - 这是翻转元素之前的元素的状态。在此状态下,块沿一个方向旋转 180 度。
  • After - 这是翻转元素之后的元素的状态。在此状态下,块沿相反方向旋转 180 度。

因此,基本上,当单击链接时,其之前的块会从 0 度旋转到 180 度,目标块本身会从 -180 度旋转到 0 度(下一个元素保持在 -180 度)。执行这些操作为其提供了链条旋转的外观和感觉。

$(".nav li a").on("click", function() {
  var activeTab = $(this).attr("href");
  $('#card > div').removeClass('flipped after before');
  $(activeTab).addClass('flipped');
  $(activeTab).prevAll('.flipper').addClass('before');
  $(activeTab).nextAll('.flipper').addClass('after');
  return false;
});
.container {
   width: 500px;
   height: 360px;
   position: relative;
   margin: 0 auto 40px;
   border: 1px solid #CCC;
   -webkit-perspective: 800px;
   -moz-perspective: 800px;
   -o-perspective: 800px;
   perspective: 800px;
 }
 #card {
   width: 100%;
   height: 100%;
   position: absolute;
   -webkit-transform-style: preserve-3d;
   -moz-transform-style: preserve-3d;
   -o-transform-style: preserve-3d;
   transform-style: preserve-3d;
 }
 #card .flipper {
   display: block;
   height: 100%;
   width: 100%;
   line-height: 260px;
   color: white;
   text-align: center;
   font-weight: bold;
   font-size: 140px;
   position: absolute;
   -webkit-transition: -webkit-transform 1s, opacity 1s;
   -moz-transition: -moz-transform 1s, opacity 1s;
   -o-transition: -o-transform 1s, opacity 1s;
   transition: transform 1s, opacity 1s;
   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   -o-backface-visibility: hidden;
   backface-visibility: hidden;
   background: blue;
   opacity: 0;
 }
 #card .flipper:nth-child(2n) {
   background: red;
 }
 #card .flipper.flipped {
   -webkit-transform: rotateX(0deg);
   -moz-transform: rotateX(0deg);
   -o-transform: rotateX(0deg);
   transform: rotateX(0deg);
   z-index: 1;
   opacity:1;
 }
 #card .flipper.before {
   -webkit-transform: rotateX(180deg);
   -moz-transform: rotateX(180deg);
   -o-transform: rotateX(180deg);
   transform: rotateX(180deg);
 }
 #card .flipper.after {
   -webkit-transform: rotateX(-180deg);
   -moz-transform: rotateX(-180deg);
   -o-transform: rotateX(-180deg);
   transform: rotateX(-180deg);
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<ul class="nav">
  <li><a href="#home">home</a>
  </li>
  <li><a href="#about">about</a>
  </li>
  <li><a href="#work">work</a>
  </li>
  <li><a href="#contact">contact</a>
  </li>
</ul>
<section class="container">
  <div id="card">
    <div class="flipper flipped" id="home">home</div>
    <div class="flipper after" id="about">about</div>
    <div class="flipper after" id="work">work</div>
    <div class="flipper after" id="contact">contact</div>
  </div>
</section>

Note:jQuery 代码可以进一步优化,但我会将微调部分留给您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用CSS翻转多个div? 的相关文章

随机推荐

  • 如何在 SQL Server 中循环插入多条数据?使用 Node JS 乏味

    我有一个 Node JS 项目 它从数组中获取数据data2 使用此数据创建一个对象myObject使用来自 API 的数据获取let url https 然后将其保存到 SQL Server 中的数据库中 我遇到的问题是我遵循MS Doc
  • 在响应中返回 HttpStatusCode

    有没有一种简单的方法可以为我的 api 返回 HttpStatusCode 我找到了一种稍微更详细的方法来做到这一点 return Response AsJson new object HttpStatusCode NoContent 我已
  • 在ant脚本中连接xml文件

    我是 Ant 脚本的新手 我正在寻找如何将文件夹中的所有 xml 文件连接到 ant 脚本中的单个 xml 文件中 在我的项目中 将在文件夹中动态生成 n 个 xml 文件 例如 server1 xml manager xml server
  • 在 iOS 9 和 10 中支持 NSManagedObject fetchRequest() 类方法

    iOS 10 引入了新的类级别fetchRequest 中的方法NSManagedObject 和许多其他开发人员一样 我在上面创建了自己的扩展NSManagedObject其中有一个fetchRequest 方法 当我尝试构建支持 iOS
  • 对数字进行排序 Objective C

    我有一个字符串数组 我使用该方法对其进行排序 TableViewPopoverList sortUsingSelector selector localizedCaseInsensitiveCompare 这些字符串的第一部分是一个数字 但
  • 执行transact-sql语句或批处理时发生异常

    我不断收到错误消息 执行transact sql语句或批处理时发生异常 当尝试在 SQL Server Management Studio 2016 中执行任何操作时 当我尝试创建或编辑登录名 尝试创建新数据库时 基本上当我执行任何操作时
  • 内容从高度为 100% 的 div 溢出

    当我在 Chrome Firefox 或 IE11 中查看此页面时 我注意到将窗口水平调整到最小宽度会导致文本溢出页面底部的白色背景 div div设置了100 的高度 那不是应该继续匹配页面的高度吗 看起来 100 只匹配窗口的高度 但是
  • 为什么 php 接口中的关键词是abstract和void?

    查看 php 手册站点上的 SplSubject 接口并注意到 SplSubject Methods abstract public void attach SplObserver observer abstract public void
  • JRXML 中的多个页面使用 iReport 进行多页报告

    我只是想知道iReport JRXML是否支持多页报表 如果有的话 可以给一些参考样品吗 我并不是要求一份随着数据增长而增长的报告 我有一份静态报告 其中包含多个页面需要处理 每个页面都有不同的页眉 页脚和内容 只是他们需要成为一个单一的一
  • 如何在 Asp.Net Core 6 中从 Secrets.json 获取 ConnectionString?

    我是 Asp Net Core 和 EF 的新手 我正在从数据库端开发一个简单的 CRUD 使用Secrets json文件来隐藏我的连接字符串凭据 但我不知道如何使用 AddDbContext 引用该文件 到目前为止我的代码 public
  • 如何在 Jetpack Compose 中减慢 AnimateScrollToItem 的速度?

    我有一个惰性列表 单击按钮时我将动画滚动到项目 onClick scope launch lazyListState animateScrollToItem selectedIndex 为什么 animateScrollToItem 这么快
  • 使用 pdfkit for python 生成目录

    问题摘要 我无法让目录生成器在 Python 的 pdfkit 中工作 我尝试过的 传递参数toc 我当前的代码 toc xsl style sheet toc xsl pdfkit from file book html filename
  • 从矩阵中提取一系列连续向量

    我有一个大矩阵 为了简化起见 gt mat matrix c 1 50 ncol 5 gt mat 1 2 3 4 5 1 1 11 21 31 41 2 2 12 22 32 42 3 3 13 23 33 43 4 4 14 24 34
  • 为什么 v-model 不能与数组和 v-for 循环一起使用?

    我有一个自定义选择组件 它适用于一个简单的变量 但与 v for 一起使用时它将不起作用 https jsfiddle net 7gjkbhy3 19 https jsfiddle net 7gjkbhy3 19
  • 如何使用 IHttpClientFactory 刷新令牌

    我使用 IHttpClientFactory 使用 Net Core 2 2 发送请求并从两个外部 API 接收 HTTP 响应 我正在寻找一个好的策略来使用已存储在 appsettings json 中的刷新令牌来获取新的访问令牌 当当前
  • 使用 Node js 将下游消息发送到 google ccs

    我在用节点xmpp https github com node xmpp node xmpp连接到 google gcm ccs 服务器 我跟着连接 现在 每当我收到来自我的 redis 订阅者的消息时 我需要发送一条下游消息 我订阅了一个
  • 使用 JavaScript 获取 GPS 位置

    我正在使用平板电脑 正在处理 html 应用程序 希望在不使用任何网络连接的情况下获取 GPS 位置 请建议我简单的方法 使用JS你可以这样得到它
  • Solrj 与服务器通信时发生 IOException

    我正在使用基本身份验证 我的solr版本是4 1 我可以获得查询结果 但是当我尝试索引文档时 我收到以下错误消息 org apache solr client solrj SolrServerException IOException oc
  • 需要一个示例演示,了解如何使用空手道脚本从头开始使用加特林进行性能测试

    我对性能测试非常陌生 我浏览了在加特林中使用空手道脚本创建的示例项目 但无法理解如何做到这一点 任何人都可以解释如何使用空手道通过使用如下所示的公共 api 使用加特林进行性能测试 场景 获取州特定信息 一个州 给定网址 http serv
  • 如何使用CSS翻转多个div?

    如何翻转多个div当我使用 CSS3 单击菜单时 This http jsfiddle net Lucdd 代码仅适用于最后两个divs HTML 代码 ul class nav li a href home home a li li a