Как сделать так, чтобы <button> в 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> вместо <button>?
VVL

5
Потому что мне нужно поддерживать состояние формы, которое есть в остальной части формы. В основном это означает идентификатор сеанса формы, а превращение его в ссылку на самом деле означало бы переключение всей формы на GET и помещение этих данных в файл href. По сути, мне нужно либо кардинально изменить то, как работает моя форма, либо изменить представление. Этот вопрос - моя попытка выяснить, насколько легко изменить презентацию.
meustrus

@VitorVentur в моем случае использования: на вкладке по умолчанию есть текстовое поле для ввода уценки. На вкладке 2 есть предварительный просмотр HTML. Поэтому я не хочу, чтобы на вкладке 2 был URL-адрес, который открывает ее по умолчанию. Если я использую ссылки, то пользователи могут щелкнуть средней кнопкой мыши и увидеть бессмысленное расположение адреса при наведении курсора. Кнопка предотвращает это.
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

Ответы:


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-stacked. Кажется, что CSS для этой разметки работает только с <a>тегами ...
meustrus

20
Отображается иначе, чем ссылки.
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

1
в Bootstrap 3 кнопки с таким стилем выглядят как ссылки, но вокруг них слишком много отступов, что портит макет. НО вы можете исправить это, добавив небольшое количество CSS (см. Ответ @mcNux ниже)
Мартин CR

24

Просто сделайте обычную ссылку похожей на кнопку :)

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

"role" внутри кода href делает его похожим на кнопку, вы можете добавить больше переменных, таких как class.


22
Это полезно, но не отвечает на заданный вопрос.
meustrus 06

18
I wanted to style buttons as though they were normal linksэто наоборот: S
SW4

roleattribute не является допустимым атрибутом для aэлемента. ( w3.org/TR/html5/text-level-semantics.html#the-a-element )
nZeus

1
Это противоположно тому, о чем спрашивают
Кунал

Проблема с этим ответом заключается в том, что текст кнопки в этом случае фактически оформлен как ссылка, что нехорошо (например, если вы используете «$ link-decoration: underline! Default;» в вашем _variables.scss). Наверное, это следует отметить разработчикам - возможно, они не этого хотели. Ссылка должна быть оформлена ПОЛНОСТЬЮ как кнопка.
Дмитрий Сомов

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

В бутстрапе 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 не сокращает его, и вам просто нужно добавить класс самостоятельно.
Рафал

ДА, это отлично работает. Мгновенно мой макет формы 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 {цвет фона: # 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 03
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.