もしhoverした要素の『子要素・兄弟要素・親要素』であればCSSで要素の値を変更することが可能ですが、それ以外の場合はjQueryを使った方法になります。
今回はその方法について解説していきます。
CSSを使って『子要素・兄弟要素・親要素』の値を変更する方法は以下の記事を参照下さい。
【CSS】hoverで別要素の値を変更する方法【子要素・兄弟要素・親要素】
続きを見る
(有料になっていたらすいません🙇♂️)
jQueryを使ってhoverで別要素の値を変更する方法
早速ですがこちらがデモになります。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
コードの解説をしていきますが、見やすくする為にポイントとなるものだけ書くので、全部見たい人は左上の『HTML・CSS』をクリックして下さい。
コード解説
コードはこちらです。
<div class="box01">
<div class="btn js-box">この要素が変化</div>
</div>
<div class="box02"></div>
<div class="box03">
<div class="btn js-btn">ボタンをhoverすると</div>
</div>
HTMLを見れば分かりますが、hoverする要素に対して変化する要素は『子要素・兄弟要素・親要素』のどれでもありません。
CSSはこちらです。
.btn {
background-color: #1cb4d3;
transition: background-color .4s, transform .4s, color .4s;
}
/* hoverした後の変化 */
.js-hover {
background-color: #7fffd4;
color: red;
transform: scale(1.1, 1.1);
transition: background-color .4s, transform .4s, color .4s;
}
hoverしたら3つのプロパティが変化するようにしています(『background-color』『color』『transform』)
注意点としてはtransition
で『all』と書くと予期せぬ箇所で変な挙動をすることがあるので、プロパティは1つずつ指定するのが好ましいです。
詳しくは以下の記事を参照下さい。
【CSS】transitionにプロパティを複数指定する書き方
続きを見る
そして.js-hover
ですが、これはjQueryがhoverした時に指定した要素に付与するclassなので、HTMLには書いていません。
そしてjQueryはこちらになります。
$(function () {
// hoverする要素のclass名
$(".js-btn").hover(
function () {
// hoverした時の処理(classを付与)
$(".js-box").addClass("js-hover");
},
function () {
// hoverを外した時の処理(classを外す)
$(".js-box").removeClass("js-hover");
}
);
});
jQueryがやっていることは簡単で、以下のようになります。
js-btn
というclassが付いている要素をhoverしたらjs-box
というclassが付いている要素にjs-hover
というclassを付与js-btn
というclassが付いている要素のhoverを外したらjs-box
というclassが付いている要素のjs-hover
というclassを外す
この方法であれば子要素や兄弟要素でなく、離れた要素に対しても値を変えることが可能になります。
以上になります。
【CSS】hoverで別要素の値を変更する方法【子要素・兄弟要素・親要素】
続きを見る