第三页..._css3翻页效果">

当前位置:   article > 正文

css3几种常见的翻页特效_css3翻页效果

css3翻页效果

翻页特效

线上demo:https://my.weblf.cn/xly/demo/book_hand_back2.html

html:

  1. <div class="book preserve-3d">
  2. <div class="now_page point">
  3. <div class="book-page">
  4. <p>第三页</p>
  5. </div>
  6. </div>
  7. <div class="now_page point">
  8. <div class="book-page">
  9. <p>第二页</p>
  10. </div>
  11. </div>
  12. <div class="now_page point">
  13. <div class="book-page ">
  14. <p>第一页</p>
  15. </div>
  16. </div>
  17. <!--封面-->
  18. <div class="point now_page">
  19. <div class="book-page first-page">
  20. <p>封面</p>
  21. </div>
  22. </div>
  23. </div>

css:

  1. .book{
  2. height: 10rem;
  3. width: 40%;
  4. background: #FFF;
  5. position: absolute;
  6. right:10%;
  7. top:4rem;
  8. transform: rotateX(30deg);
  9. -webkit-transform: rotateX(30deg);
  10. -ms-transform: rotateX(30deg);
  11. -o-transform: rotateX(30deg);
  12. }
  13. /*每页的公共样式*/
  14. .book-page {
  15. position: absolute;
  16. top: 0;
  17. left: 0;
  18. width: 100%;
  19. height:10rem;
  20. border: 1px solid #1976D2;
  21. text-align: center;
  22. background-color: #fff;
  23. }
  24. .book-page p{
  25. font-size: 1.2rem;
  26. margin-top: 2rem;
  27. color: #ff6300;
  28. backface-visibility:hidden;
  29. -webkit-backface-visibility:hidden;
  30. }
  31. /*首页样式*/
  32. .first-page{
  33. background-color: #1976D2;
  34. }
  35. /*动画部分*/
  36. /*I'm the home page动画*/
  37. .flip-animation-start {
  38. animation: flipBook1 3s forwards;
  39. -moz-animation: flipBook1 3s forwards; /* Firefox */
  40. -webkit-animation: flipBook1 3s forwards; /* Safari and Chrome */
  41. -o-animation: flipBook1 3s forwards; /* Opera */
  42. }
  43. .flip-animation-end {
  44. animation: flipBook2 3s forwards;
  45. -moz-animation: flipBook2 3s forwards; /* Firefox */
  46. -webkit-animation: flipBook2 3s forwards; /* Safari and Chrome */
  47. -o-animation: flipBook2 3s forwards; /* Opera */
  48. }
  49. @keyframes flipBook1 {
  50. 0% {
  51. -webkit-transform: rotateY(0deg);
  52. -ms-transform: rotateY(0deg);
  53. -o-transform: rotateY(0deg);
  54. transform: rotateY(0deg);
  55. }
  56. 100% {
  57. -webkit-transform: rotateY(-160deg);
  58. -ms-transform: rotateY(-160deg);
  59. -o-transform: rotateY(-160deg);
  60. transform: rotateY(-160deg);
  61. }
  62. }
  63. /*关闭书页*/
  64. @keyframes flipBook2 {
  65. 0% {
  66. -webkit-transform: rotateY(-160deg);
  67. -ms-transform: rotateY(-160deg);
  68. -o-transform: rotateY(-160deg);
  69. transform: rotateY(-160deg);
  70. }
  71. 100% {
  72. -webkit-transform: rotateY(0deg);
  73. -ms-transform: rotateY(0deg);
  74. -o-transform: rotateY(0deg);
  75. transform: rotateY(0deg);
  76. }
  77. }

js:

  1. $('.now_page').click(function(){
  2. if($(this).hasClass('flip-animation-start')){
  3. $(this).removeClass('flip-animation-start').addClass('flip-animation-end');
  4. }else{
  5. $(this).removeClass('flip-animation-end').addClass('flip-animation-start');
  6. }
  7. })

这样写出来的翻页效果在正反面都可看见,如果想要隐藏反面可见,需要用到css3属性:backface-visibility:hidden;这个属性可以在元素在反面是隐藏。

反面隐藏

加入backface-visibility属性,注意:此条属性要搭配父级拥有属性transform-style: preserve-3d才可生效,必要时可以给所有父级添加。

  1. .book-page p{
  2. font-size: 1.2rem;
  3. margin-top: 2rem;
  4. color: #ff6300;
  5. backface-visibility:hidden;
  6. -webkit-backface-visibility:hidden;
  7. }

 效果:

双面展示不同内容

如果想在同一页的正反面展示不同的内容,此时将上一条的backface-visibility属性灵活运用一下即可。即先将背面的内容倒转,这样背面的内容在正面时隐藏,在反面时显示。

  1. <!--封面-->
  2. <div class="point now_page preserve-3d">
  3. <div class="book-page first-page preserve-3d">
  4. <p>封面</p>
  5. </div>
  6. <div class="back_book_page preserve-3d">
  7. <p>反面</p>
  8. </div>
  9. </div>

css:

  1. /*反面*/
  2. .back_book_page{width:100%;background:#ff6300;height:10rem;position:absolute;top:0;left:0;transform:rotateY(180deg);}
  3. .back_book_page>p{color:white;font-size:1.2rem;text-align:center;margin-top:2rem;}

效果:

注意:如果反面皆是一样,则可以使用上面写法,如果不一样,则会出现封面在上的情况,那是因为元素虽然翻转,但是层级关系仍未改变,所以当动画结束时封面会在上(我也是后来才发现这个问题)。错误展示如下:

此时如果想展示双面效果,需要在翻页后设置层级关系。

  1. var active_z=0;
  2. $('.now_page').click(function(){
  3. console.log($(this));
  4. if($(this).hasClass('flip-animation-start')){
  5. $(this).removeClass('flip-animation-start').addClass('flip-animation-end').css('z-index',0);
  6. active_z--;
  7. }else{
  8. $(this).removeClass('flip-animation-end').addClass('flip-animation-start').css('z-index',active_z);
  9. active_z++;
  10. }
  11. })

为活动的页面设置z-index即可。

结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/117175
推荐阅读
相关标签