Quiero usar la barra de navegación predeterminada de Bootstrap 3 con un logotipo de imagen en lugar de la marca de texto. ¿Cuál es la forma correcta de hacer esto sin causar problemas con diferentes tamaños de pantalla? Supongo que este es un requisito común, pero aún no he visto un buen ejemplo de código. Un requisito clave además de tener una visualización aceptable en todos los tamaños de pantalla es la colapsabilidad del menú en pantallas más pequeñas.
Intenté simplemente poner una etiqueta IMG dentro de la etiqueta A que tiene la clase de marca de barra de navegación, pero eso hizo que el menú no funcionara correctamente en mi teléfono Android. También intenté aumentar la altura de la clase de barra de navegación, pero eso arruinó aún más las cosas.
Por cierto, la imagen de mi logotipo es más grande que la altura de la barra de navegación.
fuente
<img src="logo.png" width="27px" />
: ajustarwidth="27"
Respuestas:
¿Por qué todos intentan hacerlo de la manera difícil? Claro, algunos de estos enfoques funcionarán, pero son más complicados de lo necesario.
OK, primero: necesita una imagen que se ajuste a su barra de navegación. Puede ajustar su imagen mediante el atributo css height (permitiendo el ancho a escala) o simplemente puede usar una imagen de tamaño apropiado. Independientemente de lo que decida hacer, la apariencia dependerá de qué tan bien dimensione su imagen.
Por alguna razón, todos quieren pegar la imagen dentro de un ancla
navbar-brand
, y esto no es necesario.navbar-brand
aplica estilos de texto que no son necesarios a una imagen, así como a lanavbar-left
clase (al igual que pull-left, pero para usar en una barra de navegación). Todo lo que realmente necesitas es agregarnavbar-left
.Incluso puede seguir esto con un elemento de marca de barra de navegación, que aparecerá a la derecha de la imagen.
fuente
navbar-brand
. Esta es la fuente de confusión.fuente
DEMO COMPLETA CON MUCHOS EJEMPLOS
ACTUALIZACIÓN IMPORTANTE: 21/12/15
Actualmente hay un error en Mozilla que descubrí que rompe la barra de navegación en ciertos anchos del navegador con MUCHOS DEMOS EN ESTA PÁGINA . Básicamente, el error de mozilla incluye el relleno izquierdo y derecho en el enlace de la marca de la barra de navegación como parte del ancho de la imagen. Sin embargo, esto se puede solucionar fácilmente y lo he probado y estoy bastante seguro de que es el ejemplo de trabajo más estable en esta página. Se redimensionará automáticamente y funciona en todos los navegadores.
Simplemente agregue esto a su CSS y use la marca de la barra de navegación de la misma manera que lo haría
.img-responsive
. Tu logotipo se ajustará automáticamenteOtra opción es usar una imagen de fondo. Use una imagen de cualquier tamaño y luego simplemente configure el ancho deseado:
RESPUESTA ORIGINAL A CONTINUACIÓN (solo para referencia)
La gente parece olvidarse mucho del ajuste de objetos. Personalmente, creo que es el más fácil para trabajar porque la imagen se ajusta automáticamente al tamaño del menú. Si solo usa el ajuste de objeto en la imagen, se redimensionará automáticamente a la altura de los menús.
Se señaló que esto no funciona en IE "todavía". Hay un polyfill , pero eso podría ser excesivo si no planea usarlo para otra cosa. Parece que el ajuste de objetos se está planificando para una futura versión de IE, por lo que una vez que eso suceda, funcionará en todos los navegadores.
Sin embargo, si observa la clase .img-responsive en bootstrap, max-width está asumiendo que está colocando estas imágenes en columnas o algo que tiene un conjunto explícito. Esto significaría que 100% significa específicamente 100% de ancho del elemento padre.
La razón por la que no podemos usar eso con la barra de navegación es porque el padre (.navbar-brand) tiene una altura fija de 50 px, pero el ancho no está establecido.
Si tomamos que la lógica y revertir que sea sensible basado en la altura podemos tener una imagen sensible que las escalas a la altura .navbar-marca y añadiendo y ajuste automático de ancho se ajustará a la proporción.
Por lo general, tendríamos que agregar
display:block;
al escenario, pero dado que navbar-brand ya tiene flotante: izquierda; aplicado a él, actúa automáticamente como un elemento de bloque.Es posible que se encuentre con una situación poco frecuente en la que su logotipo es demasiado pequeño. El enfoque sensible a img no tiene esto en cuenta, pero lo haremos. Al agregar también el atributo "altura"
.navbar-brand > img
, puede estar seguro de que aumentará o disminuirá.Entonces, para completar esto, los puse juntos y parece funcionar perfectamente en todos los navegadores.
DEMO http://codepen.io/bootstrapped/pen/KwYGwq
fuente
Aunque su pregunta es interesante, no espero que haya una respuesta. Tal vez tu pregunta es demasiado amplia. Su solución debe depender de: otro contenido en la barra de navegación (número de elementos), tamaños de su logotipo, si su logotipo debe responder, etc. Agregar el logotipo en a (con la marca de la barra de navegación) parece un buen punto de partida. Debería usar la clase navbar-brand porque esto agregará un relleno (superior / inferior) de 15 píxeles.
Probé esta configuración en http://getbootstrap.com/examples/navbar/ con un logotipo de 300x150 píxeles.
Pantalla completa> 1200:
Entre 768 y 992 píxeles (menú no contraído):
<768 (menú colapsado)
Además de los aspectos estéticos, no encontré ningún problema técnico. En pantallas pequeñas, un gran logotipo se superpondrá o romperá la ventana gráfica tal vez. Las pantallas entre 768 y 992 píxeles también tienen otros problemas cuando el contenido no cabe en una línea, ver por ejemplo: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
La barra de navegación predeterminada tieneEl ejemplo de la barra de navegación predeterminada agrega un margen inferior de 30 píxeles para que el contenido de su barra de navegación nunca se superponga con el contenido de su página. (las barras de navegación fijas tendrán problemas cuando la altura de la barra de navegación varía).Necesitará algunas consultas de CSS y medios para adaptar la barra de navegación a su necesidad en diferentes tamaños de pantalla. Por favor, trate de reducir su pregunta. Describa el problema que encontró en Android.
actualización ver http://bootply.com/77512 para un ejemplo.
intercambie el botón y el logotipo en su código, primero el logotipo (configure flotante: izquierda en el logotipo)
establecer el
margin-top
para.navbar-collapse ul
. Use la altura del logotipo menos la altura de la barra de navegación, para alinear a la parte inferior o (altura del logotipo - altura de la barra de navegación) / 2 al centrofuente
Instrucciones sobre cómo crear una barra de navegación de arranque con un logotipo que sea más grande que la altura predeterminada (50 px):
Ejemplo con un logotipo de 100 px x 100 px, CSS estándar:
Calcule la altura y (relleno superior + relleno inferior) del logotipo. Aquí 120 px ( 100 px de altura + relleno superior (10 px) + relleno inferior (10 px))
Ir a bootstrap / personalizar . Establecer en lugar de navbar height 50px> 120px (50 + 70) y navbar-collapse-max-height de 340px a 410px (340 + 70). Descargar css.
En este ejemplo, uso esta barra de navegación . En navbar-brand :
agregue una clase, por ejemplo myLogo , y un img (su logotipo)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
.Agregar CSS
.myLogo {relleno: 10px; }
Adecuado para otros tamaños.
Ejemplo
fuente
Bueno, finalmente tuve este mismo problema, aquí está mi solución y la probé en mi sitio en los tres principales navegadores: Chrome, Firefox e Internet Explorer.
En primer lugar, si no está utilizando un logotipo basado en texto, elimine "navbar-brand" por completo, ya que esta clase en particular es la principal causa de que mi menú de navegación colapsado se duplique.
Grite al usuario3137032 por guiarme en la dirección correcta.
Tienes que hacer un contenedor de imagen sensible personalizado, llamé al mío "logo"
Aquí está el marcado HTML de bootstrap:
Y el código CSS:
El valor en @media (max-width: x) puede variar según el ancho de las imágenes de su logotipo, el mío es de 368px. Es posible que también sea necesario cambiar los porcentajes dependiendo del tamaño de su logotipo. La primera consulta @media debería ser su umbral y el mío era el ancho de la imagen (368px) + el tamaño del botón contraído (44px) + aproximadamente 60px y salió a 480px, que es donde comienzo la escala de la imagen receptiva.
Asegúrese de eliminar la sintaxis de mi maquinilla de afeitar de las partes HTML. Avíseme si soluciona su problema, solucionó el mío.
Editar: Lo siento, me perdí el problema de altura de la barra de navegación. Hay un par de maneras de hacerlo, personalmente compilo el Bootstrap LESS con la altura de la barra de navegación adecuada, para mi uso utilizo 70 px y la altura de mi imagen es de 68 px. La segunda forma de hacerlo es en el archivo bootstrap.css, busque ".navbar" y cambie min-height: a la altura de su logotipo.
fuente
navbar-brand
hizo por mí.Mi solución es agregar css "display: inline-block" a la etiqueta img.
DEMO: jsfiddle
fuente
Uso la clase img-responsive y luego establezco un ancho máximo en el
a
elemento. Me gusta esto:y el CSS:
fuente
<a>
etiqueta en lugar de la<img>
etiqueta, desde losimg-responsive
conjuntosmax-width="100%"
. ¿Puedes explicar cómo esto es útil?.image-responsive
está diseñado para cambiar el tamaño de la imagen en función de un contenedor explícito ANCHO de la imagen y no en la ALTURA que cambia el tamaño en función del ancho. Entonces, a pesar de la cantidad de votos positivos que esto ha conseguido, NO funcionará, mira aquí . Sin embargo, podemos usar el mismo método que la imagen sensible y APLICARLO a la altura. Elimine .img-responsive de la ecuación y simplemente configure max-height en navbar-brand . Mira mi respuesta aquí .Debe usar un código como este:
La etiqueta de clase A debe ser "logo", no navbar-brand.
fuente
Depende de qué tan alto quieras que sea tu logotipo.
La
<a>
altura predeterminada en la barra de navegación es de 20 píxeles, por lo que si especificaheight: 20px
en su logotipo, se alineará muy bien.Sin embargo, eso es un poco pequeño para un logotipo, por lo que opté por esto:
Esto hace que la imagen tenga 30 píxeles de altura y alinea verticalmente la imagen agregando un margen negativo en la parte superior (5 píxeles es la mitad de la diferencia entre el relleno en ay el tamaño de la imagen).
Alternativamente, puede cambiar el relleno del
<a>
elemento, por ejemplo:fuente
Solución rápida : cree una clase para usted
logo
y configúrelaheight
en28px
. Esto funciona bien con la barra de navegación en todos los dispositivos. Observe que dije que funciona "BIEN".fuente
Mi enfoque es incluir CUATRO imágenes diferentes de diferentes tamaños para teléfonos, tabletas, computadoras de escritorio, computadoras de escritorio grandes, pero solo mostrar UNA utilizando las clases de utilidad receptiva de bootstrap, de la siguiente manera:
Nota: Puede reemplazar la línea comentada con el código provisto. Reemplace el código php si no está usando wordpress.
Nota de edición 2: Sí, esto agrega solicitudes a su servidor al cargar la página, lo que podría ralentizarse un poco, pero si usa una técnica de fondo css sprite, es probable que el logotipo no se imprima al imprimir una página y el código anterior debería aparecer Mejor SEO.
fuente
visible-SIZE
de laa
etiqueta y póngalo en la etiqueta img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
No debería necesitar agregar CSS adicional, ya que Bootstrap3 lo proporciona. A menos que quieras agregarlo. Este es mi código para poner el logotipo a la izquierda y los enlaces a la derecha. Esta navegación es receptiva. Haga cambios a esto como mejor le parezca.
HTML:
fuente
También lo implemento a través de la propiedad de fondo css. Funciona saludablemente en cualquier valor de ancho.
fuente
Otro enfoque es implementar la
.text-hide
clase integrada de Bootstrap junto con.navbar-brand
para reemplazar el texto / contenido de la marca con una imagen de fondo.CSS:
HTML:
Este es un método muy consistente y mantiene su imagen centrada. Para ajustar el tamaño de la imagen, todo lo que necesita hacer es ajustar el
.navbar-brand
ancho ya que la altura ya está configurada.Aquí hay una demostración en vivo
fuente
Yo tuve el mismo problema. Lo resolví así:
No hay clase de marca de barra de navegación. El resultado parece una imagen del logotipo que se ajusta a la barra de navegación y funciona como un enlace. También recomiendo usar la clase navbar-right para los elementos del menú para que no vayan debajo del logotipo.
fuente
Tal vez esto sea demasiado simple, pero acabo de copiar la línea de marca de la barra de navegación para que haya dos, la imagen y luego el texto.
Y creé una imagen que cabe dentro de la barra de navegación (aproximadamente la mitad de la altura).
fuente
Si usa LESS, esto funciona:
fuente
Este código funciona perfecto si necesita ver la marca centrada y con el ancho automático en la barra de herramientas. Contiene la función Wordpress para obtener el archivo de imagen desde la ruta correcta:
fuente
Agregue lo siguiente a la
.navbar-brand
clasefuente
mi código de trabajo - bootstrap 3.0.3. cuando navbar-toggle, hidden-xs imagen del logotipo original.
fuente
Puede intentar usar la consulta @media como se muestra a continuación.
Agregue primero una clase de logotipo, luego use @media para especificar la altura y el ancho de su logotipo por tamaño de dispositivo. En el siguiente ejemplo, estoy apuntando a dispositivos que tienen un ancho máximo de 320 px (iPhone). Puedes jugar con esto hasta que encuentres la mejor opción. Manera fácil de probar: use Chrome o Firefox con el elemento de inspección. Reduzca su navegador lo más posible. Observe el cambio de tamaño del logotipo en función del ancho máximo de @media que especifique. Pruebe en iPhone, dispositivos Android, iPad, etc. para obtener los resultados deseados.
fuente
Intenta con el siguiente código:
fuente
No puedo hacer que ninguna de las otras respuestas funcione en mi caso (probablemente no pasé la prueba de inteligencia) y después de un poco de experimentación, esto es lo que estoy usando (que creo que está muy cerca del valor predeterminado de Bootstrap):
Y en el archivo CSS he agregado lo siguiente:
Tenga en cuenta que
@Html.ActionLink()
es la sintaxis de Razor para una<a>
etiqueta. Donde dice@Html.ActionLink(...)
simplemente reemplácelo con una<a>
etiqueta apropiada . Igualmente donde dice@Url.Action(...)
reemplazarlo con una URL apropiada (sin<a>
etiqueta en ese caso).fuente
Esto no es semántico, pero solo uso el
a
elemento existente , establezco una imagen de fondo, luego creo múltiples variaciones para resolución @ 2x, tamaños de pantalla más pequeños, etc.Luego, puede usar la
.text-hide
clase para obtener texto en la página a la antigua usanza. Uso simple y efectivo aunque no apropiado de una imagen.Aquí hay un enlace a la clase auxiliar para el reemplazo de texto:
http://getbootstrap.com/css/#helper-classes
fuente
La mejor y más fácil respuesta para esta pregunta es establecer un ancho y alto máximos dependiendo de su logotipo, la imagen tendrá un máximo de 50 píxeles de alto pero no más de 200 píxeles.
Esto variará según el tamaño de su logotipo y los elementos de la barra de navegación que tenga.
fuente
Comprenda el código a su propio esfuerzo: D Este es mi código borrador y ya está funcionando :) Aquí está la captura de pantalla.
fuente
En lugar de reemplazar la marca de texto, me dividí en dos filas como en el código a continuación y le di
img-responsive
clase a la imagen ......y además, agregué los siguientes códigos css .......
Si mi código resuelve su problema, es un placer .....
fuente
// No olvides agregar bootstrap en la cabeza de tu código.
fuente