Bootstrap 3 Navbar có Logo


376

Tôi muốn sử dụng thanh điều hướng mặc định Bootstrap 3 với logo hình ảnh thay vì nhãn hiệu văn bản. Cách thích hợp để làm điều này mà không gây ra bất kỳ vấn đề nào với các kích thước màn hình khác nhau là gì? Tôi cho rằng đây là một yêu cầu chung, nhưng tôi chưa thấy một mẫu mã tốt. Một yêu cầu quan trọng khác ngoài việc có màn hình chấp nhận được trên tất cả các kích thước màn hình là khả năng thu gọn menu trên màn hình nhỏ hơn.

Tôi đã thử chỉ đặt một thẻ IMG bên trong thẻ A có lớp thương hiệu navbar, nhưng điều đó khiến menu không hoạt động đúng trên điện thoại Android của tôi. Tôi cũng đã cố gắng tăng chiều cao của lớp điều hướng, nhưng điều đó còn làm mọi thứ trở nên tồi tệ hơn.

Nhân tiện, hình ảnh logo của tôi lớn hơn chiều cao của thanh điều hướng.


2
<img src="logo.png" width="27px" />: điều chỉnh
Uday Hiwarale

29
Với tất cả các câu trả lời cho câu hỏi này, tại sao một trong số chúng không được đánh dấu là giải pháp?
Chris22

1
Tôi nghĩ có hai lý do: 1. Nếu ai đó chỉnh lại trang web, kích thước được cố định trong HTML chứ không phải trong CSS, vì vậy nó tạo ra một cơn ác mộng bảo trì. 2. Không nên là height = "27px" chứ? Đó là chiều cao, không phải chiều rộng, đó là hạn chế.
Canuck

Cả thuộc tính chiều rộng và chiều cao đều cho rằng giá trị của chúng là pixel, do đó bạn không nên thêm 'px' vào giá trị gthe. width="27"
jmmeijer

Tất cả những điều được xem xét, đây là câu trả lời tốt nhất và nên được chấp nhận stackoverflow.com/a/26333342/171456 . Nó phục vụ nhu cầu của cộng đồng SO rộng lớn hơn, những người đã truy cập câu hỏi này từ năm 2013.
Zim

Câu trả lời:


420

Tại sao mọi người đều cố gắng làm điều đó một cách khó khăn? Chắc chắn, một số cách tiếp cận này sẽ hoạt động, nhưng chúng phức tạp hơn mức cần thiết.

OK, trước tiên - bạn cần một hình ảnh sẽ phù hợp với thanh điều hướng của bạn. Bạn có thể điều chỉnh hình ảnh của mình thông qua thuộc tính chiều cao css (cho phép chiều rộng theo tỷ lệ) hoặc bạn chỉ có thể sử dụng hình ảnh có kích thước phù hợp. Bất cứ điều gì bạn quyết định làm - cách thức này sẽ phụ thuộc vào mức độ hình ảnh của bạn.

Vì một số lý do, mọi người đều muốn dán hình ảnh bên trong mỏ neo navbar-brandvà điều này không cần thiết. navbar-brandáp dụng các kiểu văn bản không cần thiết cho hình ảnh, cũng như navbar-leftlớp (giống như kéo sang trái, nhưng để sử dụng trong thanh điều hướng). Tất cả bạn thực sự cần là thêm navbar-left.

<a href="#" class="navbar-left"><img src="/path/to/image.png"></a>

Bạn thậm chí có thể làm theo điều này với một mục thương hiệu điều hướng, sẽ xuất hiện ở bên phải của hình ảnh.


43
Tôi đoán lý do tại sao mọi người đặt hình ảnh bên trong thẻ neo là vì đó là cách mà tài liệu Boostrap thực hiện: getbootstrap.com/components/#navbar-brand-image
cafonso

9
Điều gì nếu bạn muốn sử dụng một hình ảnh lớn hơn?
StevenP

5
@cafonso - Tôi không nói rằng nó không thuộc về một mỏ neo - chỉ là mỏ neo không cần lớp "navbar-brand". Khi lớp đó có mặt - nó thực sự gây rối với cách hiển thị hình ảnh.
Michael

4
@cafonso làm cho một điểm tuyệt vời. Tôi tin rằng TWBS dự định điều này sẽ được sử dụng cho một hình ảnh hoặc văn bản. Và xem xét có bao nhiêu người đã gặp rắc rối với điều này nên là một dấu hiệu cho thấy đã đến lúc họ khắc phục điều này hoặc làm rõ nó trong tài liệu của họ.
Bryan Willis

3
@Michael, các ví dụ tài liệu Bootstrap chính thức cho thấy mỏ neo với lớp navbar-brand. Đây là nguồn gốc của sự nhầm lẫn.
Justin Skiles

148
<div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" 
            data-target=".navbar-ex1-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" rel="home" href="#" title="Buy Sell Rent Everyting">
        <img style="max-width:100px; margin-top: -7px;"
             src="/img/transparent-white-logo.png">
    </a>
</div>

5
lề âm là gì?
Ayrad

3
Các lề âm giúp trung tâm theo chiều dọc cho tôi.
Những từ như Jared

3
Theo bình luận của Edward ... hoặc ít nhất là một bản demo hoạt động
Matías Cánepa

Bạn không cần phải làm rối với lề âm (trừ khi hình ảnh bị cắt xén buồn cười). Cách này không phải là một giải pháp âm thanh mặc dù vì nó hoàn toàn phụ thuộc vào kích thước logo và sẽ phải được điều chỉnh theo từng trường hợp. Dưới đây là một bản demo làm việc của phương pháp này .
Bryan Willis

1
Một tùy chọn tốt hơn sẽ liên tục hoạt động bất kể kích thước / khẩu phần logo là làm những gì .img-responsive làm ngoại trừ đảo ngược nó. Vì .navbar-brand có float: left được áp dụng, nó trở thành một phần tử khối và vì nó có chiều cao 50px, chúng tôi có thể đặt chiều cao tối đa của hình ảnh thành 100%; và nó sẽ KHÔNG BAO GIỜ tràn hoặc làm cho toàn bộ thanh điều hướng phát triển. Nó trở nên hạn chế để phù hợp với chiều cao thương hiệu .navbar. Nếu nó trông quá nhỏ trong thanh điều hướng 50px mặc định, chỉ cần điều chỉnh .navbar-brand> img phần đệm trên và dưới. Dưới đây là câu trả lời hoàn chỉnh với bản demo hoạt động
Bryan Willis

73

Thay đổi kích thước logo của Bootstrap 3

HOÀN THÀNH DEMO VỚI NHIỀU VÍ DỤ

CẬP NHẬT QUAN TRỌNG: 21/12/15

Hiện tại có một lỗi trong Mozilla tôi đã phát hiện ra rằng phá vỡ thanh điều hướng trên một số độ rộng trình duyệt nhất định với NHIỀU DEMOS TRÊN TRANG NÀY . Về cơ bản, lỗi mozilla bao gồm phần đệm bên trái và bên phải trên liên kết thương hiệu navbar như một phần của chiều rộng hình ảnh. Tuy nhiên, điều này có thể được khắc phục dễ dàng và tôi đã thử nghiệm điều này và tôi khá chắc chắn đó là ví dụ hoạt động ổn định nhất trên trang này. Nó sẽ tự động thay đổi kích thước và hoạt động trên tất cả các trình duyệt.

Chỉ cần thêm nó vào css của bạn và sử dụng navbar-brand giống như cách bạn muốn .img-responsive. Logo của bạn sẽ tự động phù hợp

.navbar-brand {
  padding: 0px; /* firefox bug fix */
}
.navbar-brand>img {
  height: 100%;
  padding: 15px; /* firefox bug fix */
  width: auto;
}

Một lựa chọn khác là sử dụng hình nền. Sử dụng một hình ảnh có kích thước bất kỳ và sau đó chỉ cần đặt chiều rộng mong muốn:

.navbar-brand {
  background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
  width: 200px;
}


CÂU TRẢ LỜI GỐC DƯỚI ĐÂY (chỉ để tham khảo)

Mọi người dường như quên đi đối tượng phù hợp rất nhiều. Cá nhân tôi nghĩ rằng đó là cách dễ nhất để làm việc vì hình ảnh tự động điều chỉnh theo kích thước menu. Nếu bạn chỉ sử dụng đối tượng vừa với hình ảnh, nó sẽ tự động thay đổi kích thước theo chiều cao của menu.

    .navbar-brand > img {
      max-height: 100%;
      height: 100%;
      -o-object-fit: contain;
      object-fit: contain;
    }

Nó đã chỉ ra rằng điều này không hoạt động trong IE "chưa". Có một polyfill , nhưng điều đó có thể quá mức nếu bạn không có kế hoạch sử dụng nó cho bất cứ điều gì khác. Có vẻ như sự phù hợp với đối tượng đang được lên kế hoạch cho phiên bản IE phát hành trong tương lai nên một khi điều đó xảy ra, nó sẽ hoạt động trong tất cả các trình duyệt.

Tuy nhiên, nếu bạn nhận thấy lớp .img-responsive trong bootstrap, độ rộng tối đa giả định rằng bạn đang đặt những hình ảnh này trong các cột hoặc một cái gì đó có một bộ rõ ràng với bộ. Điều này có nghĩa là 100% cụ thể có nghĩa là 100% chiều rộng của phần tử cha.

    .img-responsive
        max-width: 100%;
        height: auto;
    }

Lý do chúng tôi không thể sử dụng điều đó với thanh điều hướng là vì cha mẹ (.navbar-brand) có chiều cao cố định là 50px, nhưng chiều rộng không được đặt.

Nếu chúng ta sử dụng logic đó và đảo ngược nó để phản hồi dựa trên chiều cao, chúng ta có thể có một hình ảnh phản hồi theo tỷ lệ chiều cao của thương hiệu .navbar và bằng cách thêm và tự động đặt chiều rộng, nó sẽ điều chỉnh theo tỷ lệ.

max-height: 100%;
width: auto;

Thông thường chúng ta sẽ phải thêm display:block;vào kịch bản, nhưng vì navbar-brand đã có float: left; áp dụng cho nó, nó tự động hoạt động như một yếu tố khối.


Bạn có thể gặp phải trường hợp hiếm hoi khi logo của bạn quá nhỏ. Cách tiếp cận phản hồi img không tính đến điều này, nhưng chúng tôi sẽ làm. Bằng cách thêm thuộc tính "chiều cao" vào, .navbar-brand > imgbạn có thể yên tâm rằng nó sẽ tăng lên cũng như xuống.

max-height: 100%;
height: 100%;
width: auto;

Vì vậy, để hoàn thành điều này, tôi đặt cả hai cùng nhau và nó dường như hoạt động hoàn hảo trong tất cả các trình duyệt.

<style type="text/css">
.navbar-brand>img {
   max-height: 100%;
   height: 100%;
   width: auto;
   margin: 0 auto;


   /* probably not needed anymore, but doesn't hurt */
   -o-object-fit: contain;
   object-fit: contain; 

}
</style>

<nav class="navbar navbar-default">
      <div class="container">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="http://disputebills.com"><img src="http://disputebills.com/site/uploads/2015/10/dispute.png" alt="Dispute Bills"></a>
        </div>
        <div id="navbar" class="collapse navbar-collapse">
          <ul class="nav navbar-nav">
            <li class="active"><a href="#">Home</a></li>
            <li><a href="#about">About</a></li>
            <li><a href="#contact">Contact</a></li>
          </ul>
        </div>
      </div>
</nav>

DEMO http://codepen.io/bootstrapping/pen/KwYGwq


Cảm ơn Jose. Nó không hoạt động trong IE mà tôi chưa bao giờ biết cho đến bây giờ. Tôi chỉnh sửa câu trả lời từ bình luận của bạn. Ngoài ra, tôi không thực sự chắc chắn nếu cả chiều cao và chiều cao tối đa đều cần thiết.
Bryan Willis

Chắc chắn rồi! Object-fit là một trong những bổ sung nổi bật từ webkit / flash engine. Hy vọng trình duyệt khác tích hợp chúng sớm! Trong khi đó chúng tôi sẽ sử dụng hình ảnh nền để làm công việc khó khăn!
Jose A

1
Này Jose thực sự chỉ cần tìm ra một cái gì đó. Kiểm tra bản demo mới. Có vẻ như câu trả lời ban đầu của tôi đã hoạt động trong tất cả các trình duyệt khác không phải vì phù hợp với đối tượng mà vì chiều cao và chiều cao tối đa. Tôi nghĩ đó là tất cả những gì thực sự cần thiết ... Bạn có thể tìm thấy một tình huống mà những điều trên sẽ không hoạt động bây giờ không?
Bryan Willis

Tôi thậm chí không nghĩ rằng sự phù hợp của đối tượng là cần thiết vì chiều cao tối đa và chiều cao thay đổi kích thước theo chiều cao của container giống như .img-responsive sẽ làm.
Bryan Willis

Jose bạn có nghĩ rằng phù hợp với đối tượng thậm chí là làm bất cứ điều gì? Tôi nghĩ rằng chúng ta có thể bỏ nó trong trường hợp này, nhưng tôi không chắc chắn?
Bryan Willis

23

Mặc dù câu hỏi của bạn rất thú vị nhưng tôi không mong đợi sẽ có một câu trả lời cho nó. Có lẽ câu hỏi của bạn quá rộng. Giải pháp của bạn nên phụ thuộc vào: nội dung khác trong thanh điều hướng (số lượng vật phẩm), kích thước logo của bạn, nếu logo của bạn hoạt động nhạy, v.v. Thêm logo vào nhãn hiệu (với nhãn hiệu navbar) có vẻ là điểm khởi đầu tốt. Tôi nên sử dụng lớp thương hiệu navbar vì điều này sẽ thêm phần đệm (trên / dưới) 15 pixel.

Tôi kiểm tra cài đặt này trên http://getbootstrap.com/examples/navbar/ với logo 300x150 pixel.

Toàn màn hình> 1200:

nhập mô tả hình ảnh ở đây

trong khoảng từ 768 đến 992 pixel (menu không được thu gọn):

nhập mô tả hình ảnh ở đây

<768 (menu bị sập)

nhập mô tả hình ảnh ở đây

Bên cạnh các khía cạnh thẩm mỹ tôi không tìm thấy bất kỳ vấn đề kỹ thuật. Trên màn hình nhỏ, logo lớn sẽ chồng lấp hoặc phá vỡ khung nhìn. Màn hình từ 768 đến 992 pixel cũng có các vấn đề khác khi nội dung không khớp với một dòng, xem ví dụ: https://github.com/bassjobsen/jamedo-bootstrap-start-theme/issues/18

Thanh điều hướng mặc định có Ví dụ về thanh điều hướng mặc định thêm lề dưới 30px, vì vậy nội dung của thanh điều hướng của bạn sẽ không bao giờ trùng với nội dung của trang. (các thanh điều hướng cố định sẽ có vấn đề khi chiều cao của thanh điều hướng thay đổi).

Bạn sẽ cần một số truy vấn css và phương tiện để điều chỉnh thanh điều hướng theo nhu cầu của bạn trên các kích thước màn hình khác nhau. Hãy cố gắng thu hẹp câu hỏi của bạn. được mô tả vấn đề bạn tìm thấy trên Android.

cập nhật xem http://bootply.com/77512 để biết ví dụ.

Trên các màn hình nhỏ hơn như điện thoại, menu thu gọn xuất hiện phía trên logo

trao đổi nút và logo trong mã của bạn, logo trước (đặt float: bên trái trên logo)

Không có cách nào để sắp xếp các mục menu vào bất cứ thứ gì ngoại trừ đầu trang

đặt margin-topcho .navbar-collapse ul. Sử dụng chiều cao logo trừ chiều cao thanh điều hướng, để căn chỉnh xuống dưới hoặc (chiều cao logo - chiều cao thanh điều hướng) / 2 vào giữa


1
Tôi đã thử tùy chọn này. Hai vấn đề với nó là: 1) Trên các màn hình nhỏ hơn như điện thoại, menu bị sập xuất hiện phía trên logo (ngay cả khi tôi thêm lớp phản hồi img vào thẻ img logo) và 2) Không có cách nào để căn chỉnh menu các mặt hàng cho bất cứ điều gì ngoại trừ hàng đầu. Bất kỳ điều chỉnh nào khác sẽ làm cho menu bị sụp đổ không hoạt động chính xác.
stepanian

23

Hướng dẫn cách tạo thanh điều hướng bootstrap với logo lớn hơn chiều cao mặc định (50px):

Ví dụ với logo 100px x 100px, CSS tiêu chuẩn:

  1. Tính chiều cao và (phần trên cùng của phần đệm + phần dưới cùng của logo). Ở đây 120px (100px height + padding top (10px) + padding bottom (10px))

  2. Goto bootstrap / tùy chỉnh . Đặt thay vì chiều cao thanh điều hướng 50px> 120px (50 + 70) và thanh điều hướng thu gọn-chiều cao tối đa từ 340px đến 410px (340 + 70). Tải về css.

  3. Trong ví dụ này tôi sử dụng thanh điều hướng này . Trong nhãn hiệu navbar :

      <div class="navbar-header">
        ...
        </button>
        <a class="navbar-brand myLogo" href="#">
          <img src="yourLogo.jpg" />
        </a>
      </div>...

    thêm một lớp, ví dụ myLogoimg (logo của bạn)

    <a class="navbar-brand myLogo" href="#"><img src="yourLogo.jpg" /></a>.

  4. Thêm CSS

    .myLogo {đệm: 10px; }

  5. Phù hợp với kích thước khác.

Thí dụ


1
Giải pháp hợp lý nhất ở đây. giơ ngón tay cái lên
user3718908

1
Đây phải là câu trả lời được chấp nhận. Nó giải quyết vấn đề thay đổi kích thước Navbar để phù hợp với hình ảnh.
Greg Gum

14

Cuối cùng tôi cũng gặp vấn đề tương tự, đây là giải pháp của tôi và tôi đã thử nghiệm nó trên trang web của mình trong cả ba trình duyệt chính: Chrome, Firefox và Internet Explorer.

Trước hết, nếu bạn không sử dụng logo dựa trên văn bản thì hãy xóa hoàn toàn "nhãn hiệu điều hướng" vì tôi thấy lớp đặc biệt này là nguyên nhân chính khiến menu điều hướng bị sụp đổ của tôi tăng gấp đôi.

Hét lên với người dùng3137032 vì đã đưa tôi đi đúng hướng.

Bạn phải làm một thùng chứa hình ảnh phản ứng tùy chỉnh, tôi gọi tôi là "logo"

Đây là phần đánh dấu HTML bootstrap:

<div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="@Url.Action(" Index ", "Home ")" class="logo"><img src="~/resources/images/Logo_Concept.png" /></a>
    </div>
    <div class="navbar-collapse collapse">
      <ul class="nav navbar-nav">
        <li>
          <a href="@Url.Action(" About ", "Home ")">
            <i class="glyphicon glyphicon-info-sign"></i> About
          </a>
        </li>
        <li>
          <a href="@Url.Action(" Contact ", "Home ")">
            <i class="glyphicon glyphicon-phone"></i> Contact
          </a>
        </li>
        <li>
          <a href="@Url.Action(" Index ", "Products ")">
            <i class="glyphicon glyphicon-tag"></i> Products
          </a>
        </li>
      </ul>
    </div>
  </div>
</div>

Và mã CSS:

.logo img {
width: 100% \9; /*Force IE10 and below to size SVG images correctly*/
max-width: 100%;
}

@media (max-width:480px) { 
.logo img {
    width: 70% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 70% !important;
}
}

@media (max-width:400px) { 
.logo img {
    width: 75% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 75%;
}
}

@media (max-width:385px) { 
.logo img {
    width: 70% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 70%;
}
}

@media (max-width:345px) { 
.logo img {
    width: 65% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 65%;
}
}

@media (max-width:335px) { 
.logo img {
    width: 60% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 60%;
}
}

@media (max-width:325px) { 
.logo img {
    width: 55% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 55%;
}
}

@media (max-width:315px) { 
.logo img {
    width: 50% \9; /*Force IE10 and below to size SVG images correctly*/
    max-width: 50%;
}
}

Giá trị trong @media (max-width: x) có thể thay đổi tùy thuộc vào chiều rộng hình ảnh logo của bạn, của tôi là 368px. Tỷ lệ phần trăm có thể cần phải được thay đổi tùy thuộc vào kích thước logo của bạn. Truy vấn @media đầu tiên phải là ngưỡng của bạn và của tôi là chiều rộng hình ảnh (368px) + kích thước nút được thu gọn (44px) + khoảng 60px và nó xuất hiện thành 480px, đó là nơi tôi bắt đầu chia tỷ lệ hình ảnh phản hồi.

Hãy chắc chắn xóa cú pháp dao cạo của tôi khỏi các phần HTML. Hãy cho tôi biết nếu nó khắc phục vấn đề của bạn, nó đã sửa lỗi của tôi.

Chỉnh sửa: Xin lỗi, tôi đã bỏ lỡ vấn đề chiều cao thanh điều hướng của bạn. Có một số cách để thực hiện, cá nhân tôi biên dịch Bootstrap LESS với chiều cao thanh điều hướng phù hợp, với mục đích của tôi, tôi sử dụng 70px và chiều cao hình ảnh của tôi là 68 px. Cách thứ hai để làm điều đó là trong chính tệp bootstrap.css, tìm kiếm ".navbar" và thay đổi chiều cao tối thiểu: theo chiều cao của logo của bạn.


Đây là câu trả lời thực sự
StevenP

1
Loại bỏ các lớp navbar-brandđã làm điều đó cho tôi.
Kai Hartmann

14

Giải pháp của tôi là thêm css "display: inline-block" vào thẻ img.

<img style="display: inline-block; height: 30px; margin-top: -5px">

DEMO: jsfiddle


13

Tôi sử dụng lớp img-responsive và sau đó đặt chiều rộng tối đa cho aphần tử. Như thế này:

<nav class="navbar">
    <div class="navbar-header">
        <a class="navbar-brand" href="#">
            <img class="img-responsive" src="mylogo.png">
        </a>
    </div>
</nav>

và CSS:

.navbar-brand {
    max-width: 50%;
}

2
Tôi tin rằng điều này có nghĩa là bạn đang đặt chiều rộng hình ảnh trong <a>thẻ của mình thay vì <img>thẻ, kể từ khi img-responsiveđặt max-width="100%". Bạn có thể giải thích làm thế nào điều này là hữu ích?
Michael Scheper

Michael đưa ra một điểm tốt. .image-responsivecó nghĩa là để thay đổi kích thước hình ảnh dựa trên một thùng chứa rõ ràng WIDTH của hình ảnh chứ không phải HEIGHT thay đổi kích thước dựa trên chiều rộng. Vì vậy, mặc dù có bao nhiêu upvote này đã nhận được nó KHÔNG làm việc ở đây . Tuy nhiên, chúng ta có thể sử dụng cùng một phương pháp mà hình ảnh phản hồi thực hiện và ÁP DỤNG nó theo chiều cao. Vì vậy, loại bỏ .img-responsive khỏi phương trình và chỉ cần đặt chiều cao tối đa cho nhãn hiệu thanh điều hướng . Xem câu trả lời của tôi ở đây .
Bryan Willis

5

Bạn phải sử dụng mã như thế này:

<div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" 
            data-target=".navbar-ex1-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <a class="logo" rel="home" href="#" title="Buy Sell Rent Everyting">
        <img style=""
             src="/img/transparent-white-logo.png">
    </a>
</div>

Thẻ Class A phải là "logo" không phải là nhãn hiệu điều hướng.


4

Nó phụ thuộc vào chiều cao bạn muốn logo của bạn được.

<a>Chiều cao mặc định trong thanh điều hướng là 20px, vì vậy nếu bạn chỉ định height: 20pxtrên logo của mình, nó sẽ được điều chỉnh độc đáo.

Tuy nhiên, đó là loại nhỏ cho logo, vì vậy điều tôi chọn là:

<div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" 
            data-target=".navbar-ex1-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" rel="home" href="#" title="Brand">
        <img style="height: 30px; margin-top: -5px;"
             src="/img/brand.png">
    </a>
</div>

Điều này làm cho hình ảnh cao 30px và sắp xếp theo chiều dọc của hình ảnh bằng cách thêm một lề âm lên trên cùng (5px là một nửa sự khác biệt giữa phần đệm trên a và kích thước của hình ảnh).

Thay phiên, bạn có thể thay đổi phần đệm trên <a>phần tử, ví dụ:

<div class="navbar-header">
    <button type="button" class="navbar-toggle" data-toggle="collapse" 
            data-target=".navbar-ex1-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
    </button>
    <a class="navbar-brand" rel="home" href="#" title="Brand" style="padding-top: 10px; padding-bottom: 10px">
        <img style="height: 30px;"
             src="/img/transparent-white-logo.png">
    </a>
</div>

4

Quick Fix : Tạo một lớp cho bạn logovà thiết lập heightđể 28px. Điều này hoạt động tốt với thanh điều hướng trên tất cả các thiết bị. Lưu ý rằng tôi đã nói "WELL".

.logo {
  display:block;
  height:28px;
}

3

Cách tiếp cận của tôi là bao gồm BỐN hình ảnh khác nhau có kích thước khác nhau cho điện thoại, máy tính bảng, máy tính để bàn, máy tính để bàn lớn nhưng chỉ hiển thị MỘT bằng cách sử dụng các lớp tiện ích đáp ứng của bootstrap, như sau:

<!--<a class="navbar-brand" href="<?php echo home_url(); ?>/"><?php bloginfo('name'); ?></a>-->

        <a class="navbar-brand visible-xs" href="<?php echo home_url(); ?>/"><img src="/assets/logo-phone.png" alt="<?php bloginfo('name'); ?> Logo" /></a>
        <a class="navbar-brand visible-sm" href="<?php echo home_url(); ?>/"><img src="/assets/logo-tablet.png" alt="<?php bloginfo('name'); ?> Logo" /></a>
        <a class="navbar-brand visible-md" href="<?php echo home_url(); ?>/"><img src="/assets/logo-desktop.png" alt="<?php bloginfo('name'); ?> Logo" /></a>
        <a class="navbar-brand visible-lg" href="<?php echo home_url(); ?>/"><img src="/assets/logo-large.png" alt="<?php bloginfo('name'); ?> Logo" /></a>

Lưu ý: Bạn có thể thay thế dòng nhận xét bằng mã được cung cấp. Thay thế mã php nếu bạn không sử dụng wordpress.

Chỉnh sửa Note2: Có, điều này sẽ thêm các yêu cầu vào máy chủ của bạn khi tải trang có thể làm chậm một chút nhưng nếu bạn sử dụng kỹ thuật sprite css nền, rất có thể logo không được in khi in trang và mã ở trên sẽ nhận được SEO tốt hơn.


Bạn có thể sử dụng một <a> duy nhất và chỉ có 4 <img> khác nhau, một cho mỗi kích thước.
Jonathan Vanasco

@Jonathan Vanasco, tôi sẽ thấy thú vị khi xem bạn sẽ làm điều đó như thế nào
AdRock

1
xóa thẻ visible-SIZEkhỏi athẻ và đặt nó vào thẻ img. <a class="navbar-brand"><img class="visible-xs"/><img class="visible-sm"/></a>
Jonathan Vanasco

3

Bạn không cần thêm CSS, vì Bootstrap3 cung cấp nó. Trừ khi bạn muốn thêm nó. Đây là mã của tôi về việc đặt logo ở bên trái và liên kết ở bên phải. Điều hướng này là đáp ứng. Thay đổi điều này khi bạn thấy phù hợp.

HTML:

<nav class="navbar navbar-expand-lg navbar-light fixed-top" style="background-color:white;">
        <div class="container">
        <a class="navbar-brand" href="#"><img style="   width: 150px;" src="image.jpg" alt="Image text"></a>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
        </button>
            <div class="collapse navbar-collapse" id="navbarResponsive">
                <ul class="navbar-nav ml-auto">
                    <li class="nav-item"><a class="nav-link" href="#">Home</a></li>
                    <li class="nav-item"><a class="nav-link" href="#">Projects</a></li>
                    <li class="nav-item"><a class="nav-link" href="#">Blog</a></li>
                    <li class="nav-item"><a class="nav-link" href="#">Contact</a></li>
                </ul>
            </div>
        </div>
    </nav>

2

Tôi cũng thực hiện nó thông qua tài sản nền css. Nó hoạt động lành trong bất kỳ giá trị chiều rộng.

.navbar-brand{
    float:left;
    height:50px;
    padding:15px 15px;
    font-size:18px;
    line-height:20px;
    background-image: url("../images/logo.png");
    background-repeat: no-repeat;
    background-position: left center
}

2

Một cách tiếp cận khác là triển khai lớp tích hợp của Bootstrap.text-hide cùng với .navbar-brandviệc thay thế văn bản / nội dung thương hiệu bằng hình ảnh nền.

CSS:

.navbar-brand{ 
  background: url(http://example.com/your-logo-here.png) center / contain no-repeat;
  width: 200px;
}

HTML:

<a class="navbar-brand text-hide" href="#">Navbar Brand</a>

Đây là một phương pháp rất phù hợp và giữ hình ảnh của bạn tập trung. Để điều chỉnh kích thước của hình ảnh, tất cả những gì bạn cần làm là điều chỉnh .navbar-brandđộ rộng vì chiều cao đã được đặt.

Đây là bản demo trực tiếp


2

Tôi đã từng gặp vấn đề tương tự. Tôi đã giải quyết nó như thế này:

<a href="#" class="btn btn-link navbar-btn">
  <img class="img-responsive" src="#">
</a>

Không có lớp thương hiệu navbar. Kết quả trông giống như hình ảnh logo phù hợp với thanh điều hướng và hoạt động như một liên kết. Ngoài ra, tôi khuyên bạn nên sử dụng lớp điều hướng bên phải cho các mục menu để chúng không nằm bên dưới logo.

<div class="collapse navbar-collapse navbar-right">
  <ul class="nav navbar-nav" role="navigation">
    <li><a href="#">Item1</a></li>
    <li><a href="#">Item2</a></li>
  </ul>
</div>

1

Có thể điều này quá đơn giản, nhưng tôi chỉ sao chép dòng thương hiệu navbar nên có hai trong số đó, hình ảnh và sau đó là văn bản.

<a class="navbar-brand" href="index.php"><img class="img-responsive" src="images/my-icon.png" width="30" height="25" alt=" "></a>
<a class="navbar-brand" href="index.php">My Brand</a>

Và tôi đã tạo ra một hình ảnh phù hợp bên trong thanh điều hướng (khoảng 1/2 chiều cao).


1

Nếu sử dụng LESS, điều này hoạt động:

@navbar-height: 150px;
@navbar-brand-vpadding: 10px;

.navbar-brand img {
  height: @navbar-height - @navbar-brand-vpadding * 2;
  position: absolute;
  top: @navbar-brand-vpadding;
}

1

Mã này hoạt động hoàn hảo nếu bạn cần xem thương hiệu làm trung tâm và với độ rộng tự động trên thanh công cụ. Nó chứa chức năng Wordpress để lấy tệp hình ảnh từ đường dẫn bên phải:

<a class="navbar-brand page-scroll" rel="home" 
    href="#page-top"  title="Title">
    <img style="height: 100%; width: auto;" 
          src="<?php echo get_template_directory_uri();?>/img/logo.png">


1

Thêm phần sau vào .navbar-brandlớp

.navbar-brand
{
  padding: 0px; // this allows the image to occupy all the padding space of the navbar--brand
}

.navbar-brand > img
{
   height: 100%; // set height to occupy full height space on the navbar-brand
   width: auto; // width should be auto to allow img to scale accordingly
   max-height: 100%; // optional
   mrgin: 0 auto; // optional
}

0

mã làm việc của tôi - bootstrap 3.0.3. khi điều hướng chuyển đổi, hình ảnh logo gốc ẩn-xs.

    <a class="navbar-brand hidden-xs" href="<?=$g4['path']?>/">
    <img src="<?=$g4[path]?>/images/logo_opencode.gif" align=absmiddle alt="brand logo">
    </a>

    <a class="navbar-brand navbar-toggle" href="<?=$g4['path']?>/" style="border:0;margin-bottom:0;">
    <img src="<?=$g4[path]?>/images/logo_opencode.gif" alt="brand logo" style="width:120px;">
    </a>

0

Bạn có thể thử sử dụng truy vấn @media như bên dưới.

Trước tiên, thêm một lớp logo, sau đó sử dụng @media để chỉ định chiều cao và chiều rộng của logo cho mỗi kích thước thiết bị. Trong ví dụ bên dưới, tôi đang nhắm mục tiêu các thiết bị có chiều rộng tối đa 320px (iPhone) Bạn có thể chơi xung quanh với điều này cho đến khi bạn tìm thấy sự phù hợp nhất. Cách dễ dàng để kiểm tra: Sử dụng chrome hoặc Firefox với phần tử kiểm tra. Thu nhỏ trình duyệt của bạn càng xa càng tốt. Quan sát sự thay đổi kích thước logo dựa trên chiều rộng tối đa @media mà bạn chỉ định. Kiểm tra trên iPhone, thiết bị Android, iPad, vv để có kết quả mong muốn.

.logo {
  height: 42px;
  width: 140px;
}

@media (max-width:320px) { 
.logo {
  height: 33px;
  width: 110px;
}
}

0

Vui lòng thử mã sau:

<style>
   .navbar a.navbar-brand {padding: 9px 15px 8px; }
</style>
<a class="navbar-brand" href="#">
   <img src="http://placehold.it/140x34/000000/ffffff/&amp;text=LOGO" alt="">
</a>

0

Không thể thực hiện bất kỳ câu trả lời nào khác trong trường hợp của tôi (có lẽ tôi đã không vượt qua bài kiểm tra trí thông minh) và sau một số thử nghiệm, đây là những gì tôi đang sử dụng (mà tôi tin là rất gần với mặc định của Bootstrap):

   <div class="navbar navbar-default navbar-fixed-top" role="navigation">
      <div class="navbar-header">
         <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse">
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
         </button>
         <div class="navbar-logo">
            <a class="navbar-brand" rel="home" href="@Url.Action("Index", "Home")" title="Home">
               <img src="~/Images/logo.png" class="img-responsive">
            </a>
         </div>
         <div class="collapse navbar-collapse" id="navbar-collapse">
            <ul class="nav navbar-nav">
               <li>@Html.ActionLink("Home", "Index", "Home")</li>
               <li>@Html.ActionLink("Coaching", "Coaching", "Home")</li>
               <li>@Html.ActionLink("Resources", "Resources", "Home")</li>
               <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
               <li>@Html.ActionLink("Blog", "Blog", "Home")</li>
               <li>@Html.ActionLink("About", "About", "Home")</li>
            </ul>
         </div>
      </div>
   </div>

Và trong tệp CSS tôi đã thêm vào như sau:

.navbar-brand {
   padding-top: 5px;
}

.navbar-collapse {
   float: left;
}

.navbar-logo {
   float: left;
}

Lưu ý rằng đó @Html.ActionLink()là cú pháp dao cạo cho một <a>thẻ. Trường hợp nó nói @Html.ActionLink(...)chỉ cần thay thế nó bằng một <a>thẻ thích hợp . Tương tự, nơi nó nói @Url.Action(...)thay thế nó bằng một URL thích hợp (không có <a>thẻ trong trường hợp đó).


0

Đây không phải là ngữ nghĩa nhưng tôi chỉ sử dụng ayếu tố hiện có , đặt hình nền, sau đó tạo nhiều biến thể cho độ phân giải @ 2x, kích thước màn hình nhỏ hơn, v.v.

Sau đó, bạn có thể sử dụng .text-hidelớp để nhận một số văn bản trên trang theo cách thời trang của ol. Đơn giản và hiệu quả mặc dù không sử dụng đúng hình ảnh.

Đây là một liên kết đến lớp trình trợ giúp để thay thế văn bản:

http://getbootstrap.com/css/#helper-groupes


0

Câu trả lời dễ nhất và tốt nhất cho câu hỏi này là đặt chiều rộng và chiều cao tối đa tùy thuộc vào logo của bạn, hình ảnh sẽ cao tối đa 50px nhưng không dài hơn 200px.

<a href="index.html">
<img src="imgs/brand-w.png" style="max-height:50px;max-width:200px;">
</a>

Điều này sẽ thay đổi tùy thuộc vào kích thước logo của bạn và các mục thanh điều hướng bạn có.


0
<header class="navbar navbar-inverse header-outer" role="banner">
  <div class="container form-inline">
    <img src="@Url.Content(" ~/Content/img/Logo-Sample.png ")" alt="Image" id="logo" class="img-responsive pull-left" />

    <div class="pull-right padding-top">
      <form class="hidden-xs" role="form">

        <div class="form-group" style="padding-left:10px">
          <input type="email" class="form-control" id="exampleInputEmail2" placeholder="Username">
        </div>

        <div class="form-group">
          <input type="password" class="form-control" id="exampleInputPassword2" placeholder="Password">
        </div>
        <div class="form-group navbar-remember">
          <label class="white-font">
            <input type="checkbox" class="white-font"> Remember me
          </label>
        </div>
        <button type="button" class="btn btn-primary form-group" title="Sign In">Sign In</button>
      </form>
    </div>
  </div>

</header>

Vui lòng hiểu mã bằng nỗ lực của riêng bạn: D Đây là mã dự thảo của tôi và nó đã hoạt động :) Đây là ảnh chụp màn hình.

nhập mô tả hình ảnh ở đây


0

Thay vì thay thế thương hiệu văn bản, tôi chia thành hai hàng như trong đoạn mã dưới đây và đưa ra img-responsivelớp cho hình ảnh ......

<div class="collapse navbar-collapse navbar-ex1-collapse" style="background: #efefef; height:auto;">
  <div class="container" style="margin-bottom:-1px;">
    <div class="row">
      <div class="col-md-3">
        <div id="menubar-logo">
          <a href="index.html"><img src="img/tl_logo.png" class="img-responsive" alt="Triple Luck IT Service Logo"></a>
        </div>
      </div>
      <div class=" col-md-offset-3 col-md-6">

        <ul class="nav navbar-nav">
          <li><a href="index.php" class="active">Home</a></li>
          <li><a href="about_us.php">About Us</a></li>
          <li><a href="contact_us.php">Contact Us</a></li>
        </ul>
      </div>
    </div>
    <!-- end of "row" -->
  </div>
  <!-- end of "container" -->
</div>
<!-- end of "collapse" -->

và ngoài ra, tôi đã thêm các mã css sau .......

#menubar-logo img {
  margin-top: 10px;
  margin-bottom: 20px;
  margin-right: 10px;
}

Nếu mã của tôi giải quyết vấn đề của bạn, đó là niềm vui của tôi .....


0
 <div class="navbar navbar-default navbar-fixed-top" role="navigation">
        <div class="container">
            <div class="navbar-header" >
               <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                   <span class="sr-only">Toggle navigation</span>
                   <span class="icon-bar"></span>
                   <span class="icon-bar"></span>
                   <span class="icon-bar"></span>

                   </button>
                <a class="navbar-brand" href="Default.aspx"> <span> <img alt="Logo" src="Images/shopify-bag.png"height="35" width="40"/></span> Shopping GO</a>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav navbar-right"></ul>

// Đừng quên thêm bootstrap vào đầu mã của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.