iOS入力シャドウを削除します


92

iOS(Safari 5)では、入力要素(上部の内側の影)について次のことを行う必要があります。

例

トップシャドウを削除したいのですが、バグ-webkit-appearanceが保存されません。

現在のスタイルは次のとおりです。

input {    
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
    -webkit-appearance: none;
    -moz-appearance: none;
}

3
補足として、一般的なinputセレクターで「-webkit-appearance」を慎重に設定する必要があります。ラジオボタンやチェックボックスに望ましくない影響を与える可能性があります。
davidpauljunior 2014

おかげで私は要素にそれを使用します
WHITECOLOR 2014

回答:


205

を使用-webkit-appearance: none;して、デフォルトのIOSスタイルを上書きする必要があります。ただし、inputCSSでタグのみを選択しても、デフォルトのIOSスタイルは上書きされませんinput[type=text]。これは、IOSが属性セレクターを使用してそのスタイルを追加するためです。したがって、CSSは属性セレクターを使用して、事前設定されているデフォルトのIOSCSSスタイルをオーバーライドする必要があります。

これを試して:

input[type=text] {   
    /* Remove First */
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;

    /* Then Style */
    border-radius: 15px;
    border: 1px dashed #BBB;
    padding: 10px;
    line-height: 20px;
    text-align: center;
    background: transparent;
    outline: none;    
}

便利なリンク:

あなたはappearanceここでもっと学ぶことができます:

http://css-tricks.com/almanac/properties/a/appearance/

CSS属性セレクターについて詳しく知りたい場合は、ここで非常に有益な記事を見つけることができます。

http://css-tricks.com/attribute-selectors/


3
これらのスタイルをinput[type=password]にも適用することをお勧めします。
Rockallite 2017年

1
この投稿はほぼ4歳です。これは更新する必要がありますか?

1
現在使用されているSafariセレクターはtextarea, input[type="range"], input, input:matches([type="password"], [type="search"])-使用するだけで、すべての場合に機能するはずです。
da_berni

私にとっては、に適用!importantしたときにのみ機能しましたappearance。またappearanceselectsでも機能するはずです。
RuiVBoas

31
background-clip: padding-box;

影も取り除いているようです。

以下のよう@davidpauljunior述べました。-webkit-appearance一般的な入力セレクターの設定には注意してください。


1
background-clip: padding-box;iOSのテキスト入力フィールド内の影を削除します。たとえば、codepen.io / jstnrs / pen / YXBLVNを参照してください(iOSデバイスでURLを開いてください)。
jstnrs 2015

3
これは機能しますが、誰かがそれがどのように機能するか知っていますか?ありがとう。
nostalg.io 2016

私のために働いていませんでしたが、働きまし-webkit-appearance: none;た。
LefiTarik20年

5

webkitはすべてのプロパティを削除します

-webkit-appearance: none;

プロパティbox-shadowを使用して、入力要素の影を削除してみてください

box-shadow: none !important;

4

私は、a。)が機能しb。)それが機能する理由を理解できるという解決策を考え出そうとしました

入力の影(およびinput [type = "search"]の丸みを帯びた境界線)が背景画像から来ていることを私は知っています。

だから明らかに設定background-image: noneは私の最初の試みでしたが、これはうまくいかないようです。

設定はbackground-image: url()機能しますが、まだ空になるのではないかと心配していますurl()。今のところ悪い感じですが。

background-clip: padding-box; 同様に仕事をしているようですが、「background-clip」ドキュメントを読んだ後でも、これが背景を完全に削除する理由がわかりません。

私のお気に入りの解決策:

background-image: linear-gradient(transparent, transparent);

これは有効なCSSであり、私はそれがどのように機能するかを理解しています。


@BugWhisperer iOS 12.4で動作します:codepen.io/receter/pen/ymMzRG詳細を教えてください。
アンドレアスRiedmüller

私にはbackground-clip: padding-box !importantうまくいきませんでしたが、うまくいきました。
オールドボーイ

@BugWhisperer codepen.io/receter/pen/ymMzRGの例が機能するかどうかを確認できますか?また、background-image: linear-gradient(transparent, transparent) !important;うまくいくかどうか試してみることができますか?ここで何が問題なのか知っていただければ幸いです。
アンドレアスRiedmüller

残念ながら、私はちょうど私の電話を更新しました。codepenそれらサファリでの仕事とクロムのすべてをあなたがネイティブにそれをテストした場合は、同じ結果を得るならば、私は疑問に思う
oldboy

2

受け入れ答えながら、他の人が指摘したように、それだけでその入力のために働く、良いスタートですtypeです"text"。iOSではテキストボックスとしてもレンダリングされる他の入力タイプが無数にあるため、これらの他のタイプを考慮に入れるためにこのルールを拡張する必要があります。

これは、ボタン、チェックボックス、範囲スライダー、日付/時刻ドロップダウン、ラジオボタンのデフォルトのスタイルを維持しながら、入力テキストフィールドと内部シャドウのテキスト領域を削除するために使用しているCSSです。これらはすべて、控えめな<input>タグを使用して作成されています。 。

textarea,
input:matches(
  [type="email"],
  [type="number"],
  [type="password"],
  [type="search"],
  [type="tel"],
  [type="text"],
  [type="url"]
) {
  -webkit-appearance: none;
}

-7

これは私にとってはうまくいきます。さらに、それは私がそれをすべての異なるタイプの入力(すなわち、テキスト、電話、電子メールなど)に適用する必要がないことを意味します。

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