У меня есть немного jQuery, который выбирает случайное изображение из папки и затемняет его внутри div при каждой загрузке страницы. Проблема в том, что div меню чуть ниже изображения прыгает в пустое пространство изображения до того, как изображение исчезнет.
Каков наилучший способ сохранить высоту div изображения до того, как изображение исчезнет? CSS для «заполнения» div до того, как изображение исчезнет? Или загрузить пустой .jpg до того, как случайное изображение исчезнет? (Все случайные изображения имеют одинаковый размер: 1000 пикселей в ширину и 250 пикселей в высоту).
Мне нужно сохранить отзывчивость дизайна, поэтому, возможно, лучшим решением будет предварительно загрузить пустой jpg, а затем добавить случайное изображение.
Я не включил массивы изображений и заголовков для простоты, но эта функция выводит изображение с классом .randomheader:
jQuery:
<script>
$(document).ready(function(){
$('.randomheader').randomImage();
});
</script>
<script>
(function($){
$.randomImage = {
defaults: {
path: '/fullpathhere/headerimages/',
myImages: ['image1.jpg' , 'image2.jpg' , 'image3.jpg'],
myCaptions: ['Caption 1' , 'Caption 2' , 'Caption 3']
}
}
$.fn.extend({
randomImage:function(config) {
var config = $.extend({}, $.randomImage.defaults, config);
return this.each(function() {
var imageNames = config.myImages;
var imageCaptions = config.myCaptions;
var imageNamesSize = imageNames.length;
var randomNumber = Math.floor(Math.random()*imageNamesSize);
var displayImage = imageNames[randomNumber];
var displayCaption = imageCaptions[randomNumber];
var fullPath = config.path + displayImage;
// Load the random image
$(this).attr( { src: fullPath, alt: displayImage }).fadeIn('slow');
// Load the caption
$('#caption').html(displayCaption).fadeIn('slow');
});
}
});
</script>
HTML:
<header id="masthead" class="site-header" role="banner">
<!-- random image loads in the div below -->
<img src="" class="randomheader" width="1000" height="250" alt="header image">
<div id="caption"></div>
<!-- The nav div below jumps up into the div above -->
<nav id="site-navigation" class="main-navigation" role="navigation">
// nav here
</nav>
CSS:
.randomheader {
margin-top: 24px;
margin-top: 1.714285714rem;
}
img.randomheader {
max-width: 100%;
height: auto;
display: none;
}
display:none
на изображении, как насчет того, чтобы начать изображение с непрозрачностью0
, а неdisplay:none
, а затем использоватьfadeIn()
илиanimate({opacity:1})
? - person Matt Coughlin   schedule 15.04.2013display:none
изimg.randomheader
в CSS и измените строку jQuery на$(this).attr( { src: fullPath, alt: displayImage }).hide().fadeIn('slow');
. Это помогает? - person Dom   schedule 16.04.2013