回答編集履歴

2

追記

2018/08/17 04:34

投稿

macaron_xxx
macaron_xxx

スコア3191

test CHANGED
@@ -40,6 +40,8 @@
40
40
 
41
41
  > `input.in1[type="text"]:valid ~ label.label4`を外す
42
42
 
43
+
44
+
43
45
  とフォーカスが外れたときに`label`が`input`内に戻ってしまいますね…。
44
46
 
45
47
 

1

間違いの修正

2018/08/17 04:34

投稿

macaron_xxx
macaron_xxx

スコア3191

test CHANGED
@@ -24,8 +24,36 @@
24
24
 
25
25
  参考にされているサイトでは`input`が`required`になっており、必須なのに空白のため、`invalid`となり上記CSSが効きません。(=inputの中にlabelが来るように見える)
26
26
 
27
- 対象の`input`を`required`にするか、`input.in1[type="text"]:valid ~ label.label4`を外すかのいずれかで期待通りの動きになるかと思います。
27
+ 対象の`input`を`required`~~にするか、`input.in1[type="text"]:valid ~ label.label4`を外すかのいずれか~~で期待通りの動きになるかと思います。
28
28
 
29
29
 
30
30
 
31
31
  ※参考サイトにて、Emailが`type="email"`ではなく`type="text"`になっているのは、`type="email"`にしてしまうとEmailの形式になるまで`invalid`になってしまい、`focus`が外れた際に`label`が`input`の中に来るように見えてしまうためです。
32
+
33
+
34
+
35
+ ## 追記
36
+
37
+ 間違っていたので訂正させてください。
38
+
39
+
40
+
41
+ > `input.in1[type="text"]:valid ~ label.label4`を外す
42
+
43
+ とフォーカスが外れたときに`label`が`input`内に戻ってしまいますね…。
44
+
45
+
46
+
47
+ 回避策としては`input.in1[type="text"]:not(:placeholder-shown) ~ label.label4`
48
+
49
+ として、HTML側に
50
+
51
+ `<input placeholder=" ">`を追加すればいいのですが、
52
+
53
+ `:placeholder-shown`はIEやEdgeで対応していないので、考えものですね。
54
+
55
+ [https://caniuse.com/#search=placeholder-shown](https://caniuse.com/#search=placeholder-shown)
56
+
57
+
58
+
59
+ やはり`required`と`:valid`を組み合わせるのがいいんですかねぇ…。