特定のフォーム コンポーネントをラジオ ボタンとして機能させたい (一度に 1 つのオプションしか選択できない)。ラジオの弾丸を表示したくありませんが、ハイライトを選択するなどの代替の表示方法を選択するか、他の方法を選択します。これにより、グレースフル デグラデーションが可能になります。ユーザー ブラウザが Javascript をサポートしていない場合、基本的なラジオ ボタンにデグレードされます。JavaScript または CSS を使用して箇条書きボタンを非表示にしたいと考えています。誰でも方法を知っていますか?ありがとう。
8 に答える
次の CSS を使用すると、ラジオ ボタンを少しだけ非表示にすることができます (もちろん、アクセシビリティを失うことはありません)。
input[type="radio"] {
left: -999em;
position: absolute;
}
opacity: 0;
ボタンがまだそこにあり、ページのスペースを占有しているため、使用は理想的ではありません。見えないように配置するのが最善の方法です。
ラジオボタンをラベルで囲み、選択されているものを表す画像を使用する簡単なソリューションがあります。
<label>
<input type="radio" name="foo">
<img src="...">
</label>
次に、次のスタイルを適用しました。
label {
float: left;
width: 100px;
height: 100px;
position: relative;
cursor: pointer;
}
label input[type=radio] {
opacity: 0;
}
label img {
position: absolute;
top: 0;
left: 0;
opacity: 0.5;
}
:checked + img {
opacity: 1;
}
基本的に、それぞれlabel
が で完全に満たされた通常サイズのボックスになりますimg
。ラジオ自体は を使用して非表示にしopacity:0
ます。ユーザーはimg
、チェックされたラジオの次に選択されているものが不透明になり、他のラジオが半透明になることを知ることができます。他のさまざまな種類の効果を非常に簡単に実行できます。
私が気に入っているのは、フォームの処理がシンプルなままであることです。これは単なるラジオ ボタンのグループです。
ラジオボタンに不透明度を使用するのではなく、display:none
またはラジオボタンvisibility:hidden
がまだタブインデックスにあり、フォームにキーボードからアクセスできるようにしました。
$('#js input[type=radio]').hide();
私がこれを正しく理解していれば、ラジオボタンは必要ですが、ボタン自体は表示したくないでしょう。ボタンを削除するだけでは、求めているユーザー エクスペリエンスが得られないことに注意してください。なんらかの形式のユーザー フィードバックが必要です。
次の 2 つのオプションがあります。
1) javascript / jquery を使用してこれをプログラムします。そのことを念頭に置いて、ラジオ ボタンを最初のプレースホルダーとして使用し、ページを再描画してボタンをクリック可能な div と動的に変化する隠しフィールド値に置き換える JavaScript を (理想的には jquery プラグイン経由で) 使用することをお勧めします。
2) :checked の CSS メタ クラスを使用します。これは、残念ながらクロス ブラウザーをサポートしていないようです。
cssで隠すことはできないと思います。ラジオボタンを非表示にしてから、機能をJSに置き換える必要があります。おそらく、選択可能なLIのリストがあなたのために働くでしょう。
jQuery UIから選択可能:http://jqueryui.com/demos/selectable/
<input type='radio' value='1' name='rad' class='radio'>
<input type='radio' value='2' name='rad' class='radio'>
<input type='radio' value='3' name='rad' class='radio'>
<ol id="selectable" style='display:none'>
<li class="ui-widget-content">Item 1</li>
<li class="ui-widget-content">Item 2</li>
<li class="ui-widget-content">Item 3</li>
</ol>
$(function() {
$('.radio').hide();
$( "#selectable" ).show().selectable({
selected: function(event, ui) {//figure out which was selected and mark the hidden radio button}
});
});
var inputs = document.getElementById('my-form').getElementsByTagName('input');
for (var i = 0, inputsLength = inputs.length;i < inputsLength; i++) {
var input = inputs[i];
if (input.getAttribute('type') == 'radio') {
input.style.display = 'none';
}
}
または、お使いのブラウザがサポートしている場合 ( querySelectorAll in document
)...
document.querySelectorAll('#my-form input[type="radio"]').style.display = 'none';
この style="list-style:none;" を追加することでそれを行うことができます
style="display:none;"
すべての"<input type='radio'…>"
タグの中に: を挿入するだけ
です。
これにより、箇条書きは非表示になりますが、ラベルは表示されたままになります。