🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

Q&A

解決済

4回答

1047閲覧

[css/js].class1が読み込まれ?たら.class2を読み込む。みたいなことは可能か

退会済みユーザー

退会済みユーザー

総合スコア0

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/02/24 03:26

編集2021/02/24 07:16

現在、バリデーションに引っかかった時にerror-messageを出力するようにしています。
しかし、inpuの入力欄自体の背景色も変えたいと思っています。

invalidとnoinvalidをinputへ付与してもよいですが、
それだとエラーメッセージが呼び出される前に(ページを読み込んだ直後に)背景色が変わってしまいます。
今回はerror-messageを呼び出した時に、inpuの[textの入力欄背景色も変えるやり方にしみてみたいです。

このやり方は実装可能ですか?

以下html

<div> <div> <p> <input type="text" name="data[test][id]" id="test_id" class="test_class" required="required"> </p> </div> <p class="error-message">エラーです。</p> <div>

代替案?
=:activeはクリックしている間ですが、クリックしたら変わるという仕様でも問題ありません。そのようなことは可能ですか?調べましたがやはりcssだけでは厳しいように思えました。

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

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

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

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

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

m.ts10806

2021/02/24 04:09

htmlの構成にも依存する
thyda.eiqau

2021/02/24 06:29

具体的なHTMLの構造と、その中のどの要素に何のスタイルを適用したいのか・適用したくないのかをご提示ください。
退会済みユーザー

退会済みユーザー

2021/02/24 06:32

>具体的なHTMLの構造と、その中のどの要素に何のスタイルを適用したいのか・適用したくないのかをご提示ください。 失礼しました。しばしお待ちください。
m.ts10806

2021/02/24 06:42 編集

はじめに指摘したときになぜ追記しなかったのかわからない。回答にだけ飛びついて解決するわけ無いじゃん(エスパーするしかない質問内容なんて全部そんなもん)
Lhankor_Mhy

2021/02/24 07:21

> m.ts10806さん 「回答もしくは繋がりそうな質問にのみ答えます。他は時間の無駄なので一切返しません。」の人なので、言っても無駄です。 むしろ、後からとはいえコードを提示する対応してきたので、驚きです。 やればできるんですね。
m.ts10806

2021/02/24 07:30

Lhankor_Mhyさん 認識しています。 私が最初に提示求めた情報が回答ついたあとになんやかんやその回答者とやり取りした結果必要になって追記されたことは一度や二度ではないので、その部分を指摘しています。 はじめから指摘に応じれば他人と無駄なやり取りなく解決できるのに、それをしない理由が不明。 自ら無駄な時間を生み出してるだけということなんですけどね。
Lhankor_Mhy

2021/02/24 07:49 編集

私の回答も無駄になりましたか。 エスパー能力で要望をほぼくみ取っていた回答だったので残念です。CSSだけで組むならあれしかないと思うけど……
m.ts10806

2021/02/24 08:20 編集

「荒らし」だそうですね。 自分の都合だけ優先したいなら無料の場は向かないというだけの話。サービスのルールもあるのに、荒らし呼ばわりは非常に心外。 他で立てたとて同じスタンスなら指摘されることは同じ。成長しないのも同じ。
guest

回答4

0

バリデーションに引っかかった時にerror-messageを出力する

の処理をするタイミングで、親要素にエラーなのかどうかの情報をもたせてやればいいのでは。

html

1<style> 2.item .error-message { 3 display: none; 4} 5.item.invalid input[type="text] { 6 background-color: red; 7} 8.item.invalid .error-message { 9 display: initial; 10} 11</style> 12 13<div class="item"> 14 <input type="text"> 15 <p class="error-message">エラーです。</p> 16</div> 17 18<script> 19const isValidValuedFormItem = inputElement => { 20 return Math.random() >= 0.5; 21}; 22 23[...document.querySelectorAll('div.item')].forEach(div => { 24 let className = isValidValuedFormItem(div.querySelector('input'))? 'valid' : 'invalid'; 25 div.classList.remove('valid', 'invalid'); 26 div.classList.add(className); 27}); 28</script>

invalidとnoinvalidをinputへ付与してもよいですが、

重要なことではないですが、これは普通validとinvalidでは?

投稿2021/02/24 08:04

編集2021/02/24 09:28
thyda.eiqau

総合スコア2982

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

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

0

CSS単体でご希望の処理を行う方法を存じません。
実務だと個別にCSS当てています。

複雑な条件で動的に処理したい場合はJSで書くことが多いですが、

sample

1<style> 2 div input:nth-last-child(2) , 3 span.error { 4 color: red; 5} 6</style> 7 8<form class="" action="index.html" method="post"> 9 <div class=""> 10 <span class="">入力</span> 11 <input type="text"> 12 <span class="error">エラーが出たよ</span> 13 </div> 14</form>

ちょっとトリッキーですけど、エラーが出る際にspan要素が増えることを利用し、
inputが後ろから2番目に移動することを利用してこう書く方法もあります。

一応、JS書かなくても良い方法ですが、要素が増えると調整が必要になります。
ご参考まで。

投稿2021/02/24 04:45

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2021/02/24 04:55

ありがとうございます。 現在、input[type="text"]で指定をしていたんですが、 .class1 , input[type="text"]とするとclass1の方に背景色がついてしまいます。 ご回答の内容だと span.error にのみcssがあたる認識で合ってますか?
退会済みユーザー

退会済みユーザー

2021/02/24 06:52 編集

すみません、勘違いしていました。inputに当てたいのは背景色なんですね? カンマで区切ると複数の要素に{}の中のスタイルを適用できますよという意味になります。 背景色と文字色をそれぞれ別に当てたい場合は別々に書かないとダメです。 あくまでJSを使わなくてすむサンプルコードになります。 <style> div input:nth-last-child(2) { background: aliceblue; } span.error { color: red; } </style>
退会済みユーザー

退会済みユーザー

2021/02/24 07:26

荒らしが発生したため、別の場所で立てます。 せっかく回答してくださったのに申し訳ありません。 次はもう少し詳しく書きます。何度もコメントさせてしまい失礼しました。
guest

0

ベストアンサー

これではだめなんでしょうか?

CSS

1.class1{color:red;} 2.class1,.class2{backgroud-color:blue;}

逆?

投稿2021/02/24 03:38

yambejp

総合スコア116694

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

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

退会済みユーザー

退会済みユーザー

2021/02/24 04:58

ありがとうございます。 現在、input[type="text"]で指定をしていたんですが、 .class1 , input[type="text"]とするとclass1の方に背景色がついてしまいます。 背景色をつけたいのは、inputの入力項目の背景です。
yambejp

2021/02/24 06:20

では逆ですね <style> .class1,[type="text"]{color:red;} [type="text"]{background-Color:blue;} </style> <div class="class1">c1</div> <input type="text" value="c2">
退会済みユーザー

退会済みユーザー

2021/02/24 06:25

コメントいただいた内容で適用しましたが、同じようにspanに背景色がついてしまいました。
退会済みユーザー

退会済みユーザー

2021/02/24 06:33

htmlを追記します。今しばらくお待ちください。すいません。
退会済みユーザー

退会済みユーザー

2021/02/24 07:26

荒らしが発生したため、別の場所で立てます。 せっかく回答してくださったのに申し訳ありません。 次はもう少し詳しく書きます。何度もコメントさせてしまい失礼しました。
guest

0

今のところ、対応してるブラウザはないです。

:has() - CSS: カスケーディングスタイルシート | MDN


HTMLでの出現順序を入れ替えてよいならば、可能です。

サンプル

退会したようですが、質問の変更に合わせて追記

サンプル

html

1<div> 2<p class="error-message">エラーです。</p> 3<div> 4<p> 5<input type="text" name="data[test][id]" id="test_id" class="test_class" required="required"> 6</p> 7</div> 8</div>

css

1div{ 2 display: flex; 3 flex-flow: reverse; 4} 5.error-message{background-color:blue;order:1;} 6.error-message + div input[type=text]{color:red;}

投稿2021/02/24 06:38

編集2021/02/24 07:54
Lhankor_Mhy

総合スコア36946

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問