Ho un po 'di jQuery che seleziona un'immagine casuale da una cartella e la dissolve in un div su ogni caricamento di pagina. Il problema è che il div del menu appena al di sotto dell'immagine salta nello spazio vuoto dell'immagine prima che l'immagine si dissolva.jQuery: conserva una dimensione div reattiva per un contenitore di immagini prima della dissolvenzaIn
Qual è il modo migliore per mantenere il div dell'immagine mantenendo l'altezza prima che l'immagine si dissolva? CSS per "riempire" il div prima che l'immagine si dissolva? O carica uno spazio vuoto prima che l'immagine casuale si dissolva? (Tutte le immagini casuali hanno la stessa dimensione di 1000 px larghezza x 250 px di altezza).
Ho bisogno di mantenere la reattività del design, quindi è possibile che la soluzione migliore sia precaricare un jpg vuoto e quindi dissolvere l'immagine casuale.
Non ho inserito le matrici di immagine e didascalia per semplicità, ma questa funzione emette l'immagine con la classe .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;
}
Mettere un contenitore intorno all'immagine con un'altezza fissa. Quando l'immagine si affievolisce, la modifica dell'altezza non causerà problemi di flusso. Le dimensioni fisse del contenitore dovrebbero prevenire i problemi di flusso. – Lowkase
Grazie, ma questo rompe la reattività del design. – markratledge
Cosa c'è di sensibile qui? Il tag immagine sopra ha dimensioni specificate in unità px implicite (nel codice HTML). Gli elementi di layout reattivi sono in genere specificati in% o em. In che modo l'immagine dovrebbe cambiare quando il browser viene ridimensionato? –