teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コード追記

2020/10/25 05:10

投稿

hatena19
hatena19

スコア34367

answer CHANGED
@@ -2,4 +2,58 @@
2
2
 
3
3
  [:has() - CSS: カスケーディングスタイルシート | MDN](https://developer.mozilla.org/ja/docs/Web/CSS/:has)
4
4
 
5
- document.querySelector() では使えるのでJavaScriptでの対応になります。
5
+ document.querySelector() では使えるのでJavaScriptでの対応になります。
6
+
7
+ 追記
8
+ ---
9
+ > ただHTMLの構造が下記のようにlabelタグ内にinputタグを入れるときはどのようにcssを記述すれば良いのでしょうか?
10
+
11
+ よく考えたら、方法を思いつきました。
12
+
13
+ input は `width: 0` で非表示にして、input自体の疑似要素でラジオボタンを表現すればいいだけでした。
14
+
15
+ ```html
16
+ <div class="radio">
17
+ <label for="hoge1">test1<input type="radio" id="hoge1" class="hoge" name="hoge"></label>
18
+ <label for="hoge2">test2<input type="radio" id="hoge2" class="hoge" name="hoge"></label>
19
+ </div>
20
+ ```
21
+
22
+ ```css
23
+ .radio > label {
24
+ position: relative;
25
+ display: block;
26
+ padding-left: 30px;
27
+ }
28
+
29
+ .hoge {
30
+ width: 0;
31
+ position: absolute;
32
+ left: 0;
33
+ }
34
+
35
+ .hoge::before, .hoge:checked::after {
36
+ content: "";
37
+ display: block;
38
+ position: absolute;
39
+ top: 0;
40
+ left: 0;
41
+ border-radius: 50%;
42
+ }
43
+
44
+ .hoge::before {
45
+ width: 15px;
46
+ height: 15px;
47
+ border: 1px solid #999;
48
+ }
49
+
50
+ .hoge:checked::after {
51
+ top: 3px;
52
+ left: 3px;
53
+ width: 11px;
54
+ height: 11px;
55
+ background: #d01137;
56
+ }
57
+ ```
58
+
59
+ [CodePenサンプル](https://codepen.io/hatena19/pen/bGegyER?editors=0110)