回答編集履歴

4

誤字訂正

2025/01/31 01:21

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37209

test CHANGED
@@ -84,7 +84,7 @@
84
84
  }
85
85
  }
86
86
  </style>
87
- <h1 class="test">h1.test は、赤字イタリックではないではない</h1>
87
+ <h1 class="test">h1.test は、赤字イタリックではない</h1>
88
88
  <style>
89
89
  h1 {
90
90
  all: revert;

3

質問の変更を受けて追記

2025/01/31 00:56

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37209

test CHANGED
@@ -67,4 +67,30 @@
67
67
  さらに、`@layer`や`@scope`の実装により、これらの手法は今後使われなくなっていくかもしれません。
68
68
  また、別の設計思想を持つBootstrapやTailwindのようなユーティリティクラスベースのCSSライブラリなどもありますし、VueやReactなどではスコープ付きCSSなどのライブラリを使ってクラス名をユニークにビルドすることもあります。
69
69
 
70
+ ---
70
71
 
72
+
73
+ ### 質問の変更を受けて追記
74
+
75
+ もし、ご質問の内容が「あるページのスタイルを別のスタイルの干渉を受けずに書きたいが、**別のスタイルを変更できない|したくない**」ということであるなら、カスケードレイヤーはどうでしょうか。
76
+
77
+ ```html
78
+ <div class="test">.test は、赤字イタリック</div>
79
+ <style>
80
+ @layer test{
81
+ .test {
82
+ color: red;
83
+ font-style: italic;
84
+ }
85
+ }
86
+ </style>
87
+ <h1 class="test">h1.test は、赤字イタリックではないではない</h1>
88
+ <style>
89
+ h1 {
90
+ all: revert;
91
+ }
92
+ </style>
93
+ ```
94
+
95
+ ただし、完全に干渉から逃れられるかというと、そういうことはないだろうと思います。
96
+ CSSファイルからの読み込みであれば、`@import test.css layer(test)`のように、`@import`ルールで読み込んでください。

2

コードの例を追加

2025/01/30 09:25

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37209

test CHANGED
@@ -15,6 +15,50 @@
15
15
  違うコンポーネントについて『干渉』が起きてしまう場合、これはおおむねクラスの名づけが悪いです。
16
16
  原則として、完全に同じ意味を持つためデザインが完全に同じであるべき要素以外は、全て別のクラス名にすれば『干渉』はしません。
17
17
 
18
+ 簡単に言うと、
19
+
20
+ ```html
21
+ <style>
22
+ .user-card {
23
+ /* ... */
24
+ }
25
+
26
+ .user-card h1 {
27
+ /* ... */
28
+ }
29
+
30
+ .user-card .info {
31
+ /* ... */
32
+ }
33
+ </style>
34
+ <div class="user-card">
35
+ <h1></h1>
36
+ <div class="info"></div>
37
+ </div>
38
+ ```
39
+
40
+ ↑こうではなくて↓こう書きましょう、ということです。
41
+
42
+ ```html
43
+ <style>
44
+ .user-card {
45
+ /* ... */
46
+ }
47
+
48
+ .user-card__name {
49
+ /* ... */
50
+ }
51
+
52
+ .user-card__info {
53
+ /* ... */
54
+ }
55
+ </style>
56
+ <div class="user-card">
57
+ <h1 class="user-card__name"></h1>
58
+ <div class="user-card__info"></div>
59
+ </div>
60
+ ```
61
+
18
62
  これについては、BEMというCSS設計手法(とその分派)が一般に使われています。
19
63
 
20
64
  ---

1

ちょこっと追記

2025/01/30 08:47

投稿

Lhankor_Mhy
Lhankor_Mhy

スコア37209

test CHANGED
@@ -1,6 +1,7 @@
1
1
  ようこそ、CSSの沼へ!
2
2
  とりあえず結論を書きます。
3
3
 
4
+ **セレクタはクラス名の指定だけにしましょう**
4
5
  **全てのクラス名をユニークにしましょう**
5
6
 
6
7
  ---