@@ -2,26 +2,36 @@ $.fn.cndkbeforeafter = function(options) {
22
33 // Default settings
44 var settings = $ . extend ( {
5- mode : "hover " , /* hover,drag */
5+ mode : "drag " , /* hover,drag */
66 showText : true ,
77 beforeText : "BEFORE" ,
88 afterText : "AFTER" ,
9- seperatorWidth : "4px " ,
9+ seperatorWidth : "5px " ,
1010 seperatorColor : "#ffffff" ,
1111 hoverEffect : true ,
1212 } , options ) ;
1313
14- // One or multlple
15- if ( this . length > 0 )
14+ // This
15+ var element = this ;
16+
17+ // Wait for image(s) loading
18+ var img = new Image ( ) ;
19+ img . src = $ ( this ) . find ( ">div" ) . eq ( 0 ) . find ( 'div[data-type="before"] img' ) . attr ( "src" ) ;
20+ img . onload = function ( ) {
21+ runCndkBeforeAfter ( element ) ;
22+ } ;
23+
24+ // Run Plugin
25+ function runCndkBeforeAfter ( element )
1626 {
17- this . each ( function ( ) {
27+ element . each ( function ( ) {
1828
1929 // Get contents
20- var count = $ ( this ) . find ( ">div" ) . length ;
30+ var count = $ ( this ) . find ( ">div>div " ) . length ;
2131 if ( count <= 1 )
2232 {
2333 // No images
24- console . log ( "No before-after images found." ) ;
34+ console . log ( "(cndk.beforeafter.js) Error -> No before-after images found." ) ;
2535 }
2636
2737 // Continue
@@ -61,7 +71,6 @@ $.fn.cndkbeforeafter = function(options) {
6171 img2 . addClass ( "cndkbeforeafter-item-after" ) ;
6272 div2 . addClass ( "cndkbeforeafter-item-after-c" ) ;
6373 div2 . css ( "z-index" , "1" ) ;
64-
6574
6675 // Image-Item width/height
6776 var itemwidth = img1 . width ( ) ;
@@ -78,8 +87,8 @@ $.fn.cndkbeforeafter = function(options) {
7887 }
7988
8089 // Item
81- $ ( this ) . find ( ">div" ) . eq ( i ) . addClass ( "cndkbeforeafter-item" ) ;
82- $ ( this ) . find ( ">div" ) . eq ( i ) . css ( "height" , itemheight + "px" ) ;
90+ $ ( this ) . find ( ">div" ) . eq ( 0 ) . addClass ( "cndkbeforeafter-item" ) ;
91+ $ ( this ) . find ( ">div" ) . eq ( 0 ) . css ( "height" , itemheight + "px" ) ;
8392
8493 // Start position
8594 div1 . css ( "width" , "50%" ) ;
@@ -93,9 +102,9 @@ $.fn.cndkbeforeafter = function(options) {
93102
94103 if ( settings . mode == "hover" )
95104 {
96- $ ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . addClass ( "cndkbeforeafter-hover-transition" ) ;
105+ $ ( root ) . find ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . addClass ( "cndkbeforeafter-hover-transition" ) ;
97106 $ ( root ) . mousemove ( function ( e ) {
98- var parentOffset = $ ( this ) . parent ( ) . offset ( ) ;
107+ var parentOffset = $ ( this ) . offset ( ) ;
99108 var mouseX = parseInt ( ( e . pageX - parentOffset . left ) ) ;
100109 var mousePercent = ( mouseX * 100 ) / parseInt ( root . width ( ) ) ;
101110 $ ( this ) . find ( ".cndkbeforeafter-item-before-c" ) . css ( "width" , mousePercent + "%" ) ;
@@ -109,16 +118,42 @@ $.fn.cndkbeforeafter = function(options) {
109118 }
110119 else if ( settings . mode == "drag" )
111120 {
112- $ ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . addClass ( "cndkbeforeafter-drag-transition" ) ;
113- $ ( ".cndkbeforeafter-seperator" ) . draggable ( ) ;
121+ $ ( root ) . find ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . addClass ( "cndkbeforeafter-drag-transition" ) ;
114122 $ ( root ) . click ( function ( e ) {
115- var parentOffset = $ ( this ) . parent ( ) . offset ( ) ;
123+ var parentOffset = $ ( this ) . offset ( ) ;
116124 var mouseX = parseInt ( ( e . pageX - parentOffset . left ) ) ;
117125 var mousePercent = ( mouseX * 100 ) / parseInt ( root . width ( ) ) ;
118- $ ( this ) . find ( ".cndkbeforeafter-item-after -c" ) . css ( "width" , mousePercent + "%" ) ;
119- $ ( this ) . find ( ".cndkbeforeafter-item-before -c" ) . css ( "width" , ( 100 - mousePercent ) + "%" ) ;
126+ $ ( this ) . find ( ".cndkbeforeafter-item-before -c" ) . css ( "width" , mousePercent + "%" ) ;
127+ $ ( this ) . find ( ".cndkbeforeafter-item-after -c" ) . css ( "width" , ( 100 - mousePercent ) + "%" ) ;
120128 $ ( this ) . find ( ".cndkbeforeafter-seperator" ) . css ( "left" , mousePercent + "%" ) ;
121129 } ) ;
130+
131+ // Draggable seperator
132+ var isSliding = false ;
133+ var currentElement = ( root ) ;
134+ currentElement . find ( ".cndkbeforeafter-seperator" ) . on ( "mousedown" , function ( e ) {
135+ isSliding = true ;
136+ currentElement . find ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . removeClass ( "cndkbeforeafter-drag-transition" ) ;
137+ currentElement . mousemove ( function ( e ) {
138+ if ( isSliding ) {
139+ var parentOffset = currentElement . offset ( ) ;
140+ var mouseX = parseInt ( ( e . pageX - parentOffset . left ) ) ;
141+ var mousePercent = ( mouseX * 100 ) / parseInt ( root . width ( ) ) ;
142+ currentElement . find ( ".cndkbeforeafter-item-before-c" ) . css ( "width" , mousePercent + "%" ) ;
143+ currentElement . find ( ".cndkbeforeafter-item-after-c" ) . css ( "width" , ( 100 - mousePercent ) + "%" ) ;
144+ currentElement . find ( ".cndkbeforeafter-seperator" ) . css ( "left" , mousePercent + "%" ) ;
145+ }
146+ } ) ;
147+ } ) ;
148+
149+ // Release
150+ currentElement . find ( ".cndkbeforeafter-seperator" ) . on ( "mouseup" , function ( e ) {
151+ isSliding = false ;
152+ currentElement . find ( ".cndkbeforeafter-seperator, .cndkbeforeafter-item > div" ) . addClass ( "cndkbeforeafter-drag-transition" ) ;
153+ } ) ;
154+
155+ // Add visual to seperator
156+ currentElement . find ( ".cndkbeforeafter-seperator" ) . append ( "<div><span></span></div>" ) ;
122157 }
123158
124159 $ ( window ) . resize ( function ( ) {
0 commit comments