質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1770閲覧

autocomplete に対して :placeholder-shown がきかない

mypt

総合スコア170

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2020/06/28 23:37

編集2020/06/29 04:19

フローティングラベルサンプル for Bootstrap · Bootstrap

Rails 上でこれと同じフローティングラベルを動かしたいと思ってるんですが
ページを表示した瞬間以下のようにラベルにだけスタイルが当たりません
イメージ説明

出力されているHTMLは以下で

<div class="form-label-group"> <input autocomplete="username" class="form-control" autofocus="autofocus" placeholder="メールアドレス" required="required" type="email" value="" name="user[email]" id="user_email"> <label for="user_email">メールアドレス</label> </div>

原因を探るために
SCSS をデバッグ用に以下のように border や背景に色をつけるだけにしました

.form-label-group { & input { &:not(:placeholder-shown) { border: 1px solid #0f0; & ~ label { border: 1px solid #f00; background-color: #fee; } } } }

画面を更新してオートコンプリート設定で値が表示される(=プレースホルダーが表示されてない)
状態で input のボーダーの色は変わったのですが
input ~ label で指定されるラベルの CSS が反映されず
画面のどこか1箇所(フォームとは関係ない場所)でもクリックすると反映されて色が変わります

また auto-complete ではなく value をセットすると最初から正常に色が変わります

JSはjquery と bootstrap を読み込んでいるだけでまだ何も仕込んでおらず
CSSやクラスを変更するようなギミックも HTML の構造を変化させるようなギミックも存在しません

なので input の CSS が反映されれば
input ~ label も反映しなければおかしいはずで
ブラウザの挙動がおかしいとしか思えないのですが原因がわかる方いらっしゃらないでしょうか

MAC OS 上の chrome 最新版(83.0.4103.116) です


デバッグCSSなしの状態(正常)
デバッグCSSなしの状態
ページ再読み込み直後(異常)
ページ再読み込み直後
ページ内のどこかをクリック後(正常)
ページ内のどこかをクリック後(正常)
仮に何かJSが悪さしてるとしても input => label は HTML 上では連続しているので
& ~ label で & 部分の CSS が反映されるのに ~ label だけが反映されない理由
また画面クリックするだけで反映される理由がわからないのです

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Firefoxでは問題なく動作していたので、主にChromeの問題かと思います。(Safariは未確認)
ご希望の通りではないでしょうけれど、こちらはいかがですか。

css

1.form-label-group input:-webkit-autofill { 2 padding-top: calc(var(--input-padding-y) + var(--input-padding-y) * (2 / 3)); 3 padding-bottom: calc(var(--input-padding-y) / 3); 4} 5 6.form-label-group input:-webkit-autofill ~ label { 7 padding-top: calc(var(--input-padding-y) / 3); 8 padding-bottom: calc(var(--input-padding-y) / 3); 9 font-size: 12px; 10 color: #777; 11}

CSS の :-webkit-autofill 疑似クラスは、 <input> 要素の値がブラウザーによって自動補完されている時に一致します。

:-webkit-autofill - CSS: カスケーディングスタイルシート | MDN

投稿2020/06/29 07:24

Lhankor_Mhy

総合スコア36960

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mypt

2020/07/01 02:41

ありがとうございます! おかげさまで読み込み直後も綺麗に表示できるようになりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問