这是一款效果非常炫酷的全屏双面板内容切换UI设计效果。该UI设计使用CSS3和jQuery来制作双面板效果,左右两个面板可以通过箭头按钮来相应切换具体的内容,在内容切换时带有一些3D效果,非常炫酷。
浏览index.html,两边内容切换,需要引用jquery-1.11.0.min.js 和modernizr.js,内容任意替换,适合做内容对比阅读
HTML结构
该全屏双面板的HTML结构的要点是:外部包裹容器的宽度是视口(viewport)的2倍,在它里面有两个<div>元素,每一个都等于100%的viewport宽度。这两个<div>元素在它们的父容器中浮动,一个紧挨另一个。但是这时外部的父容器会产生水平的滚动条,为了修复这个问题,可以在外部包裹容器之外在添加一个总的包裹容器,并通过CSS来设置溢出隐藏。
这样,我们只可以看到左边的<div>元素,而右边的<div>元素是被隐藏的。为了使两个<div>元素各自都只显示一半,可以使它们向左移动-25%(外部容器宽度的25%)。现在,如果想看到左边div的全部内容,只需要向右移动,设置为50%,想看到右边的div全部内容,只需要做相反的操作即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | < div class = "overflow" > < section class = "panels" > < article class = "panels__side panels__side--left" > < div class = "panels__side panels__side--inner-left" > < p >"..."</ p > </ div > < div class = "panels__side panels__side--inner" > < h1 class = "panels__headline" >Noam Chomsky</ h1 > < svg class = "arrow arrow--left" width = "40" height = "40" viewBox = "0 0 24 24" > < path d = "M0 0h24v24h-24z" fill = "none" /> < path d = "M20 11h-12.17l5.59-5.59-1.42-1.41-8 8 8 8 1.41-1.41-5.58-5.59h12.17v-2z" /> </ svg > </ div > </ article > < article class = "panels__side panels__side--right" > < div class = "panels__side panels__side--inner" > < h1 class = "panels__headline" >Buzz Aldrin</ h1 > < svg class = "arrow arrow--right" width = "40" height = "40" viewBox = "0 0 24 24" > < path d = "M0 0h24v24h-24z" fill = "none" /> < path d = "M12 4l-1.41 1.41 5.58 5.59h-12.17v2h12.17l-5.58 5.59 1.41 1.41 8-8z" /> </ svg > </ div > < div class = "panels__side panels__side--inner-right" > < p >"..."</ p > </ div > </ article > </ section > </ div > |
CSS样式
为了使每个<div>元素都填充满整个视口,CSS中设置它们的高度为100vh。
1 2 3 4 5 6 7 8 9 10 | .overflow { height : 100 vh; overflow : hidden ; } .panels__side--inner- left , .panels__side--inner- right , .panels__side--inner { padding : 0 5 vw; height : 100 vh; } |
另外特效中还预设了一些切换class类,这些类在JavaScript代码中使用,用以切换面板的各种状态。还有一个active类和一个隐藏class类,它们都是为左右两个div服务的。这些class决定div的哪个部分被显示,哪个部分会被移动到屏幕上显示。
JavaScript
特效中使用jQuery代码来切换两个div,如果左边的div被点击,那么会给它添加一个active的class,而右边的div则添加隐藏的class样式。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | $( function () { var Panels = ( function () { var panelLeft = document.querySelector( '.panels__side--left' ); var panelRight = document.querySelector( '.panels__side--right' ); var openLeft = function () { panelLeft.classList.toggle( 'panels__side--left-active' ); panelRight.classList.toggle( 'panels__side--right-hidden' ); }; var openRight = function () { panelRight.classList.toggle( 'panels__side--right-active' ); panelLeft.classList.toggle( 'panels__side--left-hidden' ); }; var bindActions = function () { panelLeft.addEventListener( 'click' , openLeft, false ); panelRight.addEventListener( 'click' , openRight, false ); }; var init = function () { bindActions(); }; return { init: init }; }()); Panels.init(); }); |
特别申明:
本站所有资源都是由网友投稿发布,或转载各大下载站,请自行检测软件的完整性!
本站所有资源仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您自己承担!
如有侵权请联系我们删除下架,联系方式:lei1294551502@163.com