Вход Регистрация
Файл: src/public/plugins/hero/js/main.js
Строк: 185
<?php
jQuery
(document).ready(function($){
    
//check media query
    
var mediaQuery window.getComputedStyle(document.querySelector('.cd-background-wrapper'), '::before').getPropertyValue('content').replace(/"/g, '').replace(/'/g, ""),
        //define store some initial variables
        halfWindowH = $(window).height()*0.5,
        halfWindowW = $(window).width()*0.5,
        //define a max rotation value (X and Y axises)
        maxRotationY = 5,
        maxRotationX = 3,
        aspectRatio;

    //detect if hero <img> has been loaded and evaluate its aspect-ratio
    $('.cd-floating-background').find('img').eq(0).load(function() {
        aspectRatio = $(this).width()/$(this).height();
          if( mediaQuery == 'web' && $('html').hasClass('preserve-3d') ) initBackground();
    }).each(function() {
        //check if image was previously load - if yes, trigger load event
          if(this.complete) $(this).load();
    });
    
    //detect mouse movement
    $('.cd-background-wrapper').on('mousemove', function(event){
        if( mediaQuery == 'web' && $('html').hasClass('preserve-3d') ) {
            window.requestAnimationFrame(function(){
                moveBackground(event);
            });
        }
    });

    //on resize - adjust .cd-background-wrapper and .cd-floating-background dimentions and position
    $(window).on('resize', function(){
        mediaQuery = window.getComputedStyle(document.querySelector('.cd-background-wrapper'), '::before').getPropertyValue('content').replace(/"
/g'').replace(/'/g, "");
        if( mediaQuery == '
web' && $('html').hasClass('preserve-3d') ) {
            window.requestAnimationFrame(function(){
                halfWindowH = $(window).height()*0.5,
                halfWindowW = $(window).width()*0.5;
                initBackground();
            });
        } else {
            $('
.cd-background-wrapper').attr('style', '');
            $('
.cd-floating-background').attr('style', '').removeClass('is-absolute');
        }
    });

    function initBackground() {
        var wrapperHeight = Math.ceil(halfWindowW*2/aspectRatio), 
            proportions = ( maxRotationY > maxRotationX ) ? 1.1/(Math.sin(Math.PI / 2 - maxRotationY*Math.PI/180)) : 1.1/(Math.sin(Math.PI / 2 - maxRotationX*Math.PI/180)),
            newImageWidth = Math.ceil(halfWindowW*2*proportions),
            newImageHeight = Math.ceil(newImageWidth/aspectRatio),
            newLeft = halfWindowW - newImageWidth/2,
            newTop = (wrapperHeight - newImageHeight)/2;

        //set an height for the .cd-background-wrapper
        $('
.cd-background-wrapper').css({
            '
height' : wrapperHeight,
        });
        //set dimentions and position of the .cd-background-wrapper        
        $('
.cd-floating-background').addClass('is-absolute').css({
            '
left' : newLeft,
            '
top' : newTop,
            '
width' : newImageWidth,
        });
    }

    function moveBackground(event) {
        var rotateY = ((-event.pageX+halfWindowW)/halfWindowW)*maxRotationY,
            rotateX = ((event.pageY-halfWindowH)/halfWindowH)*maxRotationX;

        if( rotateY > maxRotationY) rotateY = maxRotationY;
        if( rotateY < -maxRotationY ) rotateY = -maxRotationY;
        if( rotateX > maxRotationX) rotateX = maxRotationX;
        if( rotateX < -maxRotationX ) rotateX = -maxRotationX;

        $('
.cd-floating-background').css({
            '
-moz-transform': 'rotateX(' + rotateX + 'deg' + 'rotateY(' + rotateY + 'deg' + 'translateZ(0)',
            '
-webkit-transform': 'rotateX(' + rotateX + 'deg' + 'rotateY(' + rotateY + 'deg' + 'translateZ(0)',
            '
-ms-transform': 'rotateX(' + rotateX + 'deg' + 'rotateY(' + rotateY + 'deg' + 'translateZ(0)',
            '
-o-transform': 'rotateX(' + rotateX + 'deg' + 'rotateY(' + rotateY + 'deg' + 'translateZ(0)',
            '
transform': 'rotateX(' + rotateX + 'deg' + 'rotateY(' + rotateY + 'deg' + 'translateZ(0)',
        });
    }
});

/*     Detect "transform-style: preserve-3d" support, or update csstransforms3d for IE10 ? #762
    https://github.com/Modernizr/Modernizr/issues/762 */
(function getPerspective(){
  var element = document.createElement('
p'),
      html = document.getElementsByTagName('
html')[0],
      body = document.getElementsByTagName('
body')[0],
      propertys = {
        '
webkitTransformStyle':'-webkit-transform-style',
        '
MozTransformStyle':'-moz-transform-style',
        '
msTransformStyle':'-ms-transform-style',
        '
transformStyle':'transform-style'
      };

    body.insertBefore(element, null);

    for (var i in propertys) {
        if (element.style[i] !== undefined) {
            element.style[i] = "preserve-3d";
        }
    }

    var st = window.getComputedStyle(element, null),
        transform = st.getPropertyValue("-webkit-transform-style") ||
                    st.getPropertyValue("-moz-transform-style") ||
                    st.getPropertyValue("-ms-transform-style") ||
                    st.getPropertyValue("transform-style");

    if(transform!=='
preserve-3d'){
      html.className += ' 
no-preserve-3d';
    } else {
        html.className += ' 
preserve-3d';
    }
    document.body.removeChild(element);

})();
?>
Онлайн: 1
Реклама