|
24 | 24 |
|
25 | 25 | var helpers = {
|
26 | 26 | vendorPrefix: (function() {
|
27 |
| - var ua = navigator.userAgent, |
28 |
| - prefix = ''; |
| 27 | + var prefixes = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/, |
| 28 | + style = document.getElementsByTagName('script')[0].style, |
| 29 | + prefix = '', |
| 30 | + prop; |
29 | 31 |
|
30 |
| - if (/WebKit/.test(ua)) { |
31 |
| - prefix = '-webkit-'; |
32 |
| - } else if (/Firefox/.test(ua)) { |
33 |
| - prefix = '-moz-'; |
34 |
| - } else if (window.opera) { |
35 |
| - prefix = '-o-'; |
36 |
| - } else if (/MSIE/.test(ua)) { |
37 |
| - prefix = '-ms-'; |
| 32 | + for (prop in style) { |
| 33 | + if (prefixes.test(prop)) { |
| 34 | + prefix = prop.match(prefixes)[0]; |
| 35 | + break; |
| 36 | + } |
38 | 37 | }
|
39 | 38 |
|
40 |
| - return prefix; |
| 39 | + if ('WebkitOpacity' in style) { prefix = 'Webkit'; } |
| 40 | + if ('KhtmlOpacity' in style) { prefix = 'Khtml'; } |
| 41 | + |
| 42 | + return function(property) { |
| 43 | + return prefix + (prefix.length > 0 ? property.charAt(0).toUpperCase() + property.slice(1) : property); |
| 44 | + }; |
41 | 45 | }())
|
42 | 46 | };
|
43 | 47 |
|
|
437 | 441 | var $elem = $('#scroll-property-transform-scroller').stellar('destroy').stellar({
|
438 | 442 | hideDistantElements: false,
|
439 | 443 | scrollProperty: 'transform'
|
440 |
| - }).css(helpers.vendorPrefix + 'transform', 'translateY(-20px)'); |
| 444 | + }); |
| 445 | + |
| 446 | + $elem[0].style[helpers.vendorPrefix('transform')] = 'translateY(-20px)'; |
441 | 447 |
|
442 | 448 | setTimeout(function() {
|
443 | 449 | strictEqual($('#scroll-property-transform .ratio--1').css('top'), '40px', 'should support negative ratios');
|
444 | 450 | strictEqual($('#scroll-property-transform .ratio-0-5').css('top'), '10px', 'should support ratios between 0 and 1');
|
445 | 451 | strictEqual($('#scroll-property-transform .ratio-1').css('top'), '0px', 'should support ratios of 1');
|
446 | 452 | strictEqual($('#scroll-property-transform .ratio-2').css('top'), '-20px', 'should support ratios greater than 1');
|
447 | 453 |
|
448 |
| - $elem.stellar('destroy').css(helpers.vendorPrefix + 'transform', ''); |
| 454 | + $elem.stellar('destroy')[0].style[helpers.vendorPrefix('transform')] = 'none'; |
449 | 455 | start();
|
450 | 456 | }, 20);
|
451 | 457 | });
|
|
454 | 460 | var $elem = $('#scroll-property-transform-scroller').stellar('destroy').stellar({
|
455 | 461 | hideDistantElements: false,
|
456 | 462 | scrollProperty: 'transform'
|
457 |
| - }).css(helpers.vendorPrefix + 'transform', 'translateX(-20px)'); |
| 463 | + }); |
| 464 | + |
| 465 | + $elem[0].style[helpers.vendorPrefix('transform')] = 'translateX(-20px)'; |
458 | 466 |
|
459 | 467 | setTimeout(function() {
|
460 | 468 | strictEqual($('#scroll-property-transform .ratio--1').css('left'), '40px', 'should support negative ratios');
|
461 | 469 | strictEqual($('#scroll-property-transform .ratio-0-5').css('left'), '10px', 'should support ratios between 0 and 1');
|
462 | 470 | strictEqual($('#scroll-property-transform .ratio-1').css('left'), '0px', 'should support ratios of 1');
|
463 | 471 | strictEqual($('#scroll-property-transform .ratio-2').css('left'), '-20px', 'should support ratios greater than 1');
|
464 | 472 |
|
465 |
| - $elem.stellar('destroy').css(helpers.vendorPrefix + 'transform', ''); |
| 473 | + $elem.stellar('destroy')[0].style[helpers.vendorPrefix('transform')] = 'none'; |
466 | 474 | start();
|
467 | 475 | }, 20);
|
468 | 476 | });
|
|
476 | 484 | }).scrollTop(20).scrollLeft(0);
|
477 | 485 |
|
478 | 486 | setTimeout(function() {
|
479 |
| - strictEqual($('#position-absolute .ratio--1').css(helpers.vendorPrefix + 'transform').substr(22,2), '40', 'should support negative ratios'); |
480 |
| - strictEqual($('#position-absolute .ratio-0-5').css(helpers.vendorPrefix + 'transform').substr(22,2), '10', 'should support ratios between 0 and 1'); |
481 |
| - strictEqual($('#position-absolute .ratio-1').css(helpers.vendorPrefix + 'transform').substr(22,1), '0', 'should support ratios of 1'); |
482 |
| - strictEqual($('#position-absolute .ratio-2').css(helpers.vendorPrefix + 'transform').substr(22,3), '-20', 'should support ratios greater than 1'); |
| 487 | + strictEqual(getComputedStyle($('#position-absolute .ratio--1')[0])[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[5], '40', 'should support negative ratios'); |
| 488 | + strictEqual(getComputedStyle($('#position-absolute .ratio-0-5')[0])[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[5], '10', 'should support ratios between 0 and 1'); |
| 489 | + strictEqual(getComputedStyle($('#position-absolute .ratio-1')[0])[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[5], '0', 'should support ratios of 1'); |
| 490 | + strictEqual(getComputedStyle($('#position-absolute .ratio-2')[0])[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[5], '-20', 'should support ratios greater than 1'); |
483 | 491 |
|
484 | 492 | $(window).stellar('destroy').scrollTop(0).scrollLeft(0);
|
485 | 493 | start();
|
|
493 | 501 | }).scrollTop(0).scrollLeft(20);
|
494 | 502 |
|
495 | 503 | setTimeout(function() {
|
496 |
| - strictEqual($('#position-absolute .ratio--1').css(helpers.vendorPrefix + 'transform').substr(19,2), '40', 'should support negative ratios'); |
497 |
| - strictEqual($('#position-absolute .ratio-0-5').css(helpers.vendorPrefix + 'transform').substr(19,2), '10', 'should support ratios between 0 and 1'); |
498 |
| - strictEqual($('#position-absolute .ratio-1').css(helpers.vendorPrefix + 'transform').substr(19,1), '0', 'should support ratios of 1'); |
499 |
| - strictEqual($('#position-absolute .ratio-2').css(helpers.vendorPrefix + 'transform').substr(19,3), '-20', 'should support ratios greater than 1'); |
| 504 | + strictEqual($('#position-absolute .ratio--1')[0].style[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[4], '40', 'should support negative ratios'); |
| 505 | + strictEqual($('#position-absolute .ratio-0-5')[0].style[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[4], '10', 'should support ratios between 0 and 1'); |
| 506 | + strictEqual($('#position-absolute .ratio-1')[0].style[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[4], '0', 'should support ratios of 1'); |
| 507 | + strictEqual($('#position-absolute .ratio-2')[0].style[helpers.vendorPrefix('transform')].match(/(-?[0-9]+)/g)[4], '-20', 'should support ratios greater than 1'); |
500 | 508 |
|
501 | 509 | $(window).stellar('destroy').scrollTop(0).scrollLeft(0);
|
502 | 510 | start();
|
|
0 commit comments