Я хочу использовать панель навигации по умолчанию в Bootstrap 3 с логотипом вместо текста. Как правильно это сделать, не вызывая проблем с экранами разных размеров? Я предполагаю, что это общее требование, но я еще не видел хороший пример кода. Ключевым требованием, помимо приемлемого отображения на всех размерах экрана, является возможность выбора меню на меньших экранах.
Я попытался поместить тег IMG в тег A, который имеет класс navbar-brand, но из-за этого меню на моем телефоне с Android не функционировало. Я также попытался увеличить высоту класса navbar, но это все испортило еще больше.
Кстати, изображение моего логотипа больше, чем высота панели навигации.
<img src="logo.png" width="27px" />
:width="27"
Ответы:
Почему все пытаются сделать это трудным путем? Конечно, некоторые из этих подходов будут работать, но они более сложны, чем необходимо.
Хорошо, во-первых - вам нужно изображение, которое поместится в вашей панели навигации. Вы можете настроить изображение с помощью атрибута css height (позволяя масштабировать ширину) или просто использовать изображение подходящего размера. Что бы вы ни решили сделать - то, как это будет выглядеть, будет зависеть от того, насколько хорошо вы измените размер своего изображения.
По какой-то причине каждый хочет прикрепить изображение внутри якоря
navbar-brand
, и это не обязательно.navbar-brand
применяет текстовые стили, которые не нужны к изображению, а также кnavbar-left
классу (точно так же, как pull-left, но для использования в панели навигации). Все, что вам действительно нужно, это добавитьnavbar-left
.Вы можете даже следовать за этим с товарным знаком navbar, который появится справа от изображения.
источник
navbar-brand
. Это источник путаницы.источник
ПОЛНАЯ ДЕМО С МНОГИМИ ПРИМЕРАМИ
ВАЖНОЕ ОБНОВЛЕНИЕ: 21.12.15
В настоящее время в Mozilla обнаружена ошибка, которая нарушает навигационную панель в браузерах определенной ширины с помощью MANY DEMOS ON THIS PAGE . По сути, ошибка Mozilla включает в себя левый и правый отступы на ссылку бренда Navbar как часть ширины изображения. Тем не менее, это можно легко исправить, и я проверил это, и я уверен, что это самый стабильный рабочий пример на этой странице. Он автоматически изменит размер и работает во всех браузерах.
Просто добавьте это в ваш css и используйте navbar-brand так же, как и вы
.img-responsive
. Ваш логотип будет автоматически соответствоватьДругой вариант - использовать фоновое изображение. Используйте изображение любого размера, а затем просто установите желаемую ширину:
ОРИГИНАЛЬНЫЙ ОТВЕТ НИЖЕ (только для справки)
Кажется, люди часто забывают об объектах. Лично я считаю, что с ним проще всего работать, потому что изображение автоматически подстраивается под размер меню. Если вы просто используете подгонку объекта к изображению, он автоматически изменит размеры до высоты меню.
Было отмечено, что это не работает в IE "пока". Есть полифилл , но он может быть чрезмерным, если вы не планируете использовать его для чего-либо еще. Выглядит так, как будто планируется подгонка объекта в будущем выпуске IE объектов, поэтому, как только это произойдет, это сработает во всех браузерах.
Тем не менее, если вы заметили, что .img-отзывчивый класс в начальной загрузке, максимальная ширина предполагает, что вы помещаете эти изображения в столбцы или что-то, что имеет явное с set. Это будет означать, что 100% означает 100% ширину родительского элемента.
Причина, по которой мы не можем использовать это с панелью навигации, заключается в том, что родительский элемент (.navbar-brand) имеет фиксированную высоту 50 пикселей, но ширина не установлена.
Если принять эту логику и обратной , чтобы быть отзывчивыми на основе высоты , мы можем иметь адаптивное изображение, чешуйки на высоту .navbar-бренде и путем добавления и автоматический набором ширина будут приспосабливаться к пропорции.
Обычно мы должны были бы добавить
display:block;
к сценарию, но так как у navbar-brand уже есть float: left; Применительно к нему он автоматически действует как блочный элемент.Вы можете столкнуться с редкой ситуацией, когда ваш логотип слишком маленький. Подход img-отзывчивый не принимает это во внимание, но мы будем. Кроме того, добавив атрибут «height» к
.navbar-brand > img
вам, вы можете быть уверены, что он будет увеличиваться и уменьшаться.Поэтому, чтобы завершить это, я собрал их вместе, и, похоже, они отлично работают во всех браузерах.
ДЕМО http://codepen.io/bootstrapped/pen/KwYGwq
источник
Хотя ваш вопрос интересен, я не ожидаю, что будет один ответ на него. Может быть, ваш вопрос слишком широк. Ваше решение должно зависеть от: другого содержимого в панели навигации (количества элементов), размеров вашего логотипа, должен ли ваш логотип действовать адаптивно и т. Д. Добавление логотипа в букву a (с брендом navbar) кажется хорошей отправной точкой. Я должен использовать класс navbar-brand, потому что это добавит отступ (верх / низ) 15 пикселей.
Я проверяю этот параметр на http://getbootstrap.com/examples/navbar/ с логотипом 300x150 пикселей.
Полный экран> 1200:
от 768 до 992 пикселей (меню не свернуто):
<768 (меню свернуто)
Помимо эстетических аспектов я не нашел никаких технических проблем. На маленьких экранах большой логотип может перекрывать или разрушать область просмотра. Экраны размером от 768 до 992 пикселей также имеют другие проблемы, когда содержимое не помещается в строку, см., Например: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18
Панель навигации поумолчанию имеет пример Панель навигации по умолчанию добавляет нижнее поле 30 пикселей, поэтому содержимое панели навигации не должно перекрывать содержимое вашей страницы. (фиксированные навигационные панели будут иметь проблемы при изменении высоты навигационной панели).Вам понадобятся некоторые CSS и медиа-запросы, чтобы адаптировать навигационную панель к вашим потребностям на экранах разных размеров. Пожалуйста, попробуйте сузить свой вопрос. быть опишите проблему, которую вы обнаружили на Android.
обновление см. http://bootply.com/77512 для примера.
поменяйте местами кнопку и логотип в вашем коде, сначала логотип (установите поплавок: слева на логотипе)
установить
margin-top
для.navbar-collapse ul
. Использовать высоту логотипа минус высота панели навигации, чтобы выровнять по дну или (высота логотипа - высота панели навигации) / 2 по центруисточник
Инструкция, как создать загрузочную навигационную панель с логотипом, который больше высоты по умолчанию (50 пикселей):
Пример с логотипом 100px x 100px, стандартный CSS:
Вычислите высоту и (отступы сверху + отступы снизу) логотипа. Здесь 120px (высота 100px + верхний отступ (10px) + нижний отступ (10px))
Перейти к начальной загрузке / настройке . Установите вместо высоты навигационной панели 50px> 120px (50 + 70) и navbar-collapse-max-height от 340px до 410px (340 + 70). Скачать css.
В этом примере я использую эту панель навигации . В навбар-бренд :
добавьте класс, например myLogo , и img (ваш логотип)
<a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>
,Добавить CSS
.myLogo {padding: 10px; }
Подходит для других размеров.
пример
источник
Ну, наконец-то у меня появилась эта проблема, вот мое решение, и я протестировал его на своем сайте во всех трех основных браузерах: Chrome, Firefox и Internet Explorer.
Прежде всего, если вы не используете текстовый логотип, полностью удалите «navbar-brand», так как я обнаружил, что именно этот класс является основной причиной удвоения моего свернутого навигационного меню.
Привет пользователю 3137032, чтобы он вел меня в правильном направлении.
Вы должны сделать пользовательский адаптивный контейнер изображений, я назвал мой "логотип"
Вот начальная разметка HTML:
И код CSS:
Значение в @media (max-width: x) может варьироваться в зависимости от ширины изображений вашего логотипа, у меня это 368px. Процентные доли, возможно, также должны быть изменены в зависимости от размера вашего логотипа. Первый запрос @media должен быть вашим порогом, а мой был шириной изображения (368 пикселей) + размер свернутой кнопки (44 пикселя) + около 60 пикселей, и он достиг 480 пикселей, и именно здесь я начинаю адаптивное масштабирование изображения.
Пожалуйста, не забудьте удалить мой синтаксис бритвы из частей HTML. Дайте мне знать, если это решит вашу проблему, это исправило мою.
Изменить: Извините, я пропустил ваш вопрос высоты Navbar. Есть несколько способов сделать это, лично я скомпилирую Bootstrap LESS с соответствующей высотой навигационной панели, для своих целей я использую 70px, а высота моего изображения - 68 px. Второй способ сделать это - в самом файле bootstrap.css найти «.navbar» и изменить min-height: на высоту вашего логотипа.
источник
navbar-brand
сделало это для меня.Мое решение - добавить css "display: inline-block" в тег img.
ДЕМО: jsfiddle
источник
Я использую img-отзывчивый класс и затем устанавливаю максимальную ширину
a
элемента. Нравится:и CSS:
источник
<a>
теге вместо<img>
тега, так какimg-responsive
устанавливаетmax-width="100%"
. Можете ли вы объяснить, как это полезно?.image-responsive
предназначен для изменения размера изображения на основе явной ширины контейнера изображения, а не высоты, которая изменяется на основе ширины. Так что, несмотря на то, сколько голосов проголосовало против, это не сработает, смотрите здесь . Однако мы можем использовать тот же метод, что и для отзывчивого изображения, и применить его к высоте. Поэтому удалите .img-отзывчивый из уравнения и просто установите max-height для navbar-brand . Смотрите мой ответ здесь .Вы должны использовать код как это:
Класс А тега должен быть «логотип», а не navbar-бренд.
источник
Это зависит от того, какой высоты вы хотите, чтобы ваш логотип был.
Высота по умолчанию
<a>
в панели навигации составляет 20 пикселей, поэтому, если вы укажетеheight: 20px
свой логотип, он будет хорошо совмещен.Тем не менее, это немного мало для логотипа, поэтому я выбрал следующее:
Это делает изображение высотой 30px и выравнивает его по вертикали, добавляя отрицательный отступ к вершине (5px составляет половину разницы между отступом a и размером изображения).
В качестве альтернативы вы можете изменить заполнение
<a>
элемента, например:источник
Быстрое исправление : создайте класс для себя
logo
и установитеheight
для28px
. Это хорошо работает с navbar на всех устройствах. Обратите внимание, я сказал, что работает "ХОРОШО".источник
Мой подход заключается в том, чтобы включить ЧЕТЫРЕ разных изображения разных размеров для телефонов, планшетов, настольных компьютеров, больших настольных компьютеров, но показывать только ОДИН, используя отзывчивые служебные классы начальной загрузки, как указано ниже:
Примечание. Вы можете заменить закомментированную строку предоставленным кодом. Замените PHP-код, если вы не используете WordPress.
Редактировать Примечание 2: Да, это добавляет запросы на ваш сервер при загрузке страницы, что может немного замедлиться, но если вы используете метод фонового спрайта css, скорее всего, логотип не будет напечатан при печати страницы, и приведенный выше код должен получить лучше SEO.
источник
visible-SIZE
изa
тега и поместите его в тег img.<a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Вам не нужно добавлять дополнительный CSS, так как Bootstrap3 предоставляет его. Если вы не хотите добавить его. Это мой код размещения логотипа слева и ссылки справа. Эта навигация отзывчива. Внесите изменения в это, как считаете нужным.
HTML:
источник
Я также реализую это через свойство фона CSS. Это работает здоровым при любом значении ширины.
источник
Другой подход заключается в реализации встроенного
.text-hide
класса Bootstrap наряду с.navbar-brand
заменить бренд текст / контент с фоновым изображением.CSS:
HTML:
Это очень последовательный метод, который держит ваше изображение в центре. Чтобы настроить размер изображения, все что вам нужно сделать, это настроить
.navbar-brand
ширину, так как высота уже установлена.Вот живая демонстрация
источник
У меня такая же проблема. Я решил это так:
Там нет Навбар-бренд класса. Результат выглядит как изображение логотипа, которое соответствует navbar и работает как ссылка. Также я рекомендую использовать класс navbar-right для пунктов меню, чтобы они не опускались ниже логотипа.
источник
Может быть, это слишком просто, но я просто скопировал строку с брендом navbar, чтобы их было два: изображение и текст.
И я создал изображение, которое помещается внутри панели навигации (примерно 1/2 высоты).
источник
Если вы используете LESS, это работает:
источник
Этот код прекрасно работает, если вам нужно видеть бренд по центру и с автоматической шириной на панели инструментов. Он содержит функцию Wordpress для получения файла изображения по правильному пути:
источник
Добавьте следующее к
.navbar-brand
классуисточник
мой рабочий код - bootstrap 3.0.3. когда navbar-toggle, скрытое-xs оригинальное изображение логотипа.
источник
Вы можете попробовать использовать запрос @media, например ниже.
Сначала добавьте класс логотипа, а затем используйте @media, чтобы указать высоту и ширину логотипа для каждого размера устройства. В приведенном ниже примере я нацеливаюсь на устройства, максимальная ширина которых составляет 320 пикселей (iPhone). Вы можете поэкспериментировать с этим, пока не найдете наиболее подходящую. Простой способ проверки: используйте Chrome или Firefox с проверяющим элементом. Сократите ваш браузер как можно дальше. Обратите внимание на изменение размера логотипа в зависимости от заданной вами максимальной ширины @media. Тестируйте на iPhone, устройствах Android, iPad и т. Д., Чтобы получить желаемые результаты.
источник
Пожалуйста, попробуйте следующий код:
источник
В моем случае не удалось заставить другие ответы работать (я, вероятно, не прошел тест на интеллект), и после некоторых экспериментов я использую это (которое, я считаю, очень близко к настройке Bootstrap по умолчанию):
И в файле CSS я добавил следующее:
Обратите внимание, что
@Html.ActionLink()
это синтаксис Razor для<a>
тега. Там, где написано,@Html.ActionLink(...)
просто замените его соответствующим<a>
тегом. В том же месте, где написано,@Url.Action(...)
замените его соответствующим URL (<a>
в этом случае нет тега).источник
Это не семантика, я просто использую существующие
a
элемент, устанавливаю фоновое изображение, затем создаю несколько вариаций для разрешения @ 2x, меньших размеров экрана и т. Д.Затем вы можете использовать
.text-hide
класс, чтобы получить текст на странице по-старому. Простое и эффективное, но не правильное использование изображения.Вот ссылка на вспомогательный класс для замены текста:
http://getbootstrap.com/css/#helper-classes
источник
Самый простой и лучший ответ на этот вопрос - установить максимальную ширину и высоту в зависимости от вашего логотипа, изображение будет иметь максимальную высоту 50px, но не более 200px.
Это будет зависеть от размера вашего логотипа и имеющихся у вас элементов навигационной панели.
источник
Пожалуйста, поймите код самостоятельно: D Это мой черновик кода, и он уже работает :) Вот скриншот.
источник
Вместо замены текстового брендинга я разделил на две строки, как показано в коде ниже, и дал
img-responsive
класс изображению ......и кроме того, я добавил следующие коды CSS .......
Если мой код решит вашу проблему, я с удовольствием .....
источник
// Не забыли добавить загрузчик в начало вашего кода.
источник