Làm cách nào để tạo <button> trong Bootstrap giống như một liên kết bình thường trong nav-tab?


110

Tôi đang làm việc trong (trước đây là Twitter) Bootstrap 2 và tôi muốn tạo kiểu cho các nút như thể chúng là các liên kết bình thường. Không chỉ là bất kỳ liên kết bình thường nào; những thứ này đang đi trong một <ul class="nav nav-tabs nav-stacked">thùng chứa. Đánh dấu sẽ kết thúc như thế này:

<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 có cách nào để làm cho chúng <button>trông giống như chúng thực sự <a>không?


2
Dưới đây là tất cả các lớp bạn có thể đưa vào <button>các yếu tố: getbootstrap.com/2.3.2/base-css.html#buttons
Rocket Hazmat

6
Tại sao không sử dụng <a> thay thế <button>?
VVL

5
Vì tôi cần duy trì trạng thái biểu mẫu ở phần còn lại của biểu mẫu. Điều đó chủ yếu có nghĩa là một ID phiên của biểu mẫu và làm cho nó thực sự là một liên kết có nghĩa là chuyển toàn bộ biểu mẫu sang GET và đưa dữ liệu đó vào href. Vì vậy, về cơ bản tôi phải thay đổi đáng kể cách thức hoạt động của biểu mẫu hoặc thay đổi bản trình bày. Câu hỏi này là nỗ lực của tôi để tìm ra cách dễ dàng thay đổi cách trình bày.
meustrus

@VitorVenturin trường hợp sử dụng của tôi: tab mặc định có một vùng văn bản để nhập dấu xuống. Tab 2 có bản xem trước HTML. Vì vậy, tôi không muốn Tab 2 có URL mở nó theo mặc định. Nếu tôi sử dụng các liên kết, thì người dùng có thể nhấp chuột giữa và thấy một vị trí địa chỉ vô nghĩa khi di chuột. Nút ngăn điều đó.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Câu trả lời:


198

Như đã lưu ý trong tài liệu chính thức , chỉ cần áp dụng (các) lớpbtn 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>

Ví dụ: với mã bạn đã cung cấp:

<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
Điều đó làm cho nó không còn giống như một nút. Tuy nhiên, nó không hiển thị như tôi muốn trong đánh dấu xếp chồng ul.nav. CSS cho đánh dấu điều đó dường như chỉ làm việc với <a>thẻ ...
meustrus

20
Hiển thị khác với liên kết.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

1
trong Bootstrap 3, các nút được tạo kiểu như thế này trông giống như các liên kết nhưng chúng có quá nhiều phần đệm xung quanh làm rối bố cục. NHƯNG bạn có thể khắc phục điều đó bằng cách thêm một lượng nhỏ CSS (xem câu trả lời @mcNux bên dưới)
Martin CR

24

Chỉ cần làm cho liên kết thông thường giống như nút :)

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

"role" bên trong mã href làm cho nó trông giống như một nút, bạn có thể thêm nhiều biến hơn như lớp.


22
Điều này hữu ích nhưng không trả lời câu hỏi được hỏi.
meustrus

18
I wanted to style buttons as though they were normal linksđây là điều ngược lại: S
SW4

rolethuộc tính không phải là một thuộc tính hợp lệ cho aphần tử. ( w3.org/TR/html5/text-level-semantics.html#the-a-element )
nZeus

1
Điều này trái ngược với những gì đang được hỏi
Kunal

Vấn đề với câu trả lời này là văn bản nút trong trường hợp này thực sự được tạo kiểu giống như một liên kết không tốt (ví dụ: nếu bạn sử dụng "$ link-decoration: underline! Default;" trong _variables.scss của mình). Điều này có lẽ nên được các nhà phát triển lưu ý - có lẽ đây không phải là điều họ muốn đạt được. Liên kết phải được tạo kiểu HOÀN TOÀN dưới dạng một nút.
Dmitry Somov

11

Chỉ cần thêm remove_button_css làm lớp vào thẻ nút của bạn. Bạn có thể xác minh mã cho Liên kết 1

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

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

Các kiểu bổ sung Chỉnh sửa

Thêm color: #337ab7;:hover:focusđể phù hợp với OOTB (bootstrap3)

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

Hoạt động hoàn hảo. Đã thêm :hover:focusđể kết hợp chặt chẽ hơn với bootstrap3.
freen-m

6

Trong bootstrap 3, điều này hoạt động tốt đối với tôi:

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

Được sử dụng như:

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

Bản giới thiệu


Cảm ơn, đây chính xác là những gì tôi cần. Bootstrap 3 .btn-link không cắt nó và bạn chỉ cần thêm một lớp của riêng mình.
Rafał Cieślak

CÓ điều này hoạt động hoàn hảo. Ngay lập tức, bố cục biểu mẫu BS3 của tôi có khoảng cách dọc chính xác giữa các hàng. Thông minh.
Martin CR

2

Chỉ cần loại bỏ màu nền, đường viền và thêm hiệu ứng di chuột. Đây là một trò chơi: 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
Tôi đã thêm một vài phần tử CSS khác để làm cho nó trông giống hệt như một liên kết thả xuống. Tổng cộng: .button-link {display: block; chiều rộng: 100%; đệm: 3px 20px; rõ ràng: cả hai; màu: # 333; khoảng trắng: nowrap; background-color: trong suốt; biên giới: không có; text-align: left; } .button-link: hover {background-color: # f5f5f5; }
Andy Beverley

1

Tôi đã thử tất cả các ví dụ được đăng ở đây, nhưng chúng không hoạt động nếu không có thêm CSS. Thử cái này:

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

Hoạt động hoàn hảo mà không cần thêm CSS.


Đây không phải là HTML hợp lệ. stackoverflow.com/a/6393863/496046
run rẩy
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.