2015-09-17 4 views
0

Я пытаюсь реализовать http://jsfiddle.net/mgmilcher/8R7Xx/sho/ Отзывчивый HTML5-видеоматериал на моей домашней странице Drupal, но не увенчался успехом. Скопировав весь html-код по локальной странице на мою страницу - front.tpl.php, появится видео и текст, но, очевидно, не так, как хотелось бы. Как только я добавлю CSS в свой лист style.css, все исчезнет. Я добавил JS локально на сайт и в настоящее время имею его в файле theme.info со сценариями [] = 'name.js'. К сожалению, это, похоже, не влияет на результат. Моя тема основана на бутстрапе, который является тем же самым, что и в этом примере.Drupal Отзывчивый HTML5 Видео фона в DIV Modernizr

Неужели кто-нибудь реализовал этот пример на своем сайте Drupal? Я бы хотел, чтобы в качестве фонового видео содержалось только основное содержание, в котором я могу добавить другой контент - текст, над видео, и должен иметь возможность прокрутки для просмотра содержимого ниже видового экрана.

<div class="homepage-hero-module"> 
    <div class="video-container"> 
     <div class="title-container"> 
      <div class="headline"> 
        <h1>Welcome to our Company</h1> 

      </div> 
      <div class="description"> 
       <div class="inner">Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s</div> 
      </div> 
     </div> 
     <div class="filter"></div> 
     <video autoplay loop class="fillWidth"> 
      <source src="http://dfcb.github.io/BigVideo.js/vids/dock.mp4" type="video/mp4" />Your browser does not support the video tag. I suggest you upgrade your browser.</video> 
     <div class="poster hidden"> 
      <img src="http://www.videojs.com/img/poster.jpg" alt=""> 
     </div> 
    </div> 
</div> 

CSS-

.homepage-hero-module { 
    border-right: none; 
    border-left: none; 
    position: relative; 
} 
.no-video .video-container video, 
.touch .video-container video { 
    display: none; 
} 
.no-video .video-container .poster, 
.touch .video-container .poster { 
    display: block !important; 
} 
.video-container { 
    position: relative; 
    bottom: 0%; 
    left: 0%; 
    height: 100%; 
    width: 100%; 
    overflow: hidden; 
    background: #000; 
} 
.video-container .poster img { 
    width: 100%; 
    bottom: 0; 
    position: absolute; 
} 
.video-container .filter { 
    z-index: 100; 
    position: absolute; 
    background: rgba(0, 0, 0, 0.4); 
    width: 100%; 
} 
.video-container .title-container { 
    z-index: 1000; 
    position: absolute; 
    top: 35%; 
    width: 100%; 
    text-align: center; 
    color: #fff; 
} 
.video-container .description .inner { 
    font-size: 1em; 
    width: 45%; 
    margin: 0 auto; 
} 
.video-container .link { 
    position: absolute; 
    bottom: 3em; 
    width: 100%; 
    text-align: center; 
    z-index: 1001; 
    font-size: 2em; 
    color: #fff; 
} 
.video-container .link a { 
    color: #fff; 
} 
.video-container video { 
    position: absolute; 
    z-index: 0; 
    bottom: 0; 
} 
.video-container video.fillWidth { 
    width: 100%; 
} 

JS

/** Document Ready Functions **/ 
/********************************************************************/ 

$(document).ready(function() { 

    // Resive video 
    scaleVideoContainer(); 

    initBannerVideoSize('.video-container .poster img'); 
    initBannerVideoSize('.video-container .filter'); 
    initBannerVideoSize('.video-container video'); 

    $(window).on('resize', function() { 
     scaleVideoContainer(); 
     scaleBannerVideoSize('.video-container .poster img'); 
     scaleBannerVideoSize('.video-container .filter'); 
     scaleBannerVideoSize('.video-container video'); 
    }); 

}); 

/** Reusable Functions **/ 
/********************************************************************/ 

function scaleVideoContainer() { 

    var height = $(window).height(); 
    var unitHeight = parseInt(height) + 'px'; 
    $('.homepage-hero-module').css('height',unitHeight); 

} 

function initBannerVideoSize(element){ 

    $(element).each(function(){ 
     $(this).data('height', $(this).height()); 
     $(this).data('width', $(this).width()); 
    }); 

    scaleBannerVideoSize(element); 

} 

function scaleBannerVideoSize(element){ 

    var windowWidth = $(window).width(), 
     windowHeight = $(window).height(), 
     videoWidth, 
     videoHeight; 

    console.log(windowHeight); 

    $(element).each(function(){ 
     var videoAspectRatio = $(this).data('height')/$(this).data('width'), 
      windowAspectRatio = windowHeight/windowWidth; 

     if (videoAspectRatio > windowAspectRatio) { 
      videoWidth = windowWidth; 
      videoHeight = videoWidth * videoAspectRatio; 
      $(this).css({'top' : -(videoHeight - windowHeight)/2 + 'px', 'margin-left' : 0}); 
     } else { 
      videoHeight = windowHeight; 
      videoWidth = videoHeight/videoAspectRatio; 
      $(this).css({'margin-top' : 0, 'margin-left' : -(videoWidth - windowWidth)/2 + 'px'}); 
     } 

     $(this).width(videoWidth).height(videoHeight); 

     $('.homepage-hero-module .video-container video').addClass('fadeIn animated'); 


    }); 
} 

Я установил модуль модернизации, а также включены в modernizr.min.js моих сайтов/все/библиотеки/папки Modernizr

ответ

0

Я не знаю наверняка, но вы гарантировали, что дополнительные файлы js хранятся внутри sites/all/themes/THEME_NAME/js

Поскольку Drupal не запускает пользовательские js, если он не хранится там для каждой темы, в которой он нужен.

0

По крайней мере, вы должны обернуть вам JavaScript с JQuery имен, например:

(function ($) { 
    Drupal.behaviors.myModuleBehavior = { 
    attach: function (context, settings) { 
     $('input.myCustomBehavior', context).once('myCustomBehavior', function() { 
     // Apply the myCustomBehaviour effect to the elements only once. 
     }); 
    } 
    }; 
})(jQuery); 

«Drupal.behaviors.myModuleBehavior» и другой дополнительный код есть из АЯКС соображений.

Для получения дополнительной информации см. Документ The Drupal JavaScript API.

Смежные вопросы