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-topun 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-toplugar de usar affix ()?.navbar-fixed-topcolocarí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-topen 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-topatributo. 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.navelementos conposition: fixedmal 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
divaltura 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-topvalor es la cantidad de píxeles que debe desplazarse para que se produzca el efecto de fijación. En su caso, una vez que50pxse desplaza, la clase de su artículo cambia de.affix-topa.affix. Probablemente desee establecerdata-offset-topaproximadamente130pxen 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.affixcomoposition: fixed;así que todo lo que necesita hacer es agregar sus propios valores de posición.Ejemplo:
fuente
.navbarclase 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-attributesJavaScript 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
autoantes 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
affixcomplemento, sino que también envuelve el elemento adjunto en un div que mantendrá la altura original de la barra de navegación.fuente