Chromeで機能しないオプションのパディングを選択します


83

Chromeで機能しないオプションのパディングを選択します

<style>
select option { padding:5px 0px; }
</style>    
<select>
<option>1</option>
<option>2</option>
<option>3</option> 
</select>

2
何を達成しようとしていますか?5pxで埋められる各オプション?それともメインボックスだけですか?
DeeKayy90 2014年

はい...オプション値のパディングが必要です
Piyush Marvaniya 2014年

1
厳密にはパディングではありませんが、左パディングのパディングには&nbsp;を使用できます。これは、固定されますながら:jsfiddle.net/chech/u5rcheqf/1
chech

回答:


136

Chromeの選択入力にパディングを適用する方法を見つけました

select{
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    padding: 5px;
}

現在のクロム39.0.2171.71(64ビット)とサファリで動作するようです(私はこれをMacでのみテストしました)。

これにより、選択入力に追加されたデフォルトのスタイルが削除されたようです(ドロップダウン矢印も削除されました)が、クロムをオーバーライドせずに独自のスタイルを使用できます。

ここからコードを使用しているときに、この修正に遭遇しました:http//fettblog.eu/style-select-elements/


1
すべてのブラウザで機能する別の解決策&nbsp;、選択リストの最初のオプションに追加することです。これこれを確認してください。Hopeが役立ちます。
shaijut 2016年

2
@stomこれは左右のパディングでは機能するかもしれませんが、上下のパディングでは機能しないと思います。
rmmoul 2016年

少なくとも私のマシンでは、これはもう機能していません!:)
Nuno cruz 2016

1
また、のようなプラグインを使用することができSELECT2または選択したあなたの変換<select><option/></select>完全にカスタマイズ可能に要素を<ul><li/></ul>要素を。このようにして、他の入力フィールドまたは一般的なUIに一致するすべてのドロップダウンのスタイルを設定できます。
Tad Wohlrapp 2017年

3
矢印はこれで失われます:(
Raul H

40

この単純なハックはテキストをインデントします。うまく機能します。

select {
  text-indent: 5px;
}

1
完璧な答え。完璧に動作しました。
Hussnain Cheema 2017

13
これにより、select自体にパディングが追加されますが、オプションには追加されません。そして、オプションにテキストインデントを適用すると、クロム64のいずれかで動作しません
chris.ribal

Chrome71ではこれを「不明なプロパティ」と呼んでいます。
マーク

9

のようだ

残念ながら、Webkitブラウザはまだオプションタグのスタイル設定をサポートしていません。

あなたはここで同様の質問を見つけるかもしれません

  1. 選択タグのオプション要素のスタイルを設定するにはどうすればよいですか?
  2. 選択ドロップダウンHTMLのスタイリングオプション値がChromeとSafariで機能しない

最も広く使用されているクロスブラウザソリューションは、ulliを使用することです。

それが役に立てば幸い!


9
答えてくれてありがとう。ウェブサイト、HTML、CSSが登場してから何年も経った今でも、選択オプションのパディングなどのスタイルを設定することができないのは驚きです。要素のスタイリングと配置は非常にイライラする可能性がありますが、Android開発では、はるかに簡単です。HTMLとCSSを使用するWeb環境が、デスクトップやネイティブのモバイル環境と比較して、「未完成」、「進行中」のように見える理由がわかりません。
ブライアン

2
おそらく近い将来、Webはより美しくなり、開発者はshadowdomの手伝いを手に入れるでしょう-robdodson.me/shadow-dom-styles :)うまくいけば、開発者はフォーム要素の内層を制御できるようになります。ただし、RIPIE。
Pravin Waychal 2015

2
@Bryan Webは古いテクノロジーであるため、改善されていない古いアイデアがいくつかあります。ブラウザのサポートにより、新機能は常に誰にでも届くのが遅く、無感覚なものがないため(既存の回避策があり、人々はそうし、エンドユーザーはこれらのブラウザが不足していることに気づきません)、何も変わりません。
csga5000 2015

6

これで直しました

select {
    max-height: calc(1.2em + 24px);
    height: calc(1.2em + 24px);
}


max-height: calc(your line height + (top + bottom padding));
height: calc(your line height + (top + bottom padding));

これは私がこれまでに見た中で断然最高の解決策です。しかし、それがheight: calc(1.2em + 24px);うまくいかなかったときだけ私のために働いたmax-height: calc(1.2em + 24px);
Julius

ジュリアス私はすべての主要なブラウザの最大高さがうまく機能していることを確認しました。ただし、height属性を使用することも良い機会です。
Ali Sufyan 2018

3

非常に単純なアイデアですが、それに応じて変更できます。これは見栄えが良くなるように設定されているのではなく、アイデアを提供するためだけのものです。それが役に立てば幸い。

CSS:

ul {
    width: 50px;
    height: 20px;
    border: 1px solid black;
    display: block;

}

li {
    padding: 5px 0px;
    width: 50px;
    display: none;

}

HTML:

<ul id="customComboBox">
&nbsp
    <li>Test</li>
    <li>Test 2</li>
    <li>Test 3</li>
</ul>

脚本:

$(document).ready(function(){
    $("#customComboBox").click(function(){
        $("li").toggle("slow");
    });
});

デモ


1
@PiyushMarvaniya理解していますが、覚えているので、selectオプションで単一の要素を変更することはできません。それが私が代替案を提供した理由です。
DeeKayy90 2014年

1
この例では、キーボードナビゲーション(矢印またはMacショートカット)、Webアクセシビリティツールは提供されていません。
ピョートルŁużecki

繰り返しますが、問題はカスタムドロップダウンを作成することではなく、パディングを追加することでした。OPが要件に応じて構築するための単一のベースを提供しましたが、カスタムコントロールは作成しません。=)
DeeKayy90 2015

1
UL / LIドロップダウンを使用する場合は、Bootstrapのドロップダウンウィジェットを使用することをお勧めします。バージョン2および3は、矢印キーを有効にするためにrole = "menu"およびrole = "navigation"をサポートしています。IMOで十分に精査されたものを使用することは理にかなっています。
mbokil 2016年

@mbokil +1、車輪の再発明よりも間違いなく良いオプションです。そこにあるものを使用してください。
DeeKayy90 2016年

2

これoptionは「システム」によって生成されたドロップダウンメニューであるため、エントリでは機能しませんpaddingが、選択のを設定できます。

CSSでbox-sizingプロパティをcontent-boxにリセットするだけです。

のデフォルト値はselectですborder-box

select {
 box-sizing: content-box;
 padding: 5px 0;
}

選択のパディングを設定できます
-Chrome75で

1

私はあなたの問題に対して少しトリックがあります。ただし、そのためにはjavascriptを使用する必要があります。ブラウザがChromeであることを検出した場合は、すべてのオプションの間に「ダミー」オプションを挿入します。それらの「ダミー」オプションに新しいクラスを与え、それらを無効にします。font-sizeで定義できる「ダミー」オプションの高プロパティで。

CSS:

option.dummy-option-for-chrome {
  font-size:2px;
  color:transparent;
}

脚本:

function prepareHtml5Selects() {

  var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
  if(!is_chrome) return;

  $('select > option').each(function() {
    $('<option class="dummy-option-for-chrome" disabled></option>')
     .insertBefore($(this));
  });
  $('<option class="dummy-option-for-chrome" disabled></option>')
    .insertAfter($('select > option:last-child'));
}

1

パディングではありませんが、単に大きくすることが目標の場合は、を増やすことができますfont-size。また、で使用するとfont-size-adjust、オプションではなく選択時にフォントサイズが通常に戻るため、最終的にoption大きくなります。

すべてのブラウザで動作するのか、それとも現在も動作し続けるのかわからない。

Chrome85およびFirefox81でテスト済み。

スクリーンショット(Firefoxの場合)

select {
    font-size: 2em;
    font-size-adjust: 0.3;
}
<label>
  Select: <select>
            <option>Option 1</option>
            <option>Option 2</option>
            <option>Option 3</option>
          </select>
</label>


0

Jqueryなし-サードパーティのjsファイルなし

function clickComboBox(){
  comboOpt = document.getElementsByClassName("opt");
  for (i = 0; i < comboOpt.length; i++) {
      if (comboOpt[i].style.display === "block") {
        comboOpt[i].style.display = "none";
      } else {
        comboOpt[i].style.display = "block";
      }
  }    
}
function clickOpt(value1,text1){
  document.getElementById("selectedValue").value=value1;
  document.getElementById("customComboBox").innerHTML=text1;
  clickComboBox();
}
#customComboBox{
width: 150px;
height: 20px;
border: 1px solid #CCCCCC;
display: block;
padding: 2px 5px;
}
.opt{
padding: 5px 0px;background-color:#CCCCCC;
width: 160px;
display: none;
}
<div id="customComboBox"  onClick="clickComboBox()">
-Select Value-
</div>
<input type="hidden" id="selectedValue">
  <div class="opt">
  <div onClick="clickOpt('01','Test1')"><img  src="https://pasteboard.co/J6940Vs.png" height="20">Test1</div>
  <div style="padding-left:10px;" onClick="clickOpt('02','Test2')">Test2</div>
  <div onClick="clickOpt('03','Test3')">Test3</div>
  </div>

スマートコード-jqueryを使用する


-2

font-size必要に応じて、オプションのプロパティを使用できます。


これはChromeでは機能するようですが、Firefox(最新バージョン)では機能しません。Firefoxは、ドロップダウンの前の選択されていないボックスのスタイルのみをターゲットにしています。

-8

選択タグの高さを設定するだけです

select{
    height: 30px;
    max-height: 30px;
}

これは、他の答えがすでに言ったことを繰り返すだけです、あなたはこれに何か新しいことを与えることができますか?
TIW

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.