フォーム入力送信ボタンにTwitterのブートストラップアイコンを使用したいです。
http://Twitter.github.com/bootstrap/base-css.html#icons の例は、主にスタイル付きハイパーリンクを示しています。
一番近いのは、ボタンの横にアイコンが表示されているが、内部には表示されていないことです。
<div class="input-prepend">
<span class="add-on"><i class="icon-user icon-white"></i></span>
<input type="submit" class="btn-primary" value="Login" >
</div>
入力の代わりにボタンタグを使うことができます
<button type="submit" class="btn btn-primary">
<i class="icon-user icon-white"></i> Sign in
</button>
私はあなたがこの目的のためにラベルタグを使うことができると思います。これがTwitterのブートストラップHTMLナビゲーションバーの例です。
<form class="navbar-search">
<input type="text" class="search-query" placeholder="Search here" />
<label for="mySubmit" class="btn"><i class="icon-search icon-white"></i> Search me</label>
<input id="mySubmit" type="submit" value="Go" class="hidden" />
</form>
基本的に、あなたは入力のためのラベル要素を取得し(type = submit)、そして実際の入力送信を隠します。ユーザーはlabel要素をクリックしてもフォーム送信を完了できます。
私はあなたがこれを試してみるべきだと思います FontAwesome Twitter Bootstrapで使用するように設計されています。
<button class="btn btn-primary icon-save">Button With Icon</button>
アイコンを付けた<a/>をどこかに追加し、それにJavaScritアクションをバインドすると、フォームが送信されます。必要に応じて、元の送信ボタンの名前と値の名前と値を非表示属性に含めることができます。 jQueryを使えば簡単です。純粋なJavaScriptバージョンを避けてください。
これが元の形式だとします。
<form method="post" id="myFavoriteForm>
...other fields...
<input class="btn btn-primary" type="submit" name="login" value="Let me in" />
</form>
このように変更してください。
<form method="post" id="myFavoriteForm">
...other fields...
<a href="#" class="btn btn-primary" id="myFavoriteFormSubmitButton">
<i class="icon-user icon-white"></i> Let me in
</a>
</form>
...そして魔法のようなjQuery:
$("#myFavoriteFormSubmitButton").bind('click', function(event) {
$("#myFavoriteForm").submit();
});
あるいは、ユーザーが常にフォームを送信できることを確認したい場合(これは私の靴の中で行うことです)、通常の送信ボタンをフォームに残して、jQuery .hide()で非表示にすることができます。通常の送信ボタン(リンク、w3mなどのブラウザを使用している人)によると、JavaScriptとjQueryがなくてもログインは機能しますが、可能であればアイコン付きの派手なボタンを提供します。
私はTwitter Bootstrapアイコンを基本的なRailsフォームにしたかったので、この記事に出会いました。ちょっと探した後、私はそれをする簡単な方法を考え出しました。あなたがRailsを使っているかどうかわからないが、ここにコードがある。重要なのは、link_toビューヘルパーにブロックを渡すことです。
<tbody>
<% @products.each do |product| %>
<tr>
<td><%= product.id %></td>
<td><%= link_to product.name, product_path(product) %></td>
<td><%= product.created_at %></td>
<td>
<%= link_to(edit_product_path(product), :class => 'btn btn-mini') do %>
Edit <i class="icon-pencil"></i>
<% end %>
<%= link_to(product_path(product), :method => :delete, :confirm => 'Are you sure?', :class => 'btn btn-mini btn-danger') do %>
Delete <i class="icon-trash icon-white"></i>
<% end %>
</td>
</tr>
<% end %>
</tbody>
</table>
<%= link_to(new_product_path, :class => 'btn btn-primary') do %>
New <i class="icon-plus icon-white"></i>
<% end %>
Railsを使用していない場合は、アイコン付きのリンク(編集、削除、および新規送信ボタン用)の出力HTMLです。
# Edit
<a href="/products/1/edit" class="btn btn-mini">Edit <i class="icon-pencil"></i></a>
# Delete
<a href="/products/1" class="btn btn-mini btn-danger" data-confirm="Are you sure?" data-method="delete" rel="nofollow"> Delete <i class="icon-trash icon-white"></i></a>
# New
<a href="/products/new" class="btn btn-primary">New <i class="icon-plus icon-white"></i></a>
そして、これが完成した結果のスクリーンショットへのリンクです: http://grab.by/cVXm
ブートストラップ3でこれを行うための新しい方法があります。
<button type="button" class="btn btn-default btn-lg">
<span class="glyphicon glyphicon-star"></span> Star
</button>
「使い方」の下の ブートストラップグリフィコン ページにあります。
(ブートストラップの)グリフィコンをinput type="submit"
に取り込む方法が1つあります。 css3複数背景を使用します。
HTML:
<form class="form-search">
…
<input type="submit" value="Search">
</form>
およびCSS:
.form-search input[type="submit"] {
padding-left:16px; /* space for only one glyphicon */
background:-moz-linear-gradient(top,#fff 0%,#eee 100%) no-repeat 16px top,
url(../images/glyphicons-halflings.png) no-repeat -48px 0,
-moz-linear-gradient(top,#fff 0%,#eee 100%); /* FF hack */
/* another hacks here */
background:linear-gradient(to bottom,#fff 0%,#eee 100%) no-repeat 16px top,
url(../images/glyphicons-halflings.png) no-repeat -48px 0,
linear-gradient(to bottom,#fff 0%,#eee 100%); /* Standard way */
}
複数の背景が重なっている場合、一番上はbackground:
表記の最初の背景になります。そのため、最上部は左側からインデントされた背景(16px
(16px
は単一グリフィコンの幅)、最下位レベルは全体glyphicons-halflings.png
および最下位レベル(要素全体をカバー)です。 )は、トップレベルと同じ背景グラデーションです。
-48px 0px
は検索アイコンのカット(icon-search
)ですが、他のアイコンを簡単に表示できます。
誰かが:hover
効果を必要とする場合、同じ形式でbackgroundを再度入力する必要があります。
これを機能させることはできましたが、まだ解決していない点がいくつかあります。
とにかく、これはそのやり方です:
平均入力ボタンをクリックしてください。
<input type="submit" class="btn btn-success" value="Save">
Glyphicons Spriteファイルから送信ボタンに必要なアイコンを切り取り、それが14x14ピクセルの画像であることを確認してください。はい、理想的な状況では、あなたはスプライトを再利用することができます、そして誰かがそれを理解するならば、私はそれがどのように行われるかについてうれしく思うでしょう。 :-)
それができたら、次のように入力ボタンにCSSを書くことができます。
input[type='submit'] {
background-image: url('../images/submit-icon.png'), #62C462; /* fallback color if gradients are not supported */
background-image: url('../images/submit-icon.png'), -webkit-linear-gradient(top, #62C462, #51A351);
background-image: url('../images/submit-icon.png'), -moz-linear-gradient(top, #62C462, #51A351); /* For Fx 3.6 to Fx 15 */
background-image: url('../images/submit-icon.png'), -ms-linear-gradient(top, #62C462, #51A351); /* For IE 10 Platform Previews and Consumer Preview */
background-image: url('../images/submit-icon.png'), -o-linear-gradient(top, #62C462, #51A351); /* For Opera 11.1 to 12.0 */
background-image: url('../images/submit-icon.png'), linear-gradient(top, #62C462, #51A351); /* Standard syntax; must be the last statement */
background-repeat: no-repeat;
background-position: 5px 50%, 0cm 0cm;
padding-left: 25px;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
input[type='submit']:hover {
background-image: url('../images/submit-icon.png'), #51A351; /* fallback color if gradients are not supported */
background-image: url('../images/submit-icon.png'), -webkit-linear-gradient(top, #51A351, #51A351);
background-image: url('../images/submit-icon.png'), -moz-linear-gradient(top, #51A351, #51A351); /* For Fx 3.6 to Fx 15 */
background-image: url('../images/submit-icon.png'), -ms-linear-gradient(top, #51A351, #51A351); /* For IE 10 Platform Previews and Consumer Preview */
background-image: url('../images/submit-icon.png'), -o-linear-gradient(top, #51A351, #51A351); /* For Opera 11.1 to 12.0 */
background-image: url('../images/submit-icon.png'), linear-gradient(top, #51A351, #51A351); /* Standard syntax; must be the last statement */
background-position: 5px 50%, 0cm 0cm;
padding-left: 25px;
}
Firefox 14、Chrome 21で動作します
IE 9では機能しません
tl; dr:ちょっとしたCSSでは、送信ボタンに自動的にアイコンを置くことができますが、アイコンを別のファイルに入れる必要があり、Internet Explorerでは機能しません。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<button type="button" class="btn btn-info">
<span class="glyphicon glyphicon-search"></span> Search
</button>
</p>
<a href="#" class="btn btn-success btn-lg">
<span class="glyphicon glyphicon-print"></span> Print
</a>
</p>
</div>
</body>
</html>
私はそれがあなたの問題に対する解決策だと思います
<input type="text" placeholder="search here" />
<button type="submit"><i class="glyphicon glyphicon-search"></button>
<div class="input-append">
<input class="span2" id="appendedPrependedInput" type="text">
<span class="add-on">.00</span>
</div>