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

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

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

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

HTML

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

CSS

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

Q&A

解決済

1回答

1233閲覧

jQueryでborderの色を変更したい

azaz_wb

総合スコア10

jQuery

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

HTML

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

CSS

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

0グッド

0クリップ

投稿2021/06/13 02:32

編集2021/06/13 06:30

headerの高さを超えた時にborderの色を変更したいです。
addClassとremoveClassで.colorの付け外しをしたいのですが、反映されません。
どこが間違っているかご指摘お願いいたします。

HTML

1<header class="site-header"> 2 <ul class="header-list"> 3 <li><a href="#item-section" style="text-decoration:none;" class="header-link">ITEMS</a></li> 4 <li><a href="#sns-section" style="text-decoration:none;" class="header-link">SNS</a></li> 5 <li><a href="#shop-section" style="text-decoration:none;" class="header-link">SHOP</a></li> 6 <li><a href="#map-section" style="text-decoration:none;" class="header-link">MAP</a></li> 7 <li><a href="#" style="text-decoration: none;" class="header-link lang">Italy</a></li> 8 </ul> 9</header> 10<section class="top"> 11 <div class="top-img"> 12 <img src="img/dounuts_logo3.png" alt="ロゴ"> 13 </div> 14</section> 15 16<section class="message semicircle"> 17 <div class="message-z"> 18 <h1>from Dounut's Pop</h1> 19 <div class="message-center"> 20 <div class="message-p"> 21 <p class="messa">テキスト</p> 22 <p class="messa">テキスト</p> 23 <p class="messa">テキスト</p> 24 <p class="messa messa-main">メインテキスト!</p> 25 </div><!--message-p--> 26 </div><!--message-center--> 27</div> 28</section> 29

CSS

1/*ヘッダー*/ 2header { 3 position: relative; 4 height: 56px; 5 position: fixed; 6 top: 0; 7 right: 0; 8 transition: 0.5s; 9 z-index: 100; 10} 11.site-header { 12 display: flex; 13 justify-content: space-between; 14 width: 100%; 15 line-height: 56px; 16} 17.site-header a { 18 color: #fff; 19 font-size: 20px; 20 transition: 0.5s; 21 font-weight: bold; 22 font-family: 'Hiragino Kaku Gothic Std','arial black'; 23} 24.site-header.change-color a { 25 color: #574643; 26 font-size: 20px; 27 transition: 0.5s; 28 background-color: rgba(255, 255, 255, 0); 29} 30.header-list { 31 display: flex; 32 list-style: none; 33} 34.header-list li a { 35 font-size: 20px; 36} 37.header-link { 38 margin-right: 32px; 39} 40.header-link.change-color{ 41 margin-right: 32px; 42} 43.lang { 44 border: solid 2px #fff; 45 padding: 4px; 46 margin-right: 32px; 47 font-size: 25px; 48} 49.lang.color { 50 border: solid 2px #574643!important; 51 padding: 4px; 52 margin-right: 32px; 53 font-size: 30px; 54} 55/*ヘッダーの変更後の背景*/ 56.change-color { 57 background-color: rgba(255, 255, 255, 0.753); 58 transition: 0.5s; 59} 60/*トップ*/ 61.top { 62 background-image: url(img/sample/4507419_s.png); 63 background-size: cover; 64 height: 100%; 65 width: 100%; 66} 67.top-img { 68 text-align: center; 69 width: 100%; 70} 71.top-img img { 72 background-color: rgba(255, 255, 255, 0.733); 73 width: 30%; 74 padding: 48px; 75 border-radius: 56px; 76 margin: 160px 0; 77} 78/*メッセージ*/ 79.message-z { 80 z-index: 1; 81} 82.message-p p { 83 color: #574643; 84} 85.message-center { 86 margin: 0 auto; 87 padding: 16px 16px; 88 position: relative; 89 z-index: 10; /* 追加 */ 90 background: none; 91 text-transform: uppercase; 92 z-index: 10; 93} 94.message-center::after { 95 position: absolute; 96 top: 16px; 97 left: -16px; 98 content: ""; 99 height: 100%; 100 width: 100%; 101 z-index: -999; 102 background-color: #f8e6e6; 103 padding: 24px 32px; 104} 105.message-center::before { 106 position: absolute; 107 border: 1px solid #ff7177; 108 content: ""; 109 top: 0px; 110 left: 0px; 111 height: 100%; 112 width: 100%; 113 z-index: -998; /* afterの数値より上にする */ 114 padding: 24px 32px; 115} 116.message-center { 117 width: 40%; 118} 119.message-center img { 120 width: 30%; 121} 122.message-img { 123 text-align: right; 124 margin-top: -80px; 125} 126.message-p{ 127 font-size: 15px; 128 padding: 24px 32px; 129 line-height: 1.5; 130} 131.messa { 132 margin-bottom: 24px; 133} 134.messa-main { 135 font-size: 28px; 136}

jQuery

1/*スクロールでヘッダーの背景色変更*/ 2jQuery(window).on('scroll', function () { 3 4 if ($('header').height() < $(this).scrollTop()) { 5 $('header').addClass('change-color'); 6 $('lang').addClass('color'); 7}else { 8 $('header').removeClass('change-color'); 9 $('lang').removeClass('color'); 10} });

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

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

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

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

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

m.ts10806

2021/06/13 02:38

このHTMLだけだとそもそもスクロール発生させられませんが、 もう少しHTML出せませんか? あとcolorというクラスは.langが当てられた同じ要素に使われたときにしか有効になりませんが、そこは認識されてますか?
azaz_wb

2021/06/13 05:33

コードを書き足しました。 headerに.change-colorを付け足したのと同じように、.langに.colorを付けたいのですが、これだと有効にならないということでしょうか。
guest

回答1

0

ベストアンサー

ソースを見てみるました。

まずは確認ですが、

jQuery

1 $('header-list span').addClass('color');

で、colorのクラスを付けていますね。cssを見てみると、

css

1.lang { 2 border: solid 2px #fff; 3 padding: 4px; 4 margin-right: 32px; 5 font-size: 25px; 6} 7.lang.color { 8 border: solid 2px #574643!important; 9 padding: 4px; 10 margin-right: 32px; 11 font-size: 30px; 12} 13

で、borderを変更しようとしていることが分かります。しかし、jQueryでの$('header-list span')のセレクタで狙った要素に辿りつけていないように見えます。

よくみてみると、$(`header-list`)だと

html

1<header-list> </header-list>

という要素を探索しようとします。これは狙ったものと違うものでしょう。質問者のhtmlソース拝見すると、

html

1 <ul class="header-list"> 2 <!-- この子孫要素を検索したい --> 3 </ul>

ということだと思います。ですので、'''.header-list```というセレクタに変更すると良いように思います。

jQuery

1$('.header-list span')

ただし、ul要素の子孫を見てみると

javascript

1 <li><a href="#item-section" style="text-decoration:none;" class="header-link">ITEMS</a></li> 2 <li><a href="#sns-section" style="text-decoration:none;" class="header-link">SNS</a></li> 3 <li><a href="#shop-section" style="text-decoration:none;" class="header-link">SHOP</a></li> 4 <li><a href="#map-section" style="text-decoration:none;" class="header-link">MAP</a></li> 5 <li><a href="#" style="text-decoration: none;" class="header-link lang">Italy</a></li>

内に<span>というタグが無いため、これだと辿りつけません。

おそらく、

html

1<li><a href="#" style="text-decoration: none;" class="header-link lang">Italy</a></li>

のaタグにborderの色を変更したいように見えますので、

jQuery

1jQuery(window).on('scroll', function () { 2 3 if ($('header').height() < $(this).scrollTop()) { 4 $('header').addClass('change-color'); 5 $('.header-list a').addClass('color'); 6 }else { 7 $('header').removeClass('change-color'); 8 $('.header-list a').removeClass('color'); 9 } 10});

のようにすれば、borderの色を変更することが可能だと思います。

もしくは、いっそのこと、以下のようにcolorクラスの取り外しをやめて、

jQuery

1jQuery(window).on('scroll', function () { 2 3 if ($('header').height() < $(this).scrollTop()) { 4 $('header').addClass('change-color'); 5 }else { 6 $('header').removeClass('change-color'); 7 } 8});

css

1.lang { 2 border: solid 2px #fff; 3 padding: 4px; 4 margin-right: 32px; 5 font-size: 25px; 6} 7// langクラスとcolorクラスの要素 8.lang.color { 9 border: solid 2px #574643!important; 10 padding: 4px; 11 margin-right: 32px; 12 font-size: 30px; 13}

というセレクタを

css

1.lang { 2 border: solid 2px #fff; 3 padding: 4px; 4 margin-right: 32px; 5 font-size: 25px; 6} 7// change-colorクラスの子孫にあるlangクラス要素 8.change-color .lang { 9 border: solid 2px #574643!important; 10 padding: 4px; 11 margin-right: 32px; 12 font-size: 30px; 13}

という形に変更しても良いと思います。

余談ですが、!importantを付けて優先度上げていますが、詳細度(セレクターが詳しければ優先度が上がります)の観点から、これらは必要なくて、

css

1.lang { 2 border: solid 2px #fff; 3 padding: 4px; 4 margin-right: 32px; 5 font-size: 25px; 6} 7// change-colorクラスの子孫にあるlangクラス要素 8.change-color .lang { 9 border: solid 2px #574643; 10 font-size: 30px; 11}

以上長々と申しわけないですが、以上です。問題が解決されてたら嬉しいです。

投稿2021/06/13 06:16

nobkz

総合スコア320

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

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

azaz_wb

2021/06/13 06:52

spanで試した時のままになってしまってました。すみません。 ご丁寧な回答ありがとうございます。 j Queryでの変更はできませんでしたが、CSSを変更するとできました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問