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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

Q&A

解決済

3回答

5839閲覧

class 内のCSSが効かない

githubac

総合スコア99

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

HTML

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

CSS

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

0グッド

0クリップ

投稿2015/08/07 05:12

input[type="text"] {
height: 30px;
font-size: 14px;
border:1px solid #ccc;
padding: 3px;
}

.form_error {
border: 2px red solid;
}

cssに上記順番に記載して
addclassでform_errorをあてているのですが(要素の検証などで実際にclassに記載されているのを確認した)
border:1px solid #ccc;
が効いてしまいました

.form_error
を効かせるにはどうすればいいでしょうか?

CSSはあまり詳しくないので初歩的な他にチェック必要なことがあればいろいろ教えて下さい

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

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

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

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

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

guest

回答3

0

ベストアンサー

cssの優先度の問題ですね!

cssを記述する際は、classやid、htmlにstyle属性で直書きするなどたくさんの方法がありますよね??

なのでcssの書き方によって優先度(これのほうが強い!)みたいなのが設定されています!

具体的にはこのサイトを見ていただけるとわかるかもしれません。

!importantはもう使わない!CSSの優先順位をおさらいしよう

上の記事から引用しますが、

指定方法 例 ポイント
全称セレクタ * 0
タイプセレクタ p 1
擬似要素 :first-child 1
擬似クラス [type="text"] 10
classセレクタ .fugafuga 10
idセレクタ #piyopiyo 100
要素に直書き style="" 1000

このようになっています。
つまりこれを使って要素のポイントを計算し、高いほうが適応されるわかです。

githubacさんの例で言うと

input[type="text"] = input(タイプセレクタ) + [type="text"]
= 1 + 10
= 11

.form_error = .form_error(classセレクタ)
= 10

上のinput[type="text"]のほうがポイントが高いですよね?
なので、いくら.form_errorを追加しても反映されないのです。

cssが上書きされないのはこれが原因です。

もし.form_errorを適応させたい場合は、指定方法のポイントを11以上(同じ数だと下に書いてあるほうが適応されます)にすればいいのです!

おそらく
.form_error {
border: 2px red solid;
}


intput.form_error {
border: 2px red solid;
}

とすれば
intput.form_error = input(タイプセレクタ) + .form_error(クラスセレクタ)
= 1 + 10
= 11
で同じ数なので下に書いてあるintput.form_errorが適応されます。

長くなってしまいましたがこれで解決できれば幸いです!

失礼します!

投稿2015/08/07 05:43

MasakazuFukami

総合スコア1869

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

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

MasakazuFukami

2015/08/07 05:49

ちなみにご存知かも知れませんが、inputタグはブラウザによってデザインが違うので初期化しておいたほうがいいかもしれません。 僕はよくinput[type="text"]に -webkit-appearance:none; border:none; background:transparent; を最初に指定していてあとから好きなように上書いていく方法をとっています! 頑張ってください!
githubac

2015/08/07 06:31

とても参考になりました input.submit_form_error,select.submit_form_error { border:2px red solid; } セレクトタグにも反映させたいのでこのようにしてみました!
MasakazuFukami

2015/08/07 07:09

そうイッていただけて光栄です! よく考えたらinput.form_errorにすると input[type="radio"]やinput[type="checkbox"]などにも反映されてしまうので input[type="text"].submit_form_error,select.submit_form_error { border:2px red solid; } としたほうがいいかもしれませんね! とりあえず解決して良かったです!
guest

0

CSS優先順位の仕様によるものかも知れません。参考ページ

__[type="text"].form_error__は重要度的に等価なのでこの状態ならclassが優先されますが、__input[type="text"]__とすることで優先順位が逆転しているのでは無いでしょうか?

以下のようにすれば目的に沿った結果が得られると思います。

CSS

1input[type="text"] { 2 height: 30px; 3 font-size: 14px; 4 border:1px solid #ccc; 5 padding: 3px; 6} 7 8input[type="text"].form_error { 9 border: 2px red solid; 10}

投稿2015/08/07 05:35

hirohiro

総合スコア2068

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

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

hirohiro

2015/08/07 05:42

と思ったらinput[type="text"]としても優先度は変わらないみたいです。 単純に記述する順番を変えただけでもclassが適応されました。 .form_error { border: 2px red solid; } input[type="text"] { height: 30px; font-size: 14px; border:1px solid #ccc; padding: 3px; }
hirohiro

2015/08/07 05:45

あれ?コメント修正できなくなってる?コメントの内容は間違いです。 記述を逆にしただけではclass反映されてませんでした。 投稿内容のほうが正しいみたいです。
githubac

2015/08/07 07:14

コメントありがとうございました! 優先度覚えます!
guest

0

css

1input[type="text"]:not(.form_error) { 2 height: 30px; 3 font-size: 14px; 4 border:1px solid #ccc; 5 padding: 3px; 6} 7 8.form_error { 9 height: 30px; 10 font-size: 14px; 11 border: 2px red solid; 12 padding: 3px; 13} 14

このようにしてみてはいかかがでしょうか。
最初のスタイルはinput[type="text"]でクラスがform_error以外のものに適用されるはずです。

投稿2015/08/07 05:18

orange0190

総合スコア1698

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問