zoukankan      html  css  js  c++  java
  • JavaScript基础学习--03图片翻转

    一、利用纯js编写,兼容IE9以及IE9以上 
         1、两张图片重合排放,并且背面的图片display(none)。   
     
         2、点击事件中让正面图片width随一定的大小减少width -= speed,最终display(none),反面图片反之;     
     
         3、注意点:让图片有180°翻转的效果,需要不能设置absolute,并需要margin(auto)
     
         4、使用关键技术:width+-; var a = setInterval; clearInterval( a );
     
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Title</title>
     6     <link rel="stylesheet" type="text/css" href="css/fanpai.css">
     7 </head>
     8 <body>
     9 <div id="cardContain">
    10     <div class="cardWrap">
    11         <div class="card cardA" data-info="1">
    12             <img src="images/a.jpg" alt="抽奖"/>
    13         </div>
    14         <div class="card cardB">
    15             <img src="" alt="一等奖"/>
    16         </div>
    17     </div>
    18     <div class="cardWrap">
    19         <div class="card cardA" data-info="2">
    20             <img src="images/a.jpg" alt="抽奖"/>
    21         </div>
    22         <div class="card cardB">
    23             <img src="" alt="一等奖"/>
    24         </div>
    25     </div>
    26     <div class="cardWrap">
    27         <div class="card cardA" data-info="3">
    28             <img src="images/a.jpg" alt="抽奖"/>
    29         </div>
    30         <div class="card cardB">
    31             <img src="" alt="一等奖"/>
    32         </div>
    33     </div>
    34     <div class="cardWrap">
    35         <div class="card cardA" data-info="4">
    36             <img src="images/a.jpg" alt="抽奖"/>
    37         </div>
    38         <div class="card cardB">
    39             <img src="" alt="一等奖"/>
    40         </div>
    41     </div>
    42     <div class="cardWrap">
    43         <div class="card cardA" data-info="5">
    44             <img src="images/a.jpg" alt="抽奖"/>
    45         </div>
    46         <div class="card cardB">
    47             <img src="" alt="一等奖"/>
    48         </div>
    49     </div>
    50     <div class="cardWrap">
    51         <div class="card cardA" data-info="6">
    52             <img src="images/a.jpg" alt="抽奖"/>
    53         </div>
    54         <div class="card cardB">
    55             <img src="" alt="一等奖"/>
    56         </div>
    57     </div>
    58     <div class="cardWrap">
    59         <div class="card cardA" data-info="7">
    60             <img src="images/a.jpg" alt="抽奖"/>
    61         </div>
    62         <div class="card cardB">
    63             <img src="" alt="一等奖"/>
    64         </div>
    65     </div>
    66     <div class="cardWrap">
    67         <div class="card cardA" data-info="8">
    68             <img src="images/a.jpg" alt="抽奖"/>
    69         </div>
    70         <div class="card cardB">
    71             <img src="" alt="一等奖"/>
    72         </div>
    73     </div>
    74     <div class="cardWrap">
    75         <div class="card cardA" data-info="9">
    76             <img src="images/a.jpg" alt="抽奖"/>
    77         </div>
    78         <div class="card cardB">
    79             <img src="" alt="一等奖"/>
    80         </div>
    81     </div>
    82 </div>
    83 <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    84 <script src="js/fanpai.js"></script>
    85 </body>
    86 </html>
     
     1 #cardContain{
     2      306px;
     3     height: 306px;
     4     border: 1px solid red;
     5     margin: 20px auto;
     6 }
     7 .cardWrap{
     8     position: relative;
     9      100px;
    10     height: 100px;
    11     border: 1px solid red;
    12     float: left;
    13 }
    14 .cardWrap img{
    15      100%;
    16     height: 100%;
    17 }
    18 .card {
    19      100%;
    20     height: 100%;
    21     margin: auto;
    22     cursor: pointer;
    23 }
    24 #cardContain .cardA, #cardContain .cardB{
    25     text-align: center;
    26 }
    27 #cardContain .cardB{
    28     display: none;
    29     background: red;
    30 }
    31 #cardContain .cardA{
    32     background: orange;
    33 }
     1 /**
     2  * Created by jiangheyan on 2017/6/23
     3  */
     4 (function() {
     5     var datas = [{
     6         id: 1,
     7         info: '一等奖',
     8         src: 'images/a.jpg'
     9     }, {
    10         id: 2,
    11         info: '二等奖',
    12         src: 'images/a.jpg'
    13     }, {
    14         id: 3,
    15         info: '三等奖',
    16         src: 'images/a.jpg'
    17     }, {
    18         id: 4,
    19         info: '豪华奖',
    20         src: 'images/a.jpg'
    21     }, {
    22         id: 5,
    23         info: '特等奖',
    24         src: 'images/a.jpg'
    25     }, {
    26         id: 6,
    27         info: '50积分',
    28         src: 'images/a.jpg'
    29     }, {
    30         id: 7,
    31         info: '100积分',
    32         src: 'images/a.jpg'
    33     }, {
    34         id: 8,
    35         info: '安慰奖',
    36         src: 'images/a.jpg'
    37     }, {
    38         id: 9,
    39         info: '很遗憾,您未中奖',
    40         src: 'images/a.jpg'
    41     }];
    42     $('#cardContain').one('click', '.cardWrap', function() {
    43         var $this = $(this);
    44         var $cardA = $this.find('.cardA');
    45         var $cardB = $this.find('.cardB');
    46         var $img = $cardB.find('img');
    47         var info = parseInt($cardA.data('info'));
    48         var src = '';
    49         var altTex = '';
    50         for (var i = 0; i < datas.length; i++) {
    51             if (info === datas[i].id) {
    52                 src = datas[i].src;
    53                 altTex = datas[i].info;
    54             }
    55         }
    56         var wid = 100;
    57         var flag = wid;
    58         var speed = wid / 20;
    59         var showA = setInterval(function() {
    60             wid -= speed;
    61             $cardA.width(wid + '%');
    62             if (wid <= 0) {
    63                 clearInterval(showA);
    64                 $img.attr('src', src);
    65                 $img.attr('alt', altTex);
    66                 $cardA.css('display', 'none');
    67                 var showB = setInterval(function() {
    68                     wid += speed;
    69                     $cardB.css('display', 'block');
    70                     $cardB.width(wid + '%');
    71                     if (wid >= flag) {
    72                         clearInterval(showB);
    73                     }
    74                 }, 10);
    75             }
    76         }, 10);
    77     });
    78 })();
     
    二、纯css技术 之 利用backface-visibility(hidden|visible)---背面是否可见,缺陷:兼容IE10以上(包括IE10)
         1、两张图片重合显示,首先让背面的图片翻转180°,并设置backface-visibility(hidden)
     
         2、在两张图片的父级元素上做点击事件,添加类(主要让这个父级元素翻转180°),此时情况就是正面的变成了反面,反面的变成了正面,因为有了backface-visibility(hidden)属性,所以正面可见,反面不可见;
     
         3、利用transition: 0.6s;     (添加在父级元素中),让动画有了时间限制,提高用户体验度。
     
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>Document</title>
     6     <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
     7     <!-- <script src="js/fanzhuan.js"></script> -->
     8     <style type="text/css">
     9         /* entire container, keeps perspective */
    10         .flip-container {
    11             /*perspective: 1000;*/
    12         }
    13         /* flip the pane when hovered */
    14         .fli{
    15             transform: rotateY(180deg);
    16         }
    17  
    18         .flip-container, .front, .back {
    19              300px;
    20             height: 150px;
    21             /*float: left;*/
    22         }
    23  
    24         /* flip speed goes here */
    25         .flipper {
    26             transition: 1.6s;
    27             transform-style: preserve-3d;
    28             position: relative;
    29         }
    30  
    31         /* hide back of pane during swap */
    32         .front, .back {
    33             -webkit-backface-visibility: hidden;
    34             -moz-backface-visibility: hidden;   
    35             -ms-backface-visibility: hidden;     
    36             backface-visibility: hidden;
    37             position: absolute;
    38             top: 0;
    39             left: 0;
    40             cursor: pointer;
    41         }
    42  
    43         /* front pane, placed above back */
    44         .front {
    45             z-index: 2;
    46         }
    47  
    48         /* back, initially hidden pane */
    49         .back {
    50               -webkit-transform: rotateY(180deg);
    51               -moz-transform: rotateY(180deg);
    52               -ms-transform: rotateY(180deg);
    53         }
    54     </style>
    55 </head>
    56 <body>
    57 <div class="container">
    58     <div class="flip-container">
    59         <div class="flipper">
    60             <div class="front">
    61                 <!-- 前面内容 -->
    62                 <img src="images/11.jpg">
    63             </div>
    64             <div class="back">
    65                 <!-- 背面内容 -->
    66                 <img src="images/22.jpg">
    67             </div>
    68         </div>
    69     </div>
    70 </div>
    71 <script type="text/javascript">
    72     $('.container').one('click', '.flipper', function() {
    73         var $this = $(this);
    74         $this.addClass('fli');
    75     });
    76 </script>
    77 </body>
    78 </html>
  • 相关阅读:
    大学的最后时光---我的毕设日记(二)
    大学的最后时光---我的毕设日记(一)
    记公司同事的一次集体活动
    ssh框架基本原理
    plsql基本操作记录
    eclipse快捷键。
    面向对象的特性:封装继承多态
    设置label中的对齐方式
    pixmap和label设置图片自适应大小
    类的继承
  • 原文地址:https://www.cnblogs.com/hihao/p/7344508.html
Copyright © 2011-2022 走看看