Jak sprawić, by <button> w Bootstrap wyglądał jak zwykły link w zakładkach nawigacyjnych?


110

Pracuję w (dawniej Twitter) Bootstrap 2 i chciałem stylizować przyciski tak, jakby były normalnymi linkami. Jednak nie zwykłe linki; te idą do <ul class="nav nav-tabs nav-stacked">pojemnika. Znaczniki zakończy się następująco:

<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>

Czy Bootstrap może w jakiś sposób sprawić, by <button>wyglądały tak, jakby były w rzeczywistości <a>?


2
Oto wszystkie zajęcia, które możesz umieścić na <button>elementach: getbootstrap.com/2.3.2/base-css.html#buttons
Rocket Hazmat

6
Dlaczego nie użyć <a> zamiast <button>?
VVL

5
Ponieważ muszę zachować stan formularza, który znajduje się w pozostałej części formularza. Przede wszystkim oznacza to identyfikator sesji formularza, a uczynienie go faktycznie łączem oznaczałoby przełączenie całego formularza na GET i umieszczenie tych danych w pliku href. Zasadniczo muszę albo radykalnie zmienić sposób działania mojej formy, albo zmienić prezentację. To pytanie jest moją próbą ustalenia, jak łatwo zmienić prezentację.
meustrus

@VitorVentur w moim przypadku użycia: domyślna karta ma obszar tekstowy do wprowadzania przecen. Karta 2 zawiera podgląd HTML. Dlatego nie chcę, aby karta 2 miała adres URL, który domyślnie ją otwiera. Jeśli używam linków, użytkownicy mogą kliknąć środkowym przyciskiem i zobaczyć bezsensowną lokalizację adresu po najechaniu kursorem. Przycisk temu zapobiega.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:


198

Jak wskazano w oficjalnej dokumentacji , po prostu zastosuj klasybtn 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>

Na przykład z podanym kodem:

<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
To sprawia, że ​​nie wygląda już jak przycisk. Jednak nie wyświetla się tak, jak chcę, w znacznikach stosu ul.nav. CSS dla tego znacznika wydaje się działać tylko z <a>tagami ...
meustrus


1
w Bootstrap 3 przyciski stylizowane w ten sposób wyglądają jak linki, ale są otoczone zbyt dużym wypełnieniem, co psuje układ. ALE możesz to naprawić, dodając niewielką ilość CSS (patrz odpowiedź @mcNux poniżej)
Martin CR

24

Po prostu spraw, aby zwykły link wyglądał jak przycisk :)

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

"role" wewnątrz kodu href sprawia, że ​​wygląda on jak przycisk, często możesz dodać więcej zmiennych, takich jak class.


22
Jest to przydatne, ale nie odpowiada na zadane pytanie.
meustrus

18
I wanted to style buttons as though they were normal linksjest odwrotnie: S
SW4,

roleatrybut nie jest prawidłowym atrybutem aelementu. ( w3.org/TR/html5/text-level-semantics.html#the-a-element )
nZeus

1
Jest to przeciwieństwo tego, o co się prosi
Kunal

Problem z tą odpowiedzią polega na tym, że w tym przypadku tekst przycisku jest w rzeczywistości stylizowany na link, który nie jest dobry (np. Jeśli używasz "$ link-decoration: underline! Default;" w swoim _variables.scss). Powinni to chyba zauważyć deweloperzy - być może nie tego chcieli osiągnąć. Link powinien mieć styl CAŁKOWICIE jako przycisk.
Dmitry Somov

11

Po prostu dodaj remove_button_css jako klasę do tagu przycisku. Możesz zweryfikować kod dla łącza 1

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

wprowadź opis obrazu tutaj

Dodatkowe style Edytuj

Dodaj color: #337ab7;i :hoveri, :focusaby dopasować OOTB (bootstrap3)

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

Działa świetnie. Dodano :hoveri :focusdla bliższego dopasowania z bootstrap3.
Freedomn-m

6

W bootstrap 3 działa to dobrze:

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

Używane jak:

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

Próbny


Dzięki, właśnie tego potrzebowałem. Bootstrap 3 .btn-link tego nie robi i musisz po prostu dodać własną klasę.
Rafał Cieślak

TAK to działa doskonale. Natychmiast mój układ formularza BS3 ma prawidłowe odstępy pionowe między wierszami. Doskonały.
Martin CR

2

Po prostu pozbądź się koloru tła, obramowań i dodaj efekty najechania kursorem. Oto skrzypce: 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
Dodałem jeszcze kilka elementów CSS, aby wyglądało dokładnie jak link rozwijany. W sumie: .button-link {display: block; szerokość: 100%; wypełnienie: 3px 20px; oba czyste; kolor: # 333; spacja: nowrap; background-color: przezroczysty; obramowanie: brak; text-align: left; } .button-link: hover {background-color: # f5f5f5; }
Andy Beverley,

1

Wypróbowałem wszystkie przykłady zamieszczone tutaj, ale nie działają one bez dodatkowego CSS. Spróbuj tego:

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

Działa doskonale bez dodatkowego CSS.


To nie jest prawidłowy kod HTML. stackoverflow.com/a/6393863/496046
tremby
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.