วิธีทำให้ <button> ใน Bootstrap ดูเหมือนลิงค์ปกติใน nav-tabs?


110

ฉันทำงานใน (เดิมคือ Twitter) Bootstrap 2 และฉันต้องการจัดรูปแบบปุ่มให้เหมือนกับว่าเป็นลิงก์ปกติ ไม่ใช่แค่ลิงค์ธรรมดา ๆ แต่; สิ่งเหล่านี้จะอยู่ใน<ul class="nav nav-tabs nav-stacked">ภาชนะ มาร์กอัปจะลงเอยเช่นนี้:

<form action="..." method="post">
  <div class="row-fluid">
    <!-- Navigation for the form -->
    <div class="span3">
      <ul class="nav nav-tabs nav-stacked">
        <li><button type="submit" name="op" value="Link 1">Link 1</button></li>
        <li><button type="submit" name="op" value="Link 2">Link 2</button></li>
        <!-- ... -->
      </ul>
    </div>
    <!-- The actual form -->
    <div class="span9">
      <!-- ... -->
    </div>
  </div>
</form>

Bootstrap มีวิธีทำให้สิ่งเหล่านี้<button>ดูเหมือนจริง<a>หรือไม่?


2
นี่คือคลาสทั้งหมดที่คุณสามารถใส่<button>องค์ประกอบได้: getbootstrap.com/2.3.2/base-css.html#buttons
Rocket Hazmat

6
ทำไมไม่ใช้ <a> แทน <button> ล่ะ?
VVL

5
เพราะฉันต้องรักษาสถานะของฟอร์มที่อยู่ในส่วนที่เหลือของฟอร์ม ส่วนใหญ่หมายถึงรหัสเซสชันของฟอร์มและการทำให้เป็นลิงก์จริง ๆ จะหมายถึงการเปลี่ยนแบบฟอร์มทั้งหมดเป็น GET และใส่ข้อมูลนั้นในไฟล์href. โดยพื้นฐานแล้วฉันต้องเปลี่ยนวิธีการทำงานของแบบฟอร์มหรือเปลี่ยนการนำเสนออย่างมาก คำถามนี้เป็นความพยายามของฉันที่จะค้นหาว่าการเปลี่ยนงานนำเสนอนั้นง่ายเพียงใด
meustrus

@VitorVenturin กรณีการใช้งานของฉัน: แท็บเริ่มต้นมีพื้นที่ข้อความสำหรับป้อน markdown แท็บ 2 มีตัวอย่าง HTML ดังนั้นฉันไม่ต้องการให้แท็บ 2 มี URL ที่เปิดขึ้นโดยค่าเริ่มต้น หากฉันใช้ลิงก์ผู้ใช้สามารถคลิกตรงกลางและดูตำแหน่งที่อยู่ที่ไม่มีความหมายเมื่อวางเมาส์เหนือ ปุ่มป้องกันนั้น
Ciro Santilli 郝海东冠状病六四事件法轮功

คำตอบ:


198

ตามที่ระบุไว้ในเอกสารอย่างเป็นทางการเพียงใช้ชั้นเรียนbtn btn-link:

<!-- Deemphasize a button by making it look like a link while maintaining button behavior -->
<button type="button" class="btn btn-link">Link</button>

ตัวอย่างเช่นด้วยรหัสที่คุณระบุ:

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />


<form action="..." method="post">
  <div class="row-fluid">
    <!-- Navigation for the form -->
    <div class="span3">
      <ul class="nav nav-tabs nav-stacked">
        <li>
          <button class="btn btn-link" role="link" type="submit" name="op" value="Link 1">Link 1</button>
        </li>
        <li>
          <button class="btn btn-link" role="link" type="submit" name="op" value="Link 2">Link 2</button>
        </li>
        <!-- ... -->
      </ul>
    </div>
    <!-- The actual form -->
    <div class="span9">
      <!-- ... -->
    </div>
  </div>
</form>


8
นั่นทำให้มันไม่เหมือนปุ่มอีกต่อไป อย่างไรก็ตามมันไม่ได้แสดงตามที่ฉันต้องการภายในมาร์กอัปแบบเรียงซ้อน ul.nav CSS สำหรับมาร์กอัปนั้นดูเหมือนจะใช้ได้กับ<a>แท็กเท่านั้น...
meustrus

20
แสดงต่างจากลิงก์
Ciro Santilli 郝海东冠状病六四事件法轮功

1
ใน Bootstrap 3 ปุ่มที่มีลักษณะคล้ายกับลิงก์นี้ แต่มีช่องว่างภายในมากเกินไปซึ่งทำให้เลย์เอาต์ยุ่งเหยิง แต่คุณสามารถแก้ไขได้โดยเพิ่ม CSS จำนวนเล็กน้อย (ดูคำตอบ @mcNux ด้านล่าง)
Martin CR

24

เพียงแค่ทำให้ลิงค์ปกติดูเหมือนปุ่ม :)

<a href="#" role="button" class="btn btn-success btn-large">Click here!</a>

"บทบาท" ภายในโค้ด href ทำให้ดูเหมือนปุ่มคุณสามารถเพิ่มตัวแปรอื่น ๆ เช่นคลาสได้


22
สิ่งนี้มีประโยชน์ แต่ไม่ตอบคำถามที่ถาม
meustrus

18
I wanted to style buttons as though they were normal linksนี่คือสิ่งที่ตรงกันข้าม: S
SW4

roleแอตทริบิวต์ไม่ใช่แอตทริบิวต์ที่ถูกต้องสำหรับaองค์ประกอบ ( w3.org/TR/html5/text-level-semantics.html#the-a-element )
nZeus

1
นี่คือสิ่งที่ตรงกันข้ามกับสิ่งที่ถูกถาม
Kunal

ปัญหาของคำตอบนี้คือข้อความปุ่มในกรณีนี้มีลักษณะเหมือนลิงก์ซึ่งไม่ดีจริง ๆ (เช่นถ้าคุณใช้ "$ link-decoration: underline! default;" ใน _variables.scss ของคุณ) นักพัฒนาควรสังเกตสิ่งนี้ - บางทีนี่อาจไม่ใช่สิ่งที่พวกเขาต้องการบรรลุ ลิงก์ควรมีลักษณะเป็นปุ่มอย่างสมบูรณ์
Dmitry Somov

11

เพียงเพิ่ม remove_button_css เป็นคลาสในแท็กปุ่มของคุณ คุณสามารถตรวจสอบรหัสสำหรับลิงก์ 1

.remove_button_css { 
  outline: none;
  padding: 5px; 
  border: 0px; 
  box-sizing: none; 
  background-color: transparent; 
}

ใส่คำอธิบายภาพที่นี่

แก้ไขรูปแบบพิเศษ

เพิ่มcolor: #337ab7;และ:hoverและ:focusเพื่อให้ตรงกับ OOTB (bootstrap3)

.remove_button_css:focus,
.remove_button_css:hover {
    color: #23527c;
    text-decoration: underline;
}

ทำงานได้อย่างสมบูรณ์ เพิ่ม:hoverและ:focusเพื่อการแข่งขันที่ใกล้ชิดยิ่งขึ้นด้วย bootstrap3
freedomn-m

6

ใน bootstrap 3 สิ่งนี้ใช้ได้ดีสำหรับฉัน:

.btn-link.btn-anchor {
    outline: none !important;
    padding: 0;
    border: 0;
    vertical-align: baseline;
}

ใช้เช่น:

<button type="button" class="btn-link btn-anchor">My Button</button>

การสาธิต


ขอบคุณนี่คือสิ่งที่ฉันต้องการ Bootstrap 3 .btn-link ไม่ได้ตัดมันและคุณต้องเพิ่มคลาสด้วยตัวเอง
RafałCieślak

ใช่มันทำงานได้อย่างสมบูรณ์แบบ ทันทีเค้าโครงแบบฟอร์ม BS3 ของฉันมีระยะห่างแนวตั้งที่ถูกต้องระหว่างแถว ยอดเยี่ยม.
Martin CR

2

เพียงกำจัดสีพื้นหลังเส้นขอบและเพิ่มเอฟเฟกต์โฮเวอร์ นี่คือซอ: http://jsfiddle.net/yPU29/

<form action="..." method="post">
<div class="row-fluid">
<!-- Navigation for the form -->
<div class="span3">
  <ul class="nav nav-tabs nav-stacked">
    <li><button type="submit" name="op" value="Link 1" class="button-link">Link 1</button></li>
    <li><button type="submit" name="op" value="Link 2" class="button-link">Link 2</button></li>
    <!-- ... -->
  </ul>
</div>
<!-- The actual form -->
<div class="span9">
  <!-- ... -->
</div>
</div>
</form>

CSS:

.button-link {
background-color: transparent;
border: none;
}

.button-link:hover {
color: blue;
text-decoration: underline;
}

1
ฉันเพิ่มองค์ประกอบ CSS อีกสองสามอย่างเพื่อให้ดูเหมือนลิงก์แบบเลื่อนลง รวม: .button-link {display: block; ความกว้าง: 100%; ช่องว่างภายใน: 3px 20px; ชัดเจน: ทั้งสอง; สี: # 333; พื้นที่สีขาว: nowrap; พื้นหลังสี: โปร่งใส; เส้นขอบ: ไม่มี; จัดข้อความ: ซ้าย; } .button-link: hover {background-color: # f5f5f5; }
Andy Beverley

1

ฉันลองใช้ตัวอย่างทั้งหมดแล้วโพสต์ที่นี่ แต่ใช้ไม่ได้หากไม่มี CSS เพิ่มเติม ลองสิ่งนี้:

<a href="http://www.google.com"><button type="button" class="btn btn-success">Google</button></a>

ทำงานได้อย่างสมบูรณ์โดยไม่ต้องใช้ CSS เพิ่มเติม


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