Je souhaite utiliser la barre de navigation par défaut Bootstrap 3 avec un logo d'image au lieu de la marque de texte. Quelle est la bonne façon de procéder sans causer de problèmes avec différentes tailles d'écran? Je suppose que c'est une exigence courante, mais je n'ai pas encore vu un bon exemple de code. Une exigence clé autre qu'un affichage acceptable sur toutes les tailles d'écran est la possibilité de réduire le menu sur des écrans plus petits.
J'ai essayé de mettre une balise IMG à l'intérieur de la balise A qui a la classe de marque navbar, mais cela a empêché le menu de fonctionner correctement sur mon téléphone Android. J'ai également essayé d'augmenter la hauteur de la classe navbar, mais cela a encore plus foiré les choses.
Soit dit en passant, mon image de logo est plus grande que la hauteur de la barre de navigation.
la source
<img src="logo.png" width="27px" />
: ajusterwidth="27"
Réponses:
Pourquoi tout le monde essaie de le faire à la dure? Bien sûr, certaines de ces approches fonctionneront, mais elles sont plus compliquées que nécessaire.
OK, d'abord - vous avez besoin d'une image qui s'adaptera à votre barre de navigation. Vous pouvez ajuster votre image via l'attribut de hauteur css (permettant à la largeur de l'échelle) ou vous pouvez simplement utiliser une image de taille appropriée. Quoi que vous décidiez de faire, l'apparence dépendra de la taille de votre image.
Pour une raison quelconque, tout le monde veut coller l'image à l'intérieur d'une ancre
navbar-brand
, et ce n'est pas nécessaire.navbar-brand
applique des styles de texte qui ne sont pas nécessaires à une image, ainsi qu'à lanavbar-left
classe (tout comme pull-left, mais pour une utilisation dans une barre de navigation). Tout ce dont vous avez vraiment besoin est d'ajouternavbar-left
.Vous pouvez même suivre cela avec un article de marque navbar, qui apparaîtra à droite de l'image.
la source
navbar-brand
. C'est la source de confusion.la source
DÉMO COMPLÈTE AVEC DE NOMBREUX EXEMPLES
MISE À JOUR IMPORTANTE: 21/12/15
Il y a actuellement un bug dans Mozilla que j'ai découvert qui casse la barre de navigation sur certaines largeurs de navigateur avec BEAUCOUP DE DÉMOS SUR CETTE PAGE . Fondamentalement, le bug mozilla inclut le rembourrage gauche et droit sur le lien de la marque navbar dans le cadre de la largeur de l'image. Cependant, cela peut être résolu facilement et j'ai testé cela et je suis presque sûr que c'est l'exemple de travail le plus stable sur cette page. Il se redimensionne automatiquement et fonctionne sur tous les navigateurs.
Ajoutez simplement ceci à votre css et utilisez la marque navbar de la même manière que vous le feriez
.img-responsive
. Votre logo s'adaptera automatiquementUne autre option consiste à utiliser une image d'arrière-plan. Utilisez une image de n'importe quelle taille, puis définissez simplement la largeur souhaitée:
RÉPONSE ORIGINALE CI-DESSOUS (pour référence seulement)
Les gens semblent beaucoup oublier l'ajustement d'objet. Personnellement, je pense que c'est la plus simple à utiliser car l'image s'adapte automatiquement à la taille du menu. Si vous utilisez simplement l'ajustement d'objet sur l'image, il sera automatiquement redimensionné à la hauteur des menus.
Il a été souligné que cela ne fonctionne pas "encore" dans IE. Il existe un polyfill , mais cela peut être excessif si vous ne prévoyez pas de l'utiliser pour autre chose. Il semble que l'ajustement d'objet soit prévu pour une future version d'IE, donc une fois que cela se produira, cela fonctionnera dans tous les navigateurs.
Cependant, si vous remarquez la classe .img-responsive dans le bootstrap, la largeur maximale suppose que vous placez ces images dans des colonnes ou quelque chose qui a un explicite avec set. Cela signifierait que 100% signifie spécifiquement 100% de largeur de l'élément parent.
La raison pour laquelle nous ne pouvons pas utiliser cela avec la barre de navigation est que le parent (marque .navbar) a une hauteur fixe de 50 pixels, mais la largeur n'est pas définie.
Si nous prenons cette logique et inversons à être réactif en fonction de la hauteur , nous pouvons avoir une image sensible que les échelles à la hauteur .navbar-marque et en ajoutant et réglage automatique largeur il ajustera à proportion.
Habituellement, nous devrions ajouter
display:block;
au scénario, mais puisque la marque navbar a déjà flotté: gauche; appliqué, il agit automatiquement comme un élément de bloc.Vous pouvez rencontrer la situation rare où votre logo est trop petit. L'approche img-responsive ne tient pas compte de cela, mais nous le ferons. En ajoutant également l'attribut "height" au,
.navbar-brand > img
vous pouvez être assuré qu'il augmentera aussi bien que bas.Donc, pour terminer, je les ai mis ensemble et cela semble fonctionner parfaitement dans tous les navigateurs.
DEMO http://codepen.io/bootstrapped/pen/KwYGwq
la source
Bien que votre question soit intéressante, je ne m'attends pas à ce qu'il y ait une réponse. Votre question est peut-être trop large. Votre solution doit dépendre de: d'autres contenus dans la barre de navigation (nombre d'articles), les tailles de votre logo, si votre logo réagit, etc. L'ajout du logo dans le a (avec la marque navbar) semble un bon point de départ. Je devrais utiliser la classe navbar-brand car cela ajoutera un rembourrage (haut / bas) de 15 pixels.
Je teste ce paramètre sur http://getbootstrap.com/examples/navbar/ avec un logo de 300x150 pixels.
Plein écran> 1200:
entre 768 et 992 pixels (menu non réduit):
<768 (menu réduit)
Outre les aspects esthétiques, je n'ai trouvé aucun problème technique. Sur les petits écrans, un gros logo peut se chevaucher ou éclater la fenêtre d'affichage peut-être. Les écrans entre 768 et 992 pixels ont également d'autres problèmes lorsque le contenu ne tient pas dans une ligne, voir par exemple: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
La barre de navigation par défaut aL'exemple de barre de navigation par défaut ajoute une marge inférieure de 30 pixels afin que le contenu de votre barre de navigation ne chevauche jamais le contenu de votre page. (les barres de navigation fixes auront des problèmes lorsque la hauteur de la barre de navigation varie).Vous aurez besoin de quelques requêtes CSS et multimédias pour adapter la barre de navigation à vos besoins sur différentes tailles d'écran. Essayez de restreindre votre question. être décrire le problème que vous avez trouvé sur Android.
mise à jour voir http://bootply.com/77512 pour un exemple.
permutez le bouton et le logo dans votre code, logo en premier (position flottante: à gauche sur le logo)
réglez le
margin-top
pour.navbar-collapse ul
. Utilisez la hauteur du logo moins la hauteur de la barre de navigation, pour aligner vers le bas ou (hauteur du logo - hauteur de la barre de navigation) / 2 pour centrerla source
Instruction pour créer une barre de navigation bootstrap avec un logo plus grand que la hauteur par défaut (50 px):
Exemple avec un logo 100px x 100px, CSS standard:
Calculez la hauteur et (rembourrage haut + rembourrage bas) du logo. Ici 120px (hauteur 100px + haut rembourrage (10px) + bas rembourrage (10px))
Aller bootstrap / personnaliser . Définissez au lieu de la hauteur de la barre de navigation 50px> 120px (50 + 70) et la hauteur de navbar-collapse-max de 340px à 410px (340 + 70). Téléchargez css.
Dans cet exemple, j'utilise cette barre de navigation . Dans la marque navbar :
ajoutez une classe, par exemple myLogo , et un img (votre logo)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
.Ajouter CSS
.myLogo {padding: 10px; }
Convient aux autres tailles.
Exemple
la source
Eh bien, j'ai finalement réussi à faire fonctionner ce même problème, voici ma solution et je l'ai testée sur mon site dans les trois principaux navigateurs: Chrome, Firefox et Internet Explorer.
Tout d'abord, si vous n'utilisez pas de logo basé sur du texte, supprimez complètement "navbar-brand" car j'ai trouvé que cette classe particulière était la principale cause de la multiplication par deux de mon menu de navigation.
Criez à user3137032 pour m'avoir conduit dans la bonne direction.
Vous devez créer un conteneur d'images réactif personnalisé, j'ai appelé le mien "logo"
Voici le balisage HTML bootstrap:
Et le code CSS:
La valeur dans @media (max-width: x) peut varier en fonction de la largeur des images de votre logo, la mienne est de 368px. Les pourcentages peuvent également devoir être modifiés en fonction de la taille de votre logo. La première requête @media devrait être votre seuil et la mienne était la largeur de l'image (368px) + la taille du bouton replié (44px) + environ 60px et elle est sortie à 480px, c'est là que je commence la mise à l'échelle réactive de l'image.
Veuillez vous assurer de supprimer ma syntaxe de rasoir des parties HTML. Faites-moi savoir si cela résout votre problème, il a corrigé le mien.
Edit: Désolé, j'ai raté votre problème de hauteur de barre de navigation. Il y a deux façons de procéder, personnellement, je compile le Bootstrap LESS avec la hauteur de barre de navigation appropriée, pour mes fins j'utilise 70px, et la hauteur de mon image est de 68 px. La deuxième façon de le faire est dans le fichier bootstrap.css lui-même, recherchez ".navbar" et changez min-height: à la hauteur de votre logo.
la source
navbar-brand
fait pour moi.Ma solution est d'ajouter css "display: inline-block" à la balise img.
DÉMO: jsfiddle
la source
J'utilise la classe img-responsive, puis je définis une largeur maximale sur l'
a
élément. Comme ça:et le CSS:
la source
<a>
balise au lieu de la<img>
balise, depuis lesimg-responsive
ensemblesmax-width="100%"
. Pouvez-vous expliquer en quoi cela est utile?.image-responsive
est destiné au redimensionnement de l'image basé sur un conteneur explicite LARGEUR de l'image et non à la HAUTEUR qui redimensionne en fonction de la largeur. Donc, malgré le nombre de votes positifs, cela n'a pas fonctionné, voir ici . Cependant, nous pouvons utiliser la même méthode que celle sensible à l'image et l'appliquer à la hauteur. Supprimez donc .img-responsive de l'équation et définissez simplement max-height sur navbar-brand . Voir ma réponse ici .Vous devez utiliser le code comme ceci:
L'étiquette de classe A doit être «logo» et non pas la marque navbar.
la source
Cela dépend de la taille que vous souhaitez que votre logo soit.
La
<a>
hauteur par défaut dans la barre de navigation est de 20 pixels, donc si vous spécifiezheight: 20px
sur votre logo, il s'alignera bien.Cependant, c'est un peu petit pour un logo, alors j'ai opté pour ceci:
Cela rend l'image haute de 30 pixels et aligne verticalement l'image en ajoutant une marge négative en haut (5 pixels est la moitié de la différence entre le rembourrage sur a et la taille de l'image).
Alternativement, vous pouvez modifier le rembourrage de l'
<a>
élément, par exemple:la source
Solution rapide : créez une classe pour votre
logo
et définissez-laheight
sur28px
. Cela fonctionne bien avec la barre de navigation sur tous les appareils. Remarquez que j'ai dit fonctionne "BIEN".la source
Mon approche consiste à inclure QUATRE images différentes de tailles différentes pour les téléphones, les tablettes, les ordinateurs de bureau, les ordinateurs de bureau de grande taille, mais ne montrer qu'UNE en utilisant les classes utilitaires réactives de bootstrap, comme suit:
Remarque: vous pouvez remplacer la ligne commentée par le code fourni. Remplacez le code php si vous n'utilisez pas wordpress.
Modifier la note 2: Oui, cela ajoute des demandes à votre serveur lors du chargement de la page, ce qui pourrait ralentir un peu, mais si vous utilisez une technique de sprite css en arrière-plan, il est probable que le logo ne s'imprime pas lors de l'impression d'une page et que le code ci-dessus devienne meilleur référencement.
la source
visible-SIZE
de laa
balise et placez-le sur la balise img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Vous ne devriez pas avoir besoin d'ajouter de CSS supplémentaire, car Bootstrap3 le fournit. A moins que vous ne vouliez l'ajouter. C'est mon code pour mettre le logo à gauche et les liens à droite. Cette navigation est réactive. Apportez des modifications à cela comme bon vous semble.
HTML:
la source
Je l'implémente également via la propriété d'arrière-plan css. Il fonctionne sainement dans n'importe quelle valeur de largeur.
la source
Une autre approche consiste à implémenter la
.text-hide
classe intégrée de Bootstrap à côté de.navbar-brand
pour remplacer le texte / contenu de la marque par une image d'arrière-plan.CSS:
HTML:
Il s'agit d'une méthode très cohérente et maintient votre image centrée. Pour ajuster la taille de l'image, il vous suffit de régler la
.navbar-brand
largeur, car la hauteur est déjà définie.Voici une démo en direct
la source
J'ai eu le même problème. Je l'ai résolu comme ceci:
Il n'y a pas de classe de marque navbar. Le résultat ressemble à une image de logo qui correspond à la barre de navigation et fonctionne comme un lien. Je recommande également d'utiliser la classe navbar-right pour les éléments de menu afin qu'ils ne descendent pas sous le logo.
la source
C'est peut-être trop simple, mais je viens de copier la ligne de la marque navbar donc il y en a deux, l'image puis le texte.
Et j'ai créé une image qui tient à l'intérieur de la barre de navigation (environ la moitié de la hauteur).
la source
Si vous utilisez MOINS, cela fonctionne:
la source
Ce code fonctionne parfaitement si vous avez besoin de voir la marque centrée et avec la largeur automatique dans la barre d'outils. Il contient la fonction Wordpress pour obtenir le fichier image du bon chemin:
la source
Ajoutez ce qui suit à la
.navbar-brand
classela source
mon code de travail - bootstrap 3.0.3. lorsque navbar-toggle, image du logo d'origine hidden-xs.
la source
Vous pouvez essayer d'utiliser la requête @media comme ci-dessous.
Ajoutez d'abord une classe de logo, puis utilisez @media pour spécifier la hauteur et la largeur de votre logo par taille d'appareil. Dans l'exemple ci-dessous, je cible des appareils d'une largeur maximale de 320 pixels (iPhone). Vous pouvez jouer avec jusqu'à ce que vous trouviez le meilleur ajustement. Un moyen facile de tester: utilisez Chrome ou Firefox avec l'élément d'inspection. Rétrécissez votre navigateur autant que possible. Observez le changement de taille du logo en fonction de la largeur maximale @media que vous spécifiez. Testez sur iPhone, appareils Android, iPad, etc. pour obtenir les résultats souhaités.
la source
Veuillez essayer le code suivant:
la source
A défaut de faire fonctionner l'une des autres réponses dans mon cas (je n'ai probablement pas réussi le test d'intelligence) et après quelques expérimentations, c'est ce que j'utilise (qui je crois est très proche de la valeur par défaut de Bootstrap):
Et dans le fichier CSS, j'ai ajouté ce qui suit:
Notez que
@Html.ActionLink()
c'est la syntaxe Razor pour une<a>
balise. Là où il est dit,@Html.ActionLink(...)
remplacez-le simplement par une<a>
balise appropriée . De même, là où il est dit,@Url.Action(...)
remplacez-le par une URL appropriée (pas de<a>
balise dans ce cas).la source
Ce n'est pas sémantique, mais j'utilise simplement l'
a
élément existant , définit une image d'arrière-plan, puis crée plusieurs variations pour une résolution @ 2x, des tailles d'écran plus petites, etc.Ensuite, vous pouvez utiliser la
.text-hide
classe pour obtenir du texte sur la page à la mode. Utilisation simple et efficace mais non appropriée d'une image.Voici un lien vers la classe d'assistance pour le remplacement de texte:
http://getbootstrap.com/css/#helper-classes
la source
La réponse la plus simple et la meilleure pour cette question est de définir une largeur et une hauteur maximales en fonction de votre logo, l'image sera au maximum de 50 pixels de haut mais pas plus de 200 pixels.
Cela variera en fonction de la taille de votre logo et des éléments de la barre de navigation dont vous disposez.
la source
Veuillez comprendre le code à vos propres efforts: D Voici mon projet de code et il fonctionne déjà :) Voici la capture d'écran.
la source
Au lieu de remplacer la marque de texte, je me suis divisé en deux lignes comme dans le code ci-dessous et j'ai donné une
img-responsive
classe à l'image ......et en plus, j'ai ajouté les codes css suivants .......
Si mon code résout votre problème, c'est mon plaisir .....
la source
// N'oubliez pas d'ajouter bootstrap en tête de votre code.
la source