Donc le problème que je rencontre est que je veux un effet d'image de fond fixe tout en gardant l'image de fond assez large pour remplir un conteneur. Malheureusement, la manière CSS, en utilisant background-attachment:fixed;
positionnera seulement l'image par rapport à la fenêtre. Cela crée un problème sur les tailles d'écran qui ont des proportions d'aspect radicalement différentes de celles de l'image d'arrière-plan, ce qui provoque un écrêtage indésirable de l'image d'arrière-plan (qui est une image d'une personne).Choppy JavaScript Animation de background-position-y
La solution que je suis arrivé à l'aide actuellement background-size: contain
pour empêcher l'écrêtage de l'image sur toutes les tailles d'écran tout en simulant la background-attachment: fixed
avec JavaScript en animant background-position-y
sur parchemin. Le problème est que si je clique ensuite sur un bouton qui provoque une animation scrollTop
sur la page, le paramètre background-position-y
de l'image est saccadé.
Une idée de comment éviter ce saccades dans l'animation?
// Banner scroll function
var scrollTop = $(window).scrollTop();
var banner = $('.hero-banner').css('background-position-y',scrollTop+'px');
var debounced_fixBG = function(){
var newScrollTop = $(window).scrollTop();
banner.css('background-position-y',newScrollTop+'px');
scrollTop = newScrollTop;
};
$(window).scroll(debounced_fixBG);
$('.scroll-down').on('click',function(){
$('html,body').animate({
easing: 'swing',
scrollTop: $('#anchor').offset().top
},2000);
});
.hero-banner {
background-image: url('http://londonprogressivejournal.com/site_images/741.jpg');
height: 383px;
background-repeat: no-repeat;
background-attachment: contain;
background-position-y: top;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<button class="scroll-down">
Scroll Down
</button>
<div class="hero-banner">
</div>
<br>
<br>
<br>
<br>
<br>
<a id="anchor">Anchor</a>
Pourquoi pas 'background-attachment: fixed' ET' background-size: contain'? – ezakto
Cela provoque le découpage de l'image lorsque je fais 'background-attachment: fixed'. Dans l'image de test, vous pouvez voir si vous rétrécissez l'iframe, ses cheveux sont coupés. –
Vous voulez dire que ses cheveux sont coupés quand le parchemin est 0? Qu'en est-il de 'background-attachment: fixed; background-position-y: [hauteur de l'élément supérieur]; background-size: contain'? Je pense que je n'ai pas le problème – ezakto