Як зробити так, щоб <кнопка> у Bootstrap виглядала як звичайне посилання на наві-вкладках?


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> замість <кнопки>?
VVL

5
Тому що мені потрібно підтримувати стан форми, що знаходиться в решті форми. В основному це означає ідентифікатор сеансу форми, а перетворення її на фактичне посилання означатиме переключення всієї форми на GET та розміщення цих даних у href. Тому в основному мені або доводиться кардинально змінити, як працює моя форма, або змінити презентацію. Це питання - моя спроба з'ясувати, наскільки легко змінити презентацію.
meustrus

@VitorVenturin мій випадок використання: на вкладці за замовчуванням є текстова область для введення розмітки. Вкладка 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 робить його схожим на кнопку, ofc ви можете додати більше змінних, таких як клас.


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
Це протилежне тому, що просять
Кунал

Проблема з цією відповіддю полягає в тому, що текст кнопки в цьому випадку насправді стилізований як посилання, яке не є гарним (наприклад, якщо у вашому _variables.scss використовується "$ link-decoration: підкреслити! За замовчуванням"). Це, мабуть, слід зазначити розробникам - можливо, це не те, чого вони хотіли досягти. Посилання повинно бути стилізоване повністю як кнопку.
Дмитро Сомов

11

Просто додайте Remove_button_css як клас до тегу кнопок. Ви можете перевірити код для Link 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

У завантажувальній службі 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ł

ТАК це прекрасно працює. Моментальний макет форми 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: навести курсор {background-color: # f5f5f5; }
Енді Беверлі

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.