テキストタイプの入力ボックスにグリフアイコンを追加する方法を教えてください。例えば、私はユーザー名の入力に 'icon-user'を入れたいのですが、これは次のようなものです。
あとでBootstrapに取り掛かりますが、これを自分で行うための基本的なCSSの概念は次のとおりです。 獲物のあごひげが指す として、あなたは絶対にinput要素の内側にアイコンを配置することによってCSSでこれを行うことができます。次に、テキストがアイコンと重ならないように両側にパディングを追加します。
だから、次のHTMLの場合:
<div class="inner-addon left-addon">
<i class="glyphicon glyphicon-user"></i>
<input type="text" class="form-control" />
</div>
次のCSSを使って、グリフを左右に揃えることができます。
/* enable absolute positioning */
.inner-addon {
position: relative;
}
/* style icon */
.inner-addon .glyphicon {
position: absolute;
padding: 10px;
pointer-events: none;
}
/* align icon */
.left-addon .glyphicon { left: 0px;}
.right-addon .glyphicon { right: 0px;}
/* add padding */
.left-addon input { padding-left: 30px; }
.right-addon input { padding-right: 30px; }
Note:これはあなたが グリフィコン を使っていることを前提としていますが、 font-awesome と同じようにうまくいきます。
FAの場合、単に.glyphicon
を.fa
に置き換えます。
bufferが指摘する として、これは オプションアイコン付きの検証状態 を使用することでBootstrap内でネイティブに達成できます。これは.form-group
要素に.has-feedback
のクラスを、そしてアイコンに.form-control-feedback
のクラスを与えることによって行われます。
最も簡単な例は、次のようになります。
<div class="form-group has-feedback">
<label class="control-label">Username</label>
<input type="text" class="form-control" placeholder="Username" />
<i class="glyphicon glyphicon-user form-control-feedback"></i>
</div>
長所:
短所:
短所を克服するために、私はこれをまとめました pull-request 左揃えのアイコンをサポートするための変更を加えました。これは比較的大きな変更であるため、将来のリリースまで延期されていますが、これらの機能が必要な場合は今日、これが簡単な実装ガイドです。
これらのフォームの変更をcssに含める (一番下の隠しスタックスニペットでインライン展開されています)
* LESS:あるいは、あなたが lessを介して構築 の場合、 formがlessで変更されます
次に、アイコンを左揃えにするために、クラス.has-feedback-left
を持つ任意のグループにクラス.has-feedback
を含めるだけです。
さまざまなフォームタイプ、さまざまなコントロールサイズ、さまざまなアイコンセット、さまざまなラベルの表示設定に対して、さまざまなHTML設定が可能であるため、並べ替えごとに正しいHTMLセットと実際のデモを表示するテストページを作成しました。
P.Sfriziの提案
pointer-events: none;
を追加することができました ブートストラップに追加されます
探しているものが見つかりませんでした。これらと似た質問をしてください。
.has-feedback .form-control {
padding-right: 34px;
}
.has-feedback .form-control.input-sm,
.has-feedback.form-group-sm .form-control {
padding-right: 30px;
}
.has-feedback .form-control.input-lg,
.has-feedback.form-group-lg .form-control {
padding-right: 46px;
}
.has-feedback-left .form-control {
padding-right: 12px;
padding-left: 34px;
}
.has-feedback-left .form-control.input-sm,
.has-feedback-left.form-group-sm .form-control {
padding-left: 30px;
}
.has-feedback-left .form-control.input-lg,
.has-feedback-left.form-group-lg .form-control {
padding-left: 46px;
}
.has-feedback-left .form-control-feedback {
left: 0;
}
.form-control-feedback {
line-height: 34px !important;
}
.input-sm + .form-control-feedback,
.form-horizontal .form-group-sm .form-control-feedback {
width: 30px;
height: 30px;
line-height: 30px !important;
}
.input-lg + .form-control-feedback,
.form-horizontal .form-group-lg .form-control-feedback {
width: 46px;
height: 46px;
line-height: 46px !important;
}
.has-feedback label.sr-only ~ .form-control-feedback,
.has-feedback label.sr-only ~ div .form-control-feedback {
top: 0;
}
@media (min-width: 768px) {
.form-inline .inline-feedback {
position: relative;
display: inline-block;
}
.form-inline .has-feedback .form-control-feedback {
top: 0;
}
}
.form-horizontal .has-feedback-left .form-control-feedback {
left: 15px;
}
official メソッド。カスタムCSSは必要ありません。
<form class="form-inline" role="form">
<div class="form-group has-success has-feedback">
<label class="control-label" for="inputSuccess4"></label>
<input type="text" class="form-control" id="inputSuccess4">
<span class="glyphicon glyphicon-user form-control-feedback"></span>
</div>
</form>
デモ: http://jsfiddle.net/LS2Ek/1/
このデモはBootstrapのドキュメントの例に基づいています。ここで「With Optional Icons」までスクロールします http://getbootstrap.com/css/#forms-control-validation
これはCSSのみの代替案です。私はこれを検索フィールドに設定して、Firefox(および他の100のアプリ)に似た効果を得ます。
ここにいじる 。
_ html _
<div class="col-md-4">
<input class="form-control" type="search" />
<span class="glyphicon glyphicon-search"></span>
</div>
_ css _
.form-control {
padding-right: 30px;
}
.form-control + .glyphicon {
position: absolute;
right: 0;
padding: 8px 27px;
}
これが私がデフォルトのブートストラップCSS v3.3.1だけを使ってやった方法です:
<div class="form-group">
<label class="control-label">Start:</label>
<div class="input-group">
<input type="text" class="form-control" aria-describedby="start-date">
<span class="input-group-addon" id="start-date"><span class="glyphicon glyphicon-calendar"></span></span>
</div>
</div>
そしてこれはそれがどのように見えるかです:
この '詐欺'は、グリフィコンクラスが入力コントロールのフォントを変更するという副作用で動作します。
<input class="form-control glyphicon" type="search" placeholder=""/>
副作用を取り除きたい場合は、 "glyphicon"クラスを削除して次のCSSを追加することができます(プレースホルダーの擬似要素をスタイルするためのより良い方法があるかもしれません。私はChromeでのみテストしました)。
.form-control[type="search"]::-webkit-input-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-moz-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control[type="search"]::-moz-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-ms-input-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
おそらくもっときれいな解決策:
_ css _
.form-control.glyphicon {
font-family:inherit;
}
.form-control.glyphicon::-webkit-input-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-moz-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control.glyphicon::-moz-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-ms-input-placeholder:first-letter {
font-family:"Glyphicons Halflings";
}
_ html _
<input class="form-control glyphicon" type="search" placeholder=" search" />
<input class="form-control glyphicon" type="text" placeholder=" username" />
<input class="form-control glyphicon" type="password" placeholder=" password" />
カスタムCSSなしで、公式のブートストラップ3.xバージョンのクラスを使って行うことができます。
input-group-addon
の内側で、inputタグの前にinput-group
を使用してから、任意のグリフィコンを使用してください。
<form>
<div class="form-group">
<div class="col-xs-5">
<div class="input-group">
<span class="input-group-addon transparent"><span class="glyphicon glyphicon-user"></span></span>
<input class="form-control left-border-none" placeholder="User Name" type="text" name="username">
</div>
</div>
</div>
</form>
これが出力です
それをカスタマイズするためにさらにカスタムcssファイルにカスタムcssの2行を追加する(必要ならパディングを調整してください)
.transparent {
background-color: transparent !important;
box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
}
.left-border-none {
border-left:none !important;
box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
}
input-group-addon
の背景を透明にし、inputタグの左グラデーションをゼロにすることで、入力はシームレスに見えます。これがカスタマイズされた出力です
これがjsbinです example
これは、ラベルを重ねること、input-lgを使用している間の整列、およびタブの問題に焦点を当てることのカスタムcss問題を解決します。
これは、base64 URIエンコーディングを使用してグリフアイコンの画像表現をCSSに直接埋め込むことで、マークアップを単純にする、ブートストラップのないソリューションです。
input {
border:solid 1px #ddd;
}
input.search {
padding-left:20px;
background-repeat: no-repeat;
background-position-y: 1px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">
Fontawesome を使用している場合は、これを実行できます。
<input type="text" style="font-family:Arial, FontAwesome" placeholder="" />
結果
Unicodeの完全なリストは/にあります 完全なFont Awesome 4.6.3アイコンリファレンス
input {
border:solid 1px #ddd;
}
input.search {
padding-left:20px;
background-repeat: no-repeat;
background-position-y: 1px;
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">
CSSの :before
疑似要素を使用してグリフコンを配置することでこれを行う別の方法があります。
このHTMLの場合:
<form class="form form-horizontal col-xs-12">
<div class="form-group">
<div class="col-xs-7">
<span class="usericon">
<input class="form-control" id="name" placeholder="Username" />
</span>
</div>
</div>
</form>
このCSSを使用してください( Bootstrap 3.xと互換性のあるWebkitベースのブラウザ )
.usericon input {
padding-left:25px;
}
.usericon:before {
height: 100%;
width: 25px;
display: -webkit-box;
-webkit-box-pack: center;
-webkit-box-align: center;
position: absolute;
content: "\e008";
font-family: 'Glyphicons Halflings';
pointer-events: none;
}
@Friziが言ったように、カーソルが入力フォーカスを妨げないようにpointer-events: none;
を追加する必要があります。他のすべてのCSSルールは、適切な間隔を中央に配置して追加するためのものです。
結果:
ユーザーアイコンを追加するには、placeholder
属性に
を追加するか、必要な場所に追加します。
このチートシート を確認してください。
例:
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<input type="text" class="form-control" placeholder=" placeholder..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="text" class="form-control" value=" value..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="submit" class="btn btn-primary" value=" submit-button" style="font-family: 'Glyphicons Halflings', Arial">
次のコードを使用して、入力のフォントをGlyphiconのフォントに設定することを忘れないでください。
font-family: 'Glyphicons Halflings', Arial
、ここで、 Arial は入力内の通常のテキストのフォントです。
あなたはこれを既存のブートストラップクラスとちょっとしたカスタムスタイルでできるはずです。
<form>
<div class="input-prepend">
<span class="add-on">
<i class="icon-user"></i>
</span>
<input class="span2" id="prependedInput" type="text" placeholder="Username" style="background-color: #eeeeee;border-left: #eeeeee;">
</div>
編集 アイコンはicon-user
クラスを介して参照されます。この回答は、ブートストラップバージョン2の時点で作成されました。次のページで参照を確認できます。 http://getbootstrap.com/2.3.2/base-css.html#images
form-control
を取り、そのクラスにis-valid
を追加します。コントロールがどのように緑色に変わるかに注目してください、しかしもっと重要なことに、コントロールの右側にあるチェックマークアイコンに注意してください。これが私たちが欲しいものです!
例:
.my-icon {
padding-right: calc(1.5em + .75rem);
background-image: url('https://use.fontawesome.com/releases/v5.8.2/svgs/regular/calendar-alt.svg');
background-repeat: no-repeat;
background-position: center right calc(.375em + .1875rem);
background-size: calc(.75em + .375rem) calc(.75em + .375rem);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"></script>
<div class="container">
<div class="col-md-5">
<input type="text" id="date" class="form-control my-icon" placeholder="Select...">
</div>
</div>
最新のブラウザしか必要としない幸運な人は、css transform translateを試してください。これはラッパーを必要とせず、入力スピナーを収容するためにinput [type = number]のためのスペースを広げることができるように、またはハンドルの左側に移動するようにカスタマイズできます。
@import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css");
.is-invalid {
height: 30px;
box-sizing: border-box;
}
.is-invalid-x {
font-size:27px;
vertical-align:middle;
color: red;
top: initial;
transform: translateX(-100%);
}
<h1>Tasty Field Validation Icons using only css transform</h1>
<label>I am just a poor boy nobody loves me</label>
<input class="is-invalid"><span class="glyphicon glyphicon-exclamation-sign is-invalid-x"></span>