【方法】jQuery無插件實現 鼠標拖動切換圖片/內容 功能

 

前言css

我就想隨便叨逼叨幾句,愛看就看幾句,不愛看就直接跳過看正文就好啦~spa

這個方法是仿寫頁面時我本身研究出來,可能有比我更簡單的方法。設計

但我無論,由於我沒查我不知道,我就以爲個人最好啦,耶耶耶~code

 


  

效果圖對象

 

 


  

功能描述blog

一、鼠標按住移動必定距離,內容隨之進行切換。同步

二、開始和結尾處不能再拖動了。it

三、下方的控制條隨之變換,進行切換指示。io

 


  

解決思路event

一、利用jQuery監聽鼠標移動距離

二、內容浮動排成一列,長度是父容器寬度的3倍

三、當移動距離超過必定長度時,內容移動一倍父容器寬度的距離

四、內容移動經過定位左右移動來實現

五、下方控制條3個小白點是固定的,一個大白點包含一個黑點的總體(即選中點)隨內容進行同步移動,來實現視覺上切換指示

 


 

代碼演示

一、HTML部分

 1 <div class="ppt">
 2     <div id="ppt-contents">
 3         <div class="ppt-item">
 4             <div class="item">
 5                 <div class="container-icon">
 6                     <i class="fa fa-quote-right"></i>
 7                 </div>
 8                 <p>跟覓未合做很愉快,咱們以爲覓未是一家很專業的品牌設計公司,這個團隊很是棒,有激情、有創造力、有執行力,常常給咱們帶來不少好的IDEA,是咱們合做過的供應商中設計水平比較高,很是值得信任的一家。</p>
 9                 <h4 class="quote-author">東阿市場部 / 劉經理 </h4>
10             </div>
11         </div>
12         <div class="ppt-item">
13             <div class="item">
14                 <div class="container-icon">
15                     <i class="fa fa-quote-right"></i>
16                 </div>
17                 <p>覓未是一家很用心的品牌設計公司,相比以前合做過的一些供應商,覓未的工做態度認真主動,項目進度控制嚴格,即使咱們沒有要求,他們也會主動作多款不一樣方向的設計稿供咱們選擇,與覓未合做咱們很放心。</p>
18                 <h4 class="quote-author">雀巢市場部 / 張經理 </h4>
19             </div>
20         </div>
21         <div class="ppt-item">
22             <div class="item">
23                 <div class="container-icon">
24                     <i class="fa fa-quote-right"></i>
25                 </div>
26                 <p>咱們是經過一次比稿選擇了覓未創意,他們除了設計能力突出以外,還有本身的技術研發團隊,經營模式融合了互聯網的服務理念,溝通流程扁平化,服務態度誠懇,執行效率高,是一家性價比很高的設計公司。</p>
27                 <h4 class="quote-author">伊利市場部 / 王經理 </h4>
28             </div>
29         </div>
30     </div>
31 </div>
32 <div class="ppt-controls">
33     <div class="dots">
34         <div class="dot"></div>
35         <div class="dot"></div>
36         <div class="dot"></div>
37         <div id="select-dot">
38             <div id="black-dot"></div>
39         </div>
40     </div>

 

二、CSS部分

 1 //最外面的父容器,至關於一個顯示口
 2 .ppt {
 3     width: 100%;
 4     height: 100%;
 5     //要隱藏超出的部分
 6     overflow: hidden;
 7     cursor: pointer;
 8     position: relative;
 9 }
10 
11 .ppt-item {
12     //子元素左浮動,使其排成一列
13     float: left;
14     color: #FFFFFF;
15     width: 33.3%;
16     //使文本沒法選中
17     user-select: none;
18 }
19 
20 #contact .container-icon {
21     margin-top: 10px;
22     font-size: 38px;
23 }
24 
25 #contact .dark-bg p {
26     margin: 25px 100px;
27     font-size: 16px;
28     line-height: 1.8;
29 }
30 
31 #contact .ppt-controls {
32     margin-top: 10px;
33 }
34 
35 .ppt-controls .dots {
36     //相對定位,使選中的點能夠相對他進行移動
37     position: relative;
38     width: 72px;
39     margin: 0 auto;
40     text-align: center;
41 }
42 
43 .ppt-controls .dot {
44     width: 8px;
45     height: 8px;
46     background-color: #FFFFFF;
47     border-radius: 5px;
48     float: left;
49     margin: 2px 8px;
50 }
51 
52 #select-dot{
53     width: 14px;
54     height: 14px;
55     background-color: #FFFFFF;
56     border-radius: 6px;
57     margin-left:8px ;
58     //相對定位,使其能夠左右移動
59     position: relative;
60     left:0;
61     //快速轉化,效果更好
62     transition: all 0.001s ease;
63 }
64 
65 #black-dot{
66     width: 8px;
67     height: 8px;
68     border-radius: 4px;
69     background-color: #4C424E;
70     margin: 0 3px;
71     position: absolute;
72     top: 3px;
73 }
74             

 

三、jQuery部分

 1 var x = 0
 2 $(".ppt").mousedown(function(event) {
 3     //獲取鼠標按下時的x方向位置
 4     x = event.pageX;
 5     $(".ppt").mouseup(function(event) {
 6         //獲取鼠標擡起時的x方向位置
 7         var newx = event.pageX;
 8          //二者相減獲得鼠標移動距離
 9         var changex = newx - x
10          //獲取內容相對於父容器的左偏移距離 
11         var left = $("#ppt-contents").position().left;
12           //獲取選中點的左偏移距離 
13         var dleft = $("#select-dot").position().left;
14          //獲取父容器的寬度
15         var width = $(".ppt").width();
16                 //判斷移動正負和大小,來決定對象移動方向的距離
17                 if(changex > 60) {
18             var newleft = left + width;
19             var newdleft = dleft - 24;
20             if(newleft > 0) {
21                 newleft = 0;
22                 newdleft = 0;
23             };
24             $("#ppt-contents").css("left", newleft);
25             $("#select-dot").css("left", newdleft);
26         };
27         if(changex < -60) {
28             var newleft = left - width
29             var newdleft = dleft + 24;
30             if(newleft < -width * 2) {
31                 newleft = -width * 2;
32                 newdleft = 48;
33             };
34             $("#ppt-contents").css("left", newleft);
35             $("#select-dot").css("left", newdleft);
36         };
37     });
38 });        
39     
相關文章
相關標籤/搜索