Bootstrapの<button>を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>のsを実際<a>のsのように見せるための方法はありますか?


2
<button>要素に配置できるすべてのクラスは次のとおりです。getbootstrap.com
Rocket Hazmat

6
<button>の代わりに<a>を使用しないのはなぜですか?
VVL 2013年

5
フォームの残りの部分にあるフォームの状態を維持する必要があるためです。これは主にフォームセッションIDを意味し、実際にリンクにすることは、フォーム全体をGETに切り替えてそのデータをに配置することを意味しhrefます。したがって、基本的には、フォームの動作を劇的に変更するか、プレゼンテーションを変更する必要があります。この質問は、プレゼンテーションの変更がいかに簡単かを知るための私の試みです。
meustrus 2013年

@VitorVenturin私の使用例:デフォルトのタブには、マークダウンを入力するためのテキストエリアがあります。タブ2にはHTMLプレビューがあります。したがって、デフォルトでタブ2を開くURLをタブ2に含めたくありません。リンクを使用すると、ユーザーは中央クリックして、ホバー時に意味のないアドレスの場所を確認できます。ボタンはそれを防ぎます。
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-stackedマークアップ内で希望どおりに表示されません。そのマークアップの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コード内の "role"はボタンのように見えますが、クラスなどの変数をさらに追加できます。


22
これは便利ですが、尋ねられた質問には答えません。
meustrus 2014年

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

この回答の問題は、この場合のボタンテキストが実際には不適切なリンクのようなスタイルになっていることです(たとえば、_variables.scssで "$ link-decoration:underline!default;"を使用した場合)。これはおそらく開発者によって注目されるべきです-おそらくこれは彼らが達成したかったことではありません。リンクはボタンとして完全にスタイル設定する必要があります。
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そして:focusOOTB(bootstrap3)と一致します

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

完璧に動作します。追加されました:hover:focusbootstrap3との緊密な試合のために。
freedomn-m 2017

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はそれをカットせず、自分でクラスを追加するだけです。
ラファウCieślak

はい、これは完全に機能します。瞬時に、私のBS3フォームレイアウトは、行間に正しい垂直方向の間隔があります。優れた。
マーティン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; 背景色:透明; ボーダー:なし。text-align:左; } .button-link:hover {background-color:#f5f5f5; }
アンディビバリー2014

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.