Desejo usar a barra de navegação padrão do Bootstrap 3 com um logotipo de imagem em vez da marca do texto. Qual é a maneira correta de fazer isso sem causar problemas com diferentes tamanhos de tela? Presumo que isso seja um requisito comum, mas ainda não vi um bom exemplo de código. Um requisito essencial que não seja a exibição aceitável em todos os tamanhos de tela é a capacidade de recolhimento do menu em telas menores.
Tentei apenas colocar uma marca IMG dentro da marca A que possui a classe navbar-brand, mas que fazia com que o menu não funcionasse corretamente no meu telefone Android. Eu também tentei aumentar a altura da classe navbar, mas isso estragou ainda mais as coisas.
A propósito, minha imagem do logotipo é maior que a altura da barra de navegação.
fonte
<img src="logo.png" width="27px" />
: ajustewidth="27"
Respostas:
Por que todo mundo está tentando fazer da maneira mais difícil? Claro, algumas dessas abordagens funcionam, mas são mais complicadas do que o necessário.
OK, primeiro - você precisa de uma imagem que caiba na sua barra de navegação. Você pode ajustar sua imagem através do atributo de altura css (permitindo a largura da escala) ou apenas uma imagem de tamanho adequado. Tudo o que você decidir fazer - a aparência dependerá do tamanho da sua imagem.
Por alguma razão, todo mundo quer colar a imagem dentro de uma âncora
navbar-brand
e isso não é necessário.navbar-brand
aplica estilos de texto que não são necessários para uma imagem, bem como para anavbar-left
classe (assim como puxar para a esquerda, mas para uso em uma barra de navegação). Tudo o que você realmente precisa é adicionarnavbar-left
.Você pode até seguir isso com um item de marca da barra de navegação, que aparecerá à direita da imagem.
fonte
navbar-brand
. Essa é a fonte da confusão.fonte
DEMO COMPLETO COM MUITOS EXEMPLOS
ATUALIZAÇÃO IMPORTANTE: 21/12/15
Atualmente, há um bug no Mozilla que descobri que quebra a barra de navegação em determinadas larguras do navegador com MUITOS DEMOS NESTA PÁGINA . Basicamente, o bug do mozilla está incluindo o preenchimento esquerdo e direito no link da marca da barra de navegação como parte da largura da imagem. No entanto, isso pode ser corrigido facilmente e eu testei isso e tenho certeza de que é o exemplo de trabalho mais estável nesta página. Ele será redimensionado automaticamente e funcionará em todos os navegadores.
Basta adicionar isso ao seu css e usar navbar-brand da mesma maneira que você faria
.img-responsive
. Seu logotipo caberá automaticamenteOutra opção é usar uma imagem de fundo. Use uma imagem de qualquer tamanho e defina a largura desejada:
RESPOSTA ORIGINAL ABAIXO (apenas para referência)
As pessoas parecem esquecer muito o ajuste de objetos. Pessoalmente, acho que é o mais fácil de trabalhar, porque a imagem se ajusta automaticamente ao tamanho do menu. Se você apenas usar o ajuste de objeto na imagem, ele será redimensionado automaticamente para a altura dos menus.
Foi apontado que isso não funciona no IE "ainda". Existe um polyfill , mas isso pode ser excessivo se você não planeja usá-lo para qualquer outra coisa. Parece que o ajuste de objeto está sendo planejado para uma versão futura do IE; assim que isso acontecer, funcionará em todos os navegadores.
No entanto, se você notar a classe responsiva .img no bootstrap, a largura máxima está assumindo que você está colocando essas imagens em colunas ou algo que seja explícito com set. Isso significa que 100% significa especificamente 100% de largura do elemento pai.
O motivo pelo qual não podemos usar isso com a barra de navegação é porque o pai (marca .navbar) tem uma altura fixa de 50px, mas a largura não está definida.
Se pegarmos essa lógica e a revertermos para responder com base na altura, poderemos ter uma imagem responsiva que seja dimensionada para a altura da marca .navbar e, adicionando e ajustando automaticamente a largura, ela será ajustada à proporção.
Normalmente teríamos que adicionar
display:block;
ao cenário, mas como a navbar-brand já possui float: left; aplicado a ele, ele atua automaticamente como um elemento de bloco.Você pode encontrar a rara situação em que seu logotipo é muito pequeno. A abordagem responsiva ao img não leva isso em consideração, mas faremos. Ao adicionar também o atributo "height" ao,
.navbar-brand > img
você pode ter certeza de que ele aumentará ou diminuirá.Então, para completar, juntei os dois e parece funcionar perfeitamente em todos os navegadores.
DEMO http://codepen.io/bootstrapped/pen/KwYGwq
fonte
Embora sua pergunta seja interessante, não espero que haja uma resposta para ela. Talvez sua pergunta seja muito ampla. Sua solução deve depender de: outro conteúdo na barra de navegação (número de itens), tamanhos do logotipo, se o logotipo funcionar como responsivo etc. A adição do logotipo na a (com a marca da barra de navegação) parece um bom ponto de partida. Eu devo usar a classe navbar-brand porque isso adicionará um preenchimento (superior / inferior) de 15 pixels.
Testei essa configuração em http://getbootstrap.com/examples/navbar/ com um logotipo de 300 x 150 pixels.
Tela inteira> 1200:
entre 768 e 992 pixels (menu não recolhido):
<768 (menu recolhido)
Além dos aspectos estéticos, não encontrei nenhum problema técnico. Em telas pequenas, um grande logotipo se sobrepõe ou rompe a janela de visualização, talvez. As telas entre 768 e 992 pixels também apresentam outros problemas quando o conteúdo não se encaixa em uma linha; veja, por exemplo: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
A barra de navegação padrão possuiO exemplo da barra de navegação padrão adiciona uma margem inferior de 30px para que o conteúdo da sua barra de navegação nunca se sobreponha ao conteúdo da sua página. (as barras de navegação fixas terão problemas quando a altura da barra de navegação variar).Você precisará de algumas consultas de CSS e mídia para adaptar a barra de navegação às suas necessidades em diferentes tamanhos de tela. Por favor, tente restringir sua pergunta. Descreva o problema encontrado no Android.
atualização, consulte http://bootply.com/77512 para obter um exemplo.
troque o botão e o logotipo no seu código, primeiro o logotipo (defina float: deixado no logotipo)
defina o
margin-top
para.navbar-collapse ul
. Use a altura do logotipo menos a barra de navegação, para alinhar com a parte inferior ou (altura do logotipo - altura da barra de navegação) / 2 para centralizarfonte
Instruções sobre como criar uma barra de navegação com um logotipo maior que a altura padrão (50px):
Exemplo com um logotipo 100px x 100px, CSS padrão:
Calcule a altura e (parte superior do estofamento + parte inferior do estofamento) do logotipo. Aqui 120 px (altura de 100 px + parte superior do preenchimento (10px) + parte inferior do preenchimento (10px))
Vá para inicialização / personalização . Defina em vez da altura da barra de navegação 50px> 120px (50 + 70) e navbar-collapse-max-height de 340px a 410px (340 + 70). Baixar css.
Neste exemplo, eu uso esta barra de navegação . Na marca navbar :
adicione uma classe, por exemplo , myLogo e um img (seu logotipo)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
.Adicionar CSS
.myLogo {padding: 10px; }
Adequado para outros tamanhos.
Exemplo
fonte
Bem, finalmente consegui o mesmo problema, aqui está minha solução e testei em meu site nos três principais navegadores: Chrome, Firefox e Internet Explorer.
Antes de tudo, se você não estiver usando um logotipo baseado em texto, remova completamente a "navbar-brand", pois eu achei essa classe em particular a principal causa do meu menu de navegação recolhido dobrar.
Grite para user3137032 por me levar na direção certa.
Você precisa criar um contêiner de imagem responsivo personalizado, que chamei de "logotipo"
Aqui está a marcação HTML de inicialização:
E o código CSS:
O valor em @media (largura máxima: x) pode variar de acordo com a largura das imagens do logotipo, a minha é de 368 px. As porcentagens também precisam ser alteradas, dependendo do tamanho do seu logotipo. A primeira consulta @media deve ser seu limite e a minha era a largura da imagem (368px) + o tamanho do botão recolhido (44px) + cerca de 60px e saiu para 480px, que é onde eu inicio o dimensionamento responsivo da imagem.
Certifique-se de remover minha sintaxe de barbear das partes HTML. Deixe-me saber se isso resolve o seu problema, ele corrigiu o meu.
Edit: Desculpe, eu perdi o problema de altura da barra de navegação. Existem algumas maneiras de fazer isso: pessoalmente, eu compilar o Bootstrap LESS com a altura da barra de navegação apropriada; para meus propósitos, uso 70px e a altura da imagem é 68 px. A segunda maneira de fazer isso é no próprio arquivo bootstrap.css, procure ".navbar" e altere min-height: para a altura do seu logotipo.
fonte
navbar-brand
fez isso por mim.Minha solução é adicionar css "display: inline-block" à tag img.
DEMO: jsfiddle
fonte
Eu uso a classe responsiva img e, em seguida, defino uma largura máxima no
a
elemento. Como isso:e o CSS:
fonte
<a>
tag em vez da<img>
tag, já queimg-responsive
definemax-width="100%"
. Você pode explicar como isso é útil?.image-responsive
destina-se ao redimensionamento de imagem com base em um contêiner explícito WIDTH da imagem e não no HEIGHT que é redimensionado com base na largura. Portanto, apesar do número de votos que isso conseguiu, NÃO vai funcionar aqui . No entanto, podemos usar o mesmo método que a imagem responsiva e aplicá-la à altura. Portanto, remova .img-responsive da equação e simplesmente defina max-height como navbar-brand . Veja minha resposta aqui .Você deve usar o código como este:
A classe de uma tag deve ser "logo", não marca da barra de navegação.
fonte
Depende da altura que você deseja que seu logotipo tenha.
A
<a>
altura padrão na barra de navegação é 20 px, portanto, se você especificarheight: 20px
no seu logotipo, ele será bem alinhado.No entanto, isso é meio pequeno para um logotipo, então optei por isso:
Isso aumenta a imagem em 30px e alinha verticalmente a imagem adicionando uma margem negativa ao topo (5px é metade da diferença entre o preenchimento de uma e o tamanho da imagem).
Como alternativa, você pode alterar o preenchimento do
<a>
elemento, por exemplo:fonte
Correção rápida : crie uma classe para você
logo
e definaheight
como28px
. Isso funciona bem com a barra de navegação em todos os dispositivos. Observe que eu disse que funciona "BEM".fonte
Minha abordagem é incluir QUATRO imagens diferentes de tamanhos diferentes para telefones, tablets, desktops e desktops grandes, mas apenas mostrar ONE usando as classes de utilidade responsivas do bootstrap, como segue:
Nota: Você pode substituir a linha comentada pelo código fornecido. Substitua o código php se você não estiver usando o wordpress.
Nota 2: Sim, isso adiciona solicitações ao servidor ao carregar a página, o que pode desacelerar um pouco, mas se você usar uma técnica de sprite css em segundo plano, é possível que o logotipo não seja impresso ao imprimir uma página e o código acima melhor SEO.
fonte
visible-SIZE
daa
etiqueta e coloque-a na etiqueta img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Você não precisa adicionar CSS adicional, pois o Bootstrap3 o fornece. A menos que você queira adicioná-lo. Este é o meu código para colocar o logotipo à esquerda e os links à direita. Esta navegação é responsiva. Faça alterações conforme desejar.
HTML:
fonte
Também o implemento via propriedade de fundo css. Funciona saudável em qualquer valor de largura.
fonte
Outra abordagem é implementar a
.text-hide
classe interna do Bootstrap ao lado de.navbar-brand
substituir o texto / conteúdo da marca por uma imagem de plano de fundo.CSS:
HTML:
Este é um método muito consistente e mantém sua imagem centralizada. Para ajustar o tamanho da imagem, tudo o que você precisa fazer é ajustar
.navbar-brand
largura, pois a altura já está definida.Aqui está uma demonstração ao vivo
fonte
Eu tive o mesmo problema. Eu resolvi assim:
Não há classe de marca da barra de navegação. O resultado parece uma imagem do logotipo que se encaixa na barra de navegação e funciona como um link. Também recomendo usar a classe navbar-right para os itens de menu para que eles não fiquem abaixo do logotipo.
fonte
Talvez isso seja muito simples, mas eu apenas copiei a linha da marca da barra de navegação para que haja duas delas, a imagem e o texto.
E eu criei uma imagem que cabe dentro da barra de navegação (aproximadamente 1/2 da altura).
fonte
Se estiver usando LESS, isso funcionará:
fonte
Esse código funciona perfeitamente se você precisar ver a marca centralizada e com largura automática na barra de ferramentas. Ele contém a função Wordpress para obter o arquivo de imagem do caminho certo:
fonte
Adicione o seguinte à
.navbar-brand
classefonte
meu código de trabalho - bootstrap 3.0.3. quando navbar-toggle, oculta-xs imagem do logotipo original.
fonte
Você pode tentar usar a consulta @media, como abaixo.
Adicione uma classe de logotipo primeiro e use @media para especificar a altura e a largura do logotipo por tamanho de dispositivo. No exemplo abaixo, estou segmentando dispositivos com largura máxima de 320px (iPhone). Você pode brincar com isso até encontrar o melhor ajuste. Maneira fácil de testar: use chrome ou Firefox com o elemento inspecionar. Reduza o seu navegador o máximo possível. Observe a alteração do tamanho do logotipo com base na largura máxima da mídia especificada. Teste no iPhone, dispositivos Android, iPad etc. para obter os resultados desejados.
fonte
Por favor, tente o seguinte código:
fonte
Não consegui fazer nenhuma das outras respostas funcionarem no meu caso (provavelmente não passei no teste de inteligência) e após algumas experiências, é isso que estou usando (que acredito estar muito próximo do padrão do Bootstrap):
E no arquivo CSS, adicionei o seguinte:
Observe que
@Html.ActionLink()
é a sintaxe do Razor para uma<a>
tag. Onde está escrito,@Html.ActionLink(...)
substitua-o por uma<a>
tag apropriada . Igualmente onde diz,@Url.Action(...)
substitua-o por um URL apropriado (nenhuma<a>
tag nesse caso).fonte
Isso não é semântico, mas apenas uso o
a
elemento existente , defino uma imagem de plano de fundo e, em seguida, crio várias variações para resolução @ 2x, tamanhos de tela menores etc.Em seguida, você pode usar a
.text-hide
classe para obter algum texto na página da maneira antiga. Uso simples e eficaz, embora não adequado, de uma imagem.Aqui está um link para a classe auxiliar para substituição de texto:
http://getbootstrap.com/css/#helper-classes
fonte
A melhor e mais fácil resposta para essa pergunta é definir uma largura e altura máximas, dependendo do seu logotipo, a imagem terá no máximo 50px de altura, mas não mais que 200px.
Isso variará dependendo do tamanho do logotipo e dos itens da barra de navegação que você possui.
fonte
Por favor, entenda o código com seu próprio esforço: D Este é o meu rascunho de código e já está funcionando :) Aqui está a captura de tela.
fonte
Em vez de substituir a marca do texto, eu me dividi em duas linhas, como no código abaixo, e dei
img-responsive
classe à imagem ......e além disso, adicionei os seguintes códigos css .......
Se meu código resolver seu problema, é um prazer ...
fonte
// Não se esqueça de adicionar bootstrap na cabeça do seu código.
fonte