Comment utiliser le nouveau apposer plugin de twitter bootstrap 2.1.0?
Le bootstrap, documentation sur ce sujet est un peu confus pour moi. Je veux obtenir le même type de comportement dans les docs avec l'affixe barre de navigation: La barre de navigation est en dessous d'un paragraphe d'une page de titre, et sur le défilement vers le bas, il devrait d'abord défiler l'écran jusqu'à atteindre le haut de la page, puis s'en tenir là fixes pour plus de scrolldowns.
Comme jsFiddle ne fonctionne pas avec la barre de navigation concept, j'ai mis en place une page séparée pour l'utilisation comme un exemple minimal: http://i08fs1.ira.uka.de/~s_drr/navbar.html
- Je utiliser ce que ma barre de navigation:
<div class="navbar affix-top" data-spy="affix" data-offset-top="50">
<div class="navbar-inner">
<div class="container">
<div class="span12">
<a class="brand" href="#">My Brand</a>
This is my navbar.
</div>
</div> <!-- container -->
</div> <!-- navbar-inner -->
</div> <!-- navbar -->
Je thinkg je voudrais data-offset-top
de la valeur 0 (depuis la barre doit "coller" à la très haut", mais avec 50 il y a au moins un certain effet regardable.
Si mettre aussi le code javascript en place:
<script>
$(document).ready (function (){
$(".navbar").affix ();
});
</script>
Toute aide appréciée.
- êtes-vous essayer d'utiliser apposer (au rez-de-nav-bar de votre page?
- oui, le script javascript dans le poste ou dans l'exemple: i08fs1.ira.uka.de/~s_drr/navbar.html
- pourquoi n'utilisez-vous pas utiliser
.navbar-fixed-top
au lieu d'utiliser apposer()? - parce que c'est pas ce que je veux.
.navbar-fixed-top
serait de placer la barre de navigation en haut tous les temps. Je veux un en-tête de page au-DESSUS de la barre de navigation, et lorsque le défilement vers le bas (et donc de la barre de navigation serais prêt à parier que défile loin), il devrait s'en tenir à la haut - ensuite, et seulement ensuite. Bootstrap docs utilisé les mêmes mécanismes comme un subnav dans leur précédent docs, malheureusement, ils l'ont enlevé pour le 2.1.0 docs. - Pour l'un de nidification de votre Javascript est incorrect.
)};
devrait être});
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire, et je crois que j'ai trouvé une meilleure solution.
Ne prennent la peine de préciser
data-offset-top
dans votre code HTML. Au lieu de cela, le spécifier lorsque vous appelez.affix()
:L'avantage ici est que vous pouvez changer la mise en page de votre site sans avoir besoin de mettre à jour le
data-offset-top
attribut. Depuis cette utilise le réel de la position calculée de l'élément, il empêche également des incohérences avec les navigateurs qui en rendent l'élément à une position légèrement différente.Vous aurez toujours besoin de serrage de l'élément vers le haut avec les CSS. En outre, j'ai dû mettre
width: 100%
sur l'élément nav depuis.nav
éléments avecposition: fixed
se conduisent mal pour une raison:Une dernière chose: Lorsque fixé un élément devient fixe, son élément ne prend plus de place sur la page, résultant dans les éléments ci-dessous à "sauter". Pour éviter cette laideur, j'enveloppe la barre de navigation dans un
div
dont la hauteur j'ai mis à l'être égale à la barre de navigation au moment de l'exécution:.
Voici l'obligation de jsFiddle de le voir en action.
bottom: 100%;
à coller sur le bas de la page.bottom: 0;
et vous aurez besoin de mettre enmargin-bottom: 0;
ainsi. Mais je ne suis pas vraiment sûr de savoir comment vous voulez qu'il se comporte; un collant pied de page est un concept étrange.#nav
a rembourrage, il ne suffit pas d'utiliser$("#nav").height()
de l'enveloppe de hauteur. J'ai dû le remplacer par$("#nav").outerHeight()
Juste mis en œuvre pour la première fois, et voici ce que j'ai trouvé.
La
data-offset-top
valeur est le nombre de pixels que vous devez faire défiler l'écran pour que l'apposition de l'effet de prendre place. Dans votre cas, une fois50px
défile, la classe sur votre article est modifié à partir de.affix-top
à.affix
. Vous auriez probablement souhaitez définirdata-offset-top
à propos de130px
dans votre cas d'utilisation.Une fois ce changement de classe se produit, vous devez positionner votre élément en css par style le positionnement d'une classe de
.affix
. Bootstrap 2.1 définit déjà.affix
commeposition: fixed;
donc tout ce que vous devez faire est d'ajouter vos propres valeurs de position.Exemple:
.navbar
classe est préservée - êtes-vous sûr?Pour résoudre ce problème j'ai modifié l'affixe plugin pour émettre un jQuery événement lorsqu'un objet est apposée ou unaffixed.
Voici le pull request: https://github.com/twitter/bootstrap/pull/4712
Et le code: https://github.com/corbinu/bootstrap/blob/master/js/bootstrap-affix.js
Puis pour attacher la barre de navigation:
Vous devez supprimer
.affix()
à partir de votre script.Bootstrap donne la possibilité d'accomplir des choses, soit via
data-attributes
ou de droit de JavaScript, la plupart du temps.J'ai obtenu ce à partir de la twitterbootstrap du code source, et ça fonctionne plutôt bien:
HTML:
CSS:
JS:
Vous avez juste besoin d'enlever le script. Voici mon exemple:
Grâce à namuol et Dave Baiser pour la solution.
Dans mon cas, j'ai eu un petit problème avec la barre de navigation de la hauteur et la largeur lorsque j'ai utilisé afflix et de l'effondrement des plugins ensemble. Le problème avec la largeur peut être facilement résolu hérite de l'élément parent (conteneur dans mon cas). De même, j'ai réussi à faire s'effondrer en douceur avec un peu de javascript (coffeescript en fait). Le truc est de mettre wrapper hauteur de
auto
avant l'effondrement de la bascule se produit et le corriger en arrière par la suite.De balisage (haml):
CSS:
Coffeescript:
Ma solution pour fixer la barre de navigation :
Similaire à la accepté de répondre, vous pouvez aussi faire quelque chose comme ce qui suit à faire tout en un seul aller:
Ce n'est pas seulement invoque le
affix
plugin, mais également envelopper le apposé élément dans une div qui va maintian la hauteur d'origine de la barre de navigation.