一个由jQuery和CSS3转换和转换组成的全屏3D立方体页面滑块。它具有奇特的页面滑块效果,在页面之间平滑过渡,同时它们在3D空间中相互重叠
1.为页面滑块创建页面(内容部分)。
<div id="wrap"> <div class="cube"> <section class="page active face front" id="home"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">Home Page</div> </div> </section> <section class="page face back" id="portfolio"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">Portfolio Page</div> </div> </section> <section class="page face top" id="about"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">about Page</div> </div> </section> <section class="page face right" id="contact"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">contact Page</div> </div> </section> <section class="page face bottom" id="blog"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">blog Page</div> </div> </section> <section class="page face left" id="article"> <div class="act-table text-center"> <div class="act-table-cell ver-middle">article Page</div> </div> </section> </div> </div>
2.创建一个页眉导航,使您可以在这些页面中导航。
<header> <nav class="text-center"> <ul class="inline-block"> <li class="pull-left active"><a href="#" data-direction="front">Home</a></li> <li class="pull-left"><a href="#" data-direction="back">Portfolio</a></li> <li class="pull-left"><a href="#" data-direction="top">About</a></li> <li class="pull-left"><a href="#" data-direction="right">Contact</a></li> <div class="clearfix"></div> </ul> </nav> </header>
3.将以下CSS片段复制并粘贴到您的页面中。
/* header nav styles */ header { position: fixed; top: 8px; left: 0; right: 0; z-index: 100; transition: 1s; -webkit-transition: 1s; -moz-transition: 1s } header.go-out { top: -150px } header nav ul { background-color: rgba(255, 255, 255, 0.2); overflow: hidden; border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px } header nav ul li { color: #fff } header nav ul li a { width: 100px; max-width: 150px; height: 32px; display: block; padding-top: 13px } header nav ul li.active a, header nav ul li.active a:hover { background-color: rgba(255, 255, 255, 0.2) } header nav ul li:hover a { background-color: rgba(255, 255, 255, 0.1) } /* page styles */ .page { background-color: rgba(0, 0, 0, 0.2) } .page .act-table { width: 100%; height: 100% } .page .act-table .act-table-cell { font-size: 100px; font-weight: 500; color: #fff } .page.active { z-index: 50 } #wrap { position: fixed; top: 0; bottom: 0; right: 0; left: 0; transition: .8s; -webkit-transition: .8s; -moz-transition: .8s } #wrap.active { top: 10%; bottom: 10%; right: 10%; left: 10% } .cube { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); -webkit-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); -moz-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg); transition: 1s; -webkit-transition: 1s; -moz-transition: 1s } .cube.reverse-back { transform: rotateX(180deg) rotateY(0deg) rotateZ(-180deg); -webkit-transform: rotateX(180deg) rotateY(0deg) rotateZ(-180deg); -moz-transform: rotateX(180deg) rotateY(0deg) rotateZ(-180deg) } .cube.reverse-back .back { transform: translateZ(-800px) rotateY(-180deg); -webkit-transform: translateZ(-800px) rotateY(-180deg); -moz-transform: translateZ(-800px) rotateY(-180deg) } .cube.reverse-left .left { transform: translateX(-800px) rotateY(-90deg); -webkit-transform: translateX(-800px) rotateY(-90deg); -moz-transform: translateX(-800px) rotateY(-90deg) } .cube.reverse-right { transform: rotateX(0deg) rotateY(270deg) rotateZ(0deg); -webkit-transform: rotateX(0deg) rotateY(270deg) rotateZ(0deg); -moz-transform: rotateX(0deg) rotateY(270deg) rotateZ(0deg) } .cube.reverse-right .right { transform: translateX(800px) rotateY(90deg); -webkit-transform: translateX(800px) rotateY(90deg); -moz-transform: translateX(800px) rotateY(90deg) } .cube.reverse-top { transform: rotateX(-90deg) rotateY(0deg) rotateZ(0deg); -webkit-transform: rotateX(-90deg) rotateY(0deg) rotateZ(0deg); -moz-transform: rotateX(-90deg) rotateY(0deg) rotateZ(0deg) } .cube.reverse-top .top { transform: translateY(-400px) rotateX(90deg); -webkit-transform: translateY(-400px) rotateX(90deg); -moz-transform: translateY(-400px) rotateX(90deg) } .cube.reverse-bottom .bottom { transform: translateY(400px) rotateX(-90deg); -webkit-transform: translateY(400px) rotateX(-90deg); -moz-transform: translateY(400px) rotateX(-90deg) } .face { display: block; position: absolute; top: 0; bottom: 0; left: 0; right: 0; width: 100%; height: 100%; color: #666; font-size: 18px; text-align: center; box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.5); -webkit-box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.5); -moz-box-shadow: inset 0 0 4px rgba(0, 0, 0, 0.5) } .front { background-color: #28aadc } .front.active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) } .back { background-color: #ff3366 } .back:not(.active) { transform: translateZ(-800px) rotateY(-180deg); -webkit-transform: translateZ(-800px) rotateY(-180deg); -moz-transform: translateZ(-800px) rotateY(-180deg) } .back .active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) } .left:not(.active) { transform: translateX(-800px) rotateY(-90deg); -webkit-transform: translateX(-800px) rotateY(-90deg); -moz-transform: translateX(-800px) rotateY(-90deg) } .left .active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) } .right { background-color: #000 } .right:not(.active) { transform: translateX(800px) rotateY(90deg); -webkit-transform: translateX(800px) rotateY(90deg); -moz-transform: translateX(800px) rotateY(90deg) } .right .active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) } .top { background-color: #FFAD33 } .top:not(.active) { transform: translateY(-400px) rotateX(90deg); -webkit-transform: translateY(-400px) rotateX(90deg); -moz-transform: translateY(-400px) rotateX(90deg) } .top .active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) } .bottom:not(.active) { transform: translateY(400px) rotateX(-90deg); -webkit-transform: translateY(400px) rotateX(-90deg); -moz-transform: translateY(400px) rotateX(-90deg) } .bottom .active { transform: translateZ(800px); -webkit-transform: translateZ(800px); -moz-transform: translateZ(800px) }
4.在文档末尾加载最新的jQuery库。
<script src="/path/to/cdn/jquery.slim.min.js"></script>
5.激活三维立方体页面滑块。
(function(document, window, $){ $(document).ready(function(){ var windowWidth = $(window).width(), windowHeight = $(window).height(), $header = $('header'); function headerAnchors(){ var pageDirection = ''; var thisElement; var timeout; $header.find('nav li a').click(function(event){ event.preventDefault(); $('.cube').removeClass('reverse-' + pageDirection); thisElement = $(this); pageDirection = thisElement.data('direction'); reverseDirection = thisElement.data('reverse-direction'); thisElement.parent().addClass('active').siblings().removeClass('active'); $('.cube').addClass('reverse-' + pageDirection); $header.addClass('go-out'); $('#wrap').addClass('active'); clearTimeout(timeout); timeout = setTimeout(function(){ $header.removeClass('go-out'); $('#wrap').removeClass('active'); }, 1000); }); }headerAnchors(); $(window).resize(function(){ windowWidth = $(window).width(); windowHeight = $(window).height(); }); }); })(document, window, jQuery);