การอัปเดตที่สำคัญ: 12/21/15
ขณะนี้มีข้อผิดพลาดใน Mozillaฉันค้นพบว่าแบ่ง navbar กับความกว้างของเบราว์เซอร์ที่มีหลาย ๆ DEMOS บนหน้านี้ โดยพื้นฐานแล้วข้อผิดพลาด mozilla นั้นรวมถึงช่องว่างด้านซ้ายและขวาบนลิงค์แบรนด์ navbar ซึ่งเป็นส่วนหนึ่งของความกว้างของภาพ อย่างไรก็ตามสิ่งนี้สามารถแก้ไขได้ง่ายและฉันได้ทำการทดสอบและฉันค่อนข้างแน่ใจว่ามันเป็นตัวอย่างการทำงานที่เสถียรที่สุดในหน้านี้ มันจะปรับขนาดโดยอัตโนมัติและทำงานบนเบราว์เซอร์ทั้งหมด
เพียงแค่เพิ่มนี้เพื่อ CSS ของคุณและใช้ navbar .img-responsive
ยี่ห้อเดียวกับที่คุณจะ โลโก้ของคุณจะพอดีโดยอัตโนมัติ
.navbar-brand {
padding: 0px; /* firefox bug fix */
}
.navbar-brand>img {
height: 100%;
padding: 15px; /* firefox bug fix */
width: auto;
}
อีกตัวเลือกหนึ่งคือการใช้ภาพพื้นหลัง ใช้ภาพขนาดใดก็ได้จากนั้นตั้งค่าความกว้างที่ต้องการ:
.navbar-brand {
background: url(http://disputebills.com/site/uploads/2015/10/dispute.png) center / contain no-repeat;
width: 200px;
}
ต้นฉบับคำตอบด้านล่าง (สำหรับการอ้างอิงเท่านั้น)
คนดูเหมือนจะลืมเกี่ยวกับวัตถุพอดีมาก โดยส่วนตัวแล้วฉันคิดว่ามันเป็นวิธีที่ง่ายที่สุดที่จะทำงานด้วยเพราะภาพจะปรับเป็นขนาดเมนูโดยอัตโนมัติ หากคุณเพียงแค่ใช้วัตถุที่พอดีกับภาพมันจะปรับขนาดให้เป็นความสูงเมนูโดยอัตโนมัติ
.navbar-brand > img {
max-height: 100%;
height: 100%;
-o-object-fit: contain;
object-fit: contain;
}
มันชี้ให้เห็นว่าสิ่งนี้ไม่ทำงานใน IE "ยัง" มีความเป็นpolyfillแต่ที่อาจจะมากเกินไปถ้าคุณไม่ได้วางแผนที่จะใช้มันสำหรับสิ่งอื่น ดูเหมือนว่าจะมีการวางแผนเชิงวัตถุสำหรับการเปิดตัว IE ในอนาคตดังนั้นเมื่อเกิดเหตุการณ์เช่นนี้ขึ้นในเบราว์เซอร์ทั้งหมด
อย่างไรก็ตามหากคุณสังเกตเห็นคลาส. img-responsive ใน bootstrap ความกว้างสูงสุดคือสมมติว่าคุณกำลังใส่รูปภาพเหล่านี้ในคอลัมน์หรือสิ่งที่มีชุดที่ชัดเจน นี่หมายความว่า 100% หมายถึงเฉพาะความกว้าง 100% ขององค์ประกอบพาเรนต์
.img-responsive
max-width: 100%;
height: auto;
}
เหตุผลที่เราไม่สามารถใช้สิ่งนั้นกับ navbar นั้นเป็นเพราะพาเรนต์ (.navbar-brand) มีความสูงคงที่ที่ 50px แต่ไม่ได้ตั้งค่าความกว้าง
หากเราใช้ตรรกะนั้นและย้อนกลับให้เป็นการตอบสนองตามความสูงเราสามารถมีภาพที่ตอบสนองซึ่งปรับขนาดตามความสูงของแบรนด์แถบ. และโดยการเพิ่มและความกว้างของการตั้งค่าอัตโนมัติมันจะปรับตามสัดส่วน
max-height: 100%;
width: auto;
โดยปกติแล้วเราจะต้องเพิ่มdisplay:block;
ในสถานการณ์ แต่เนื่องจาก navbar-brand มี float: left แล้ว ใช้กับมันโดยอัตโนมัติทำหน้าที่เป็นองค์ประกอบบล็อก
คุณอาจพบสถานการณ์ที่หายากที่โลโก้ของคุณเล็กเกินไป วิธีการตอบสนอง img ไม่ได้คำนึงถึงสิ่งนี้ แต่เราจะทำ ด้วยการเพิ่มคุณสมบัติ "ความสูง" ให้กับ.navbar-brand > img
คุณคุณสามารถมั่นใจได้ว่ามันจะเพิ่มขนาดเช่นเดียวกับลง
max-height: 100%;
height: 100%;
width: auto;
ดังนั้นเมื่อต้องการทำสิ่งนี้ให้สมบูรณ์ฉันจึงนำทั้งสองอย่างมารวมกันและดูเหมือนว่าจะทำงานได้อย่างสมบูรณ์ในเบราว์เซอร์ทั้งหมด
<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>
<img src="logo.png" width="27px" />
: ปรับ