สี navbar ใน Twitter Bootstrap


113

ฉันจะเปลี่ยนสีพื้นหลังของแถบนำทางของ Twitter Bootstrap 2.0.2 ได้อย่างไร ฉันจะเปลี่ยนสีขององค์ประกอบทั้งหมดของแถบนำทางเพื่อสะท้อนสีพื้นหลังได้อย่างไร


1
แก้ไข ทำการเปลี่ยนแปลงใน bootstrap.css .navbar-inner {background-color: # 2c2c2c; เปลี่ยนสีพื้นหลังแสดงความคิดเห็นอย่างอื่น ขอบคุณ
Gattoo

12
ไม่แนะนำให้คุณแก้ไขสไตล์ชีต css หลักของ bootstrap เพียงเพราะเมื่อคุณอัปเดตสไตล์ชีตการเปลี่ยนแปลงทั้งหมดของคุณจะหายไปดังนั้นเพียงแค่รวมการแก้ไขที่คุณต้องการในสไตล์ชีทของคุณเอง
Andres Ilich

ขอบคุณ Andres วิธีอื่น ๆ ในการเปลี่ยนพฤติกรรมของ Bootstrap คืออะไร? Navbar สร้างความเจ็บปวดให้กับเว็บไซต์ส่วนใหญ่เนื่องจากผู้คนไม่สามารถเชื่อได้ว่าเว็บดีต่อสุนทรียศาสตร์เหมือนกับการใช้งาน
Gattoo

4
คุณสามารถเขียนทับกฎ bootstrap ส่วนใหญ่ในสไตล์ชีตของคุณเองได้โดยไม่จำเป็นต้องแตะสไตล์ชีท bootstrap.css เลย ด้วยวิธีนี้เมื่ออัปเดต bootstrap คุณสามารถอัปเดตได้ทันทีและการเปลี่ยนแปลงทั้งหมดของคุณจะยังคงอยู่และในลักษณะนี้คุณสามารถเขียนทับสไตล์บูสแทรปให้เหมาะกับความต้องการของคุณ (ไม่ว่าจะเป็นแบบอักษรหรือสี) ของไซต์ของคุณ
Andres Ilich

คำตอบที่ง่ายกว่ามาก: stackoverflow.com/questions/18529274/…
Chris Johnson

คำตอบ:


134

คุณสามารถเขียนทับสี bootstrap รวมทั้ง.navbar-innerคลาสได้โดยกำหนดเป้าหมายในสไตล์ชีตของคุณเองซึ่งต่างจากการแก้ไขสไตล์ชีท bootstrap.css ดังนี้:

.navbar-inner {
  background-color: #2c2c2c; /* fallback color, place your own */

  /* Gradients for modern browsers, replace as you see fit */
  background-image: -moz-linear-gradient(top, #333333, #222222);
  background-image: -ms-linear-gradient(top, #333333, #222222);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));
  background-image: -webkit-linear-gradient(top, #333333, #222222);
  background-image: -o-linear-gradient(top, #333333, #222222);
  background-image: linear-gradient(top, #333333, #222222);
  background-repeat: repeat-x;

  /* IE8-9 gradient filter */
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);
}

คุณเพียงแค่ปรับเปลี่ยนสไตล์เหล่านั้นทั้งหมดด้วยสไตล์ของคุณเองและพวกเขาจะถูกหยิบขึ้นมาเช่นตัวอย่างเช่นนี้ซึ่งฉันจะกำจัดเอฟเฟกต์การไล่ระดับสีทั้งหมดและตั้งค่าสีพื้นหลังสีดำทึบ:

.navbar-inner {
  background-color: #000; /* background color will be black for all browsers */
  background-image: none;
  background-repeat: no-repeat;
  filter: none;
}

คุณสามารถใช้ประโยชน์จากเครื่องมือเช่นColorzilla Gradient Editorและสร้างสีไล่ระดับของคุณเองสำหรับเบราว์เซอร์ทั้งหมดและแทนที่สีเดิมด้วยสีของคุณเอง

และตามที่ฉันได้กล่าวไว้ในความคิดเห็นฉันไม่แนะนำให้คุณแก้ไขสไตล์ชีต bootstrap.css โดยตรงเนื่องจากการเปลี่ยนแปลงทั้งหมดของคุณจะหายไปเมื่อสไตล์ชีทได้รับการอัปเดต (เวอร์ชันปัจจุบันคือv2.0.2 ) ดังนั้นจึงขอแนะนำให้คุณรวมทั้งหมด การเปลี่ยนแปลงของคุณภายในสไตล์ชีตของคุณเองควบคู่ไปกับสไตล์ชีต bootstrap.css แต่อย่าลืมเขียนทับคุณสมบัติที่เหมาะสมทั้งหมดเพื่อให้มีความสอดคล้องกันในเบราว์เซอร์


2
background-image: none;หกครั้ง?
Nowaker

2
@DamianNowak ว้าเพิ่งสังเกตว่าขอบคุณสำหรับเคล็ดลับ: D สุดยอดสมองผายลม
Andres Ilich

ขอบคุณ. มันทำให้ฉันคลั่งไคล้ที่ฉันไม่สามารถตั้งค่าสีพื้นหลังเป็นอะไรก็ได้และนำสิ่งนั้นมาใช้กับแถบนำทางทั้งหมด
Automatico

30

ทรัพยากรที่ดีเยี่ยมเพื่อดูวิธีการรูปแบบบูตคือbootswatch.com มีตัวอย่างที่ดีและแสดงโค้ดด้วย ในระยะสั้นพวกเขาใช้ lessc เพื่อคอมไพล์ bootstrap.css ใหม่เป็น color-theme.css ใหม่ของคุณ สิ่งที่ดีของแนวทางของพวกเขาคือสร้างขึ้นจาก bootstrap ดังนั้นเมื่อมีการอัปเดต bootstrap คุณเพียงแค่คอมไพล์ใหม่

ลิงค์เกี่ยวกับการใช้ lessc และ bootstrap:


ทรัพยากรที่ยอดเยี่ยม Alexander ขอบคุณมาก.
Gattoo

1
ขอบคุณสำหรับลิงค์ bootswatch :)
Akshat Jiwan Sharma

6

หากคุณไม่มีเวลาเรียนรู้ "น้อย" หรือทำอย่างถูกต้องนี่คือการแฮ็กที่สกปรก ...

เพิ่มสิ่งนี้ด้านบนที่คุณแสดง HTML แถบนำทาง bootstrap - อัปเดตสีตามต้องการ ..

<style type="text/css">   

.navbar-inner {
    background-color: red;
    background-image: linear-gradient(to bottom, blue, green);
    background-repeat: repeat-x;
    border: 1px solid yellow;
    border-radius: 4px 4px 4px 4px;
    box-shadow: 0 1px 4px rgba(0, 0, 0, 0.067);
    min-height: 40px;
    padding-left: 20px;
    padding-right: 20px;
}

.dropdown-menu {
    background-clip: padding-box;
    background-color: red;
    border: 1px solid rgba(0, 0, 0, 0.2);
    border-radius: 6px 6px 6px 6px;
    box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);
    display: none;
    float: left;
    left: 0;
    list-style: none outside none;
    margin: 2px 0 0;
    min-width: 160px;
    padding: 5px 0;
    position: absolute;
    top: 100%;
    z-index: 1000;
}

.btn-group.open .btn.dropdown-toggle {
  background-color: red;
}

.btn-group.open .btn.dropdown-toggle {
  background-color:lime;
}

.navbar .nav li.dropdown.open > .dropdown-toggle,
.navbar .nav li.dropdown.active > .dropdown-toggle,
.navbar .nav li.dropdown.open.active > .dropdown-toggle {
  color:white;
  background-color:Teal;
}

.navbar .nav > li > a {
    color: white;
    float: none;
    padding: 10px 15px;
    text-decoration: none;
    text-shadow: 0 0px 0 #ffffff;
}

.navbar .brand {
  display: block;
  float: left;
  padding: 10px 20px 10px;
  margin-left: -20px;
  font-size: 20px;
  font-weight: 200;
  color: white;
  text-shadow: 0 0px 0 #ffffff;
}

.navbar .nav > li > a:focus,
.navbar .nav > li > a:hover {
  color: white;
  text-decoration: none;
  background-color: transparent;
}

.navbar-text {
  margin-bottom: 0;
  line-height: 40px;
  color: white;
}

.dropdown-menu li > a {
  display: block;
  padding: 3px 20px;
  clear: both;
  font-weight: normal;
  line-height: 20px;
  color: white;
  white-space: nowrap;
}

.navbar-link {
  color: white;
}

.navbar-link:hover {
  color: white;
}

</style>


4

ฉันใช้ Bootstrap เวอร์ชัน 3.2.0 และดูเหมือนว่า. navbar-inner จะไม่มีอีกแล้ว

วิธีแก้ปัญหาที่นี่ซึ่งแนะนำการลบล้าง. navbar-inner ไม่ได้ผลสำหรับฉัน - สียังคงเหมือนเดิม

สีจะเปลี่ยนก็ต่อเมื่อฉันทับ. navbar ดังที่แสดงด้านล่าง:

.navbar {
    background-color: #A4C8EC;
    background-image: none;
}

3

วิธีที่ดีที่สุดในปัจจุบันคือการติดตั้งคอมไพเลอร์บรรทัดคำสั่ง LESS โดยใช้

$ npm install -g less jshint recess uglify-js

เมื่อคุณทำสิ่งนี้เสร็จแล้วให้ไปที่โฟลเดอร์ less ในไดเร็กทอรีจากนั้นแก้ไขไฟล์ variable.less และคุณสามารถเปลี่ยนตัวแปรได้มากมายตามสิ่งที่คุณต้องการรวมถึงสีของแถบนำทาง

@navbarCollapseWidth:             979px;

@navbarHeight:                    40px;
@navbarBackgroundHighlight:       #ffffff;
@navbarBackground:                darken(@navbarBackgroundHighlight, 5%);
@navbarBorder:                    darken(@navbarBackground, 12%);

@navbarText:                      #777;
@navbarLinkColor:                 #777;
@navbarLinkColorHover:            @grayDark;
@navbarLinkColorActive:           @gray;
@navbarLinkBackgroundHover:       transparent;
@navbarLinkBackgroundActive:      darken(@navbarBackground, 5%);

เมื่อคุณทำเสร็จแล้วให้ไปที่ไดเรกทอรี bootstrap ของคุณและเรียกใช้คำสั่ง make


2

หากคุณใช้ LESS คุณสามารถใช้ Mixins สำหรับโค้ดที่น้อยลง ฉันจะเพิ่มการไล่ระดับสีเส้นขอบและรัศมีขอบ:

.navbar-inner {
  #gradient > .vertical(#ffffff, #ECECEC);
  border: #E2E2E2;
  .border-radius(6px);
}

* หากคุณใช้อัญมณีราง twitter-bootstrap-rail ฉันจะทำสิ่งนี้โดยตรงในไฟล์ bootstrap_and_overrides.css.less *


2

นั่นคือสิ่งที่ฉันทำ

.navbar-inverse .navbar-inner {
  background-color: #E27403; /* it's flat*/
 background-image: none;
}

.navbar-inverse .navbar-inner {
  background-image: -ms-linear-gradient(top, #E27403, #E49037);
  background-image: -webkit-linear-gradient(top, #E27403, #E49037);
  background-image: linear-gradient(to bottom, #E27403, #E49037);
}

มันใช้งานได้ดีสำหรับเนวิเกเตอร์ทั้งหมดคุณสามารถดูการสาธิตได้ที่นี่http://caverne.frด้านบน


1

ใน bootstrap.css บรรทัด 4784 เราจะเห็น:

.navbar-inverse .navbar-inner {
  background-color: #FFFFFFF;
  background-image: -moz-linear-gradient(top, #222222, #111111);
  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111));
  background-image: -webkit-linear-gradient(top, #222222, #111111);
  background-image: -o-linear-gradient(top, #222222, #111111);
  background-image: linear-gradient(to bottom, #222222, #111111);
  background-repeat: repeat-x;
  border-color: #252525;
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0);
}

คุณต้องลบการประกาศคุณสมบัติ "ภาพพื้นหลัง" ทั้งหมดเพื่อให้ได้เอฟเฟกต์ที่ต้องการ


1

มีดโกนของไสยจะไม่บอกว่าให้ทำสิ่งนี้จนกว่าคุณจะต้องการอะไรที่ซับซ้อนกว่านี้หรือ? เป็นการแฮ็กเล็กน้อย แต่อาจเหมาะกับความต้องการของผู้ที่ต้องการการแก้ไขอย่างรวดเร็ว

.navbar-default .container-fluid{
    background-color:#62ADD7; // Change the color
    margin: -1px -1px 10px -1px; // Get rid of the border
}

1

หากคุณกำลังใช้ Bootstrap เวอร์ชัน LESS หรือ SASS วิธีที่มีประสิทธิภาพที่สุดคือการเปลี่ยนชื่อตัวแปรในไฟล์ LESS หรือ SASS

$navbar-default-color:              #FFFFFF !default;
$navbar-default-bg:                 #36669d !default;
$navbar-default-border:             $navbar-default-bg !default;

นี่เป็นวิธีที่ง่ายที่สุดและมีประสิทธิภาพที่สุดในการเปลี่ยน Bootstraps Navbar คุณไม่จำเป็นต้องเขียนการลบล้างและโค้ดจะยังคงสะอาดอยู่



0

จริงๆแล้วฉันแค่เขียนทับสิ่งที่ฉันต้องการเปลี่ยนแปลงใน site.css คุณควรโหลด site.css หลังจาก bootstrap ดังนั้นมันจะเขียนทับคลาส สิ่งที่ฉันทำตอนนี้มีเพียงแค่สร้างคลาสของตัวเองด้วยธีม bootstrap ของฉันเอง เรื่องเล็กน้อยเช่นนี้

.navbar-nav li a{
    color: #fff;
    font-size: 15px;
    margin-top: 9px;
}
.navbar-nav li a:hover{

    background-color: #18678E;
    height: 61px;
}

ฉันยังเปลี่ยนความชอบของข้อผิดพลาดในการตรวจสอบความถูกต้องในลักษณะเดียวกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.