Je veux que l'en-tête div (comme une bannière) ne soit corrigé que lorsque l'en-tête tente de sortir de l'écran lorsque l'utilisateur fait défiler l'écran vers le bas. Est-il possible de se passer de JS? Par exemple, dans la chronologie de Facebook, si nous faisons défiler une bannière, une bannière apparaît dès que l'en-tête de la page disparaît de l'écran. Ma question est, est-il possible de faire avec seulement CSS?
Au cas où cela ne serait pas assez clair, je veux savoir si un style "position: fixed" peut être appliqué de manière conditionnelle, comme lorsque 80px de la page est défilé.
Oui. Vous pouvez le faire avec seulement CSS. Cela se fait en ayant un en-tête de défilement normal, placé au-dessus d'un en-tête fixe, qui apparaît uniquement après que l'en-tête normal a défilé au-dessus de celui-ci. C'est un peu comment http://techcrunch.com le fait.
Update [31/10/2013] - Techcrunch a récemment changé d'interface utilisateur pour que vous ne puissiez plus le voir ici!
Regardez cette démo: http://jsfiddle.net/WDnyb/2/
HTML
<div class="header">Header</div>
<div class="outer">
<span class="banner">LOGO</span>
<div class="header">Header</div>
</div>
<div class="content">Content</div>
CSS pertinentes
.header {
width: 100%;
position: fixed;
top: 0;
bottom: auto;
}
.outer {
position: relative;
height: 100px;
}
.outer .header {
position: absolute;
bottom: 0;
z-index: 2;
top: auto;
}
.content {
height: 1500px;
margin-top: 100px;
}
Cela peut maintenant être fait correctement et sans javascript avec position: sticky
.
Reportez-vous à https://css-tricks.com/position-sticky-2/ pour obtenir des exemples.
avertissement: au moment de la rédaction, il n’est pas supporté par IE11, opera mini, et le navigateur de stock d'Android: https://caniuse.com/#feat=css-sticky
Ce n'est pas possible d'utiliser css. Vous pouvez faire en utilisant JavaScript ou jQuery. Parce qu'il faut des conditions.
Html----included my content within
<header1>
..............
</header1>
JS
<script>
$(document).ready(function() {
var $header1 = $("header1"),
$clone = $header1.before($header1.clone().addClass("clone"));
$(window).on("scroll", function() {
var fromTop = $("body").scrollTop();
$('body').toggleClass("down", (fromTop > 200));
});
});
</script>
j'ai utilisé le script ci-dessus pour faire un en-tête fixe, cela fonctionne très bien dans googlechrome pas dans Firefox .....