La documentación de arranque sobre ese tema es un poco confusa para mí. Quiero lograr un comportamiento similar al de los documentos con la barra de navegación de afijos: la barra de navegación está debajo de un encabezado de párrafo / página, y al desplazarse hacia abajo, primero debe desplazarse hasta llegar a la parte superior de la página, y luego permanecer allí fija para más desplazamientos hacia abajo .
Como jsFiddle no funciona con el concepto de barra de navegación, he configurado una página separada para su uso como un ejemplo mínimo: http://i08fs1.ira.uka.de/~s_drr/navbar.html
Yo uso esto como mi barra de navegación:
<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 -->
Creo que me gustaría tener data-offset-top
un valor de 0 (ya que la barra debería "pegarse" en la parte superior ", pero con 50 hay al menos algún efecto observable.
Si también coloca el código javascript en su lugar:
<script>
$(document).ready (function (){
$(".navbar").affix ();
});
</script>
Cualquier ayuda apreciada.
fuente
.navbar-fixed-top
lugar de usar affix ()?.navbar-fixed-top
colocaría la barra de navegación en la parte superior todo el tiempo . Quiero un encabezado de página ARRIBA de la barra de navegación, y al desplazarse hacia abajo (y por lo tanto, la barra de navegación apostaría a desplazarse), debería quedarse en la parte superior, entonces y solo entonces. Los documentos de Bootstrap utilizaron los mismos mecanismos que un subnav en sus documentos anteriores, lamentablemente lo han eliminado para los documentos 2.1.0.)};
debería ser});
Respuestas:
Tenía un problema similar y creo que encontré una solución mejorada.
No se moleste
data-offset-top
en especificar en su HTML. En su lugar, especifíquelo cuando llame.affix()
:La ventaja aquí es que puede cambiar el diseño de su sitio sin necesidad de actualizar el
data-offset-top
atributo. Dado que esto usa la posición calculada real del elemento, también evita inconsistencias con los navegadores que representan el elemento en una posición ligeramente diferente.Aún necesitará sujetar el elemento a la parte superior con CSS. Además, tuve que configurar
width: 100%
el elemento de navegación ya que los.nav
elementos conposition: fixed
mal comportamiento por alguna razón:Una última cosa: cuando un elemento fijo se vuelve fijo, su elemento ya no ocupa espacio en la página, lo que hace que los elementos debajo de él "salten". Para evitar esta fealdad, envuelvo la barra de navegación en una
div
altura cuya altura configuré para que sea igual a la barra de navegación en tiempo de ejecución:.
Aquí está el jsFiddle obligatorio para verlo en acción .
fuente
Acabo de implementar esto por primera vez, y esto es lo que encontré.
El
data-offset-top
valor es la cantidad de píxeles que debe desplazarse para que se produzca el efecto de fijación. En su caso, una vez que50px
se desplaza, la clase de su artículo cambia de.affix-top
a.affix
. Probablemente desee establecerdata-offset-top
aproximadamente130px
en su caso de uso.Una vez que se produce este cambio de clase, debe colocar su elemento en css diseñando el posicionamiento para la clase
.affix
. Bootstrap 2.1 ya define.affix
comoposition: fixed;
así que todo lo que necesita hacer es agregar sus propios valores de posición.Ejemplo:
fuente
.navbar
clase se conserva, ¿estás seguro?Para solucionar este mismo problema, modifiqué el complemento de afijo para emitir un evento jQuery cuando un objeto está adherido o no.
Aquí está la solicitud de extracción: https://github.com/twitter/bootstrap/pull/4712
Y el código: https://github.com/corbinu/bootstrap/blob/master/js/bootstrap-affix.js
Y luego haz esto para adjuntar la barra de navegación:
fuente
Debe eliminarlo
.affix()
de su secuencia de comandos.Bootstrap ofrece la opción de lograr cosas a través de
data-attributes
JavaScript o directamente la mayor parte del tiempo.fuente
Obtuve esto del código fuente de twitterbootstrap y está funcionando bastante bien:
HTML:
CSS:
JS:
fuente
Solo necesita eliminar el script. Aquí está mi ejemplo:
fuente
Gracias a Namuol y Dave Kiss por la solución. En mi caso, tuve un pequeño problema con la altura y el ancho de la barra de navegación cuando usé afflix y colapsé los complementos juntos. El problema con el ancho se puede resolver fácilmente heredando el elemento principal (contenedor en mi caso). También pude lograr que colapsara sin problemas con un poco de javascript (coffeescript en realidad). El truco consiste en establecer la altura de la envoltura
auto
antes de que se produzca el cambio de colapso y volver a fijarlo después.Marcado (haml):
CSS:
Coffeescript:
fuente
Mi solución para adjuntar la barra de navegación:
fuente
De manera similar a la respuesta aceptada, también puede hacer algo como lo siguiente para hacer todo de una vez:
Esto no solo invoca el
affix
complemento, sino que también envuelve el elemento adjunto en un div que mantendrá la altura original de la barra de navegación.fuente