jQuery로 탭을 마우스 오버 할 때 표시 화면 전환
소개
이번에는 jQuery를 사용하여 tab을 마우스 오버 할 때 페이지를 다시로드하지 않고 표시를 전환하는 방법을 설명합니다.
완성 이미지

환경
MacOS 10.15.7
루비 2.6.5
Ruby on Rails 6.0.0
jquery 3.4.1
전제 조건

환경
MacOS 10.15.7
루비 2.6.5
Ruby on Rails 6.0.0
jquery 3.4.1
전제 조건
그럼 작업하겠습니다!
①show.html.erb와 CSS를 작성한다.
우선은 html로부터 작성합니다. 이번에는 show.html.erb라는 파일에 씁니다.
show.html.erb<div class="container">
<%# tab部分 %>
<ul class='user-nav-bar'>
<li>
<a href="#" id="top", class='user-nav active'>
TOP
</a>
</li>
<li>
<a href="#" id="post", class='user-nav'>
POST
</a>
</li>
<li>
<a href="#" id="favorite", class='user-nav'>
Bookmark
</a>
</li>
<li>
<a href="#" id="post", class='user-nav'>
message
</a>
</li>
</ul>
<%# 表示部分 %>
<ul class="pages">
<li class="page show">
<div class="change-page">
トップページ
</div>
</li>
<%# POSTページ %>
<li class="page">
<div class="change-page">
ポストページ
</div>
</li>
<%# Bookmarkページ %>
<li class="page">
<div class="change-page">
ブックマークページ
</div>
</li>
<%# Messageページ %>
<li class="page">
<div class="change-page">
メッセージページ
</div>
</li>
</ul>
</div>
이어서 SCSS
show.scss// TOP・POST・Bookmark・Messageのtabセレクター==========================
.user-nav-bar {
display: flex;
justify-content: right;
width: 20vw;
margin: 0 0 0 1.5vw;
a {
color: rgba($color: #ffffff, $alpha: 0.3);
a:hover {
color: #00bfff;
}
}
li {
background-color: rgba($color: #222222, $alpha: 0.4);
padding: 15px;
font-size: 2vh;
}
}
ul.user-nav-bar li .active {
color: #ffffff;
text-decoration: none;
}
.user-nav:hover {
color: #00bfff;
text-decoration: none;
}
// TOP・POST・Bookmark・Messageの表示画面==================================
.pages {
height: 100vh;
}
.page {
background-color: rgba($color: #222222, $alpha: 0.4);
height: auto;
margin: 0 auto;
display: flex;
justify-content: space-around;
align-items: center;
display: none;
padding: 1.5vh 1.5vw;
}
.change-page {
display: flex;
justify-content: space-around;
height: 500px;
이상이 됩니다.
여기까지의 완성 이미지는 이하와 같을까 생각합니다.

② JavaScript로 화면을 전환하는 기술을 실시한다.
tab에 마우스를 올려 놓았을 때, 화면을 전환하는 처리를 js 파일에 기술해 갑니다.
이번에는 show.js라는 파일에 쓰겠습니다.
show.js
$(function() {
// class="user-nav"と設定しているDOM要素を取得してtabsという変数名で定義する。
let tabs = $(".user-nav");
// クラス切り替えをtabSwitch関数という名前で定義する。
function tabSwitch() {
// 全てのactiveクラスの中から、"active"という要素を削除
$(".active").removeClass("active");
// クリックしたタブに"activeクラス"を追加する。
$(this).addClass("active");
// 何番目の要素(タブ)がマウスオーバー されたのかを配列tabsから要素番号を取得して、変数indexに代入
const index = tabs.index(this);
// 全てのpageクラスから"show"という要素を削除して、マウスオーバーしたタブに対応したpageクラスに"showクラス"を追加する。
$(".page").removeClass("show").eq(index).addClass("show");
}
// タブがマウスオーバーされるとtabSwitch関数が呼び出される。
tabs.hover(tabSwitch);
});
이상이 됩니다.
완성형은 이쪽이 됩니다.

끝
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(jQuery로 탭을 마우스 오버 할 때 표시 화면 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/tomato1125/items/d0a8605cc32468a182de
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<div class="container">
<%# tab部分 %>
<ul class='user-nav-bar'>
<li>
<a href="#" id="top", class='user-nav active'>
TOP
</a>
</li>
<li>
<a href="#" id="post", class='user-nav'>
POST
</a>
</li>
<li>
<a href="#" id="favorite", class='user-nav'>
Bookmark
</a>
</li>
<li>
<a href="#" id="post", class='user-nav'>
message
</a>
</li>
</ul>
<%# 表示部分 %>
<ul class="pages">
<li class="page show">
<div class="change-page">
トップページ
</div>
</li>
<%# POSTページ %>
<li class="page">
<div class="change-page">
ポストページ
</div>
</li>
<%# Bookmarkページ %>
<li class="page">
<div class="change-page">
ブックマークページ
</div>
</li>
<%# Messageページ %>
<li class="page">
<div class="change-page">
メッセージページ
</div>
</li>
</ul>
</div>
// TOP・POST・Bookmark・Messageのtabセレクター==========================
.user-nav-bar {
display: flex;
justify-content: right;
width: 20vw;
margin: 0 0 0 1.5vw;
a {
color: rgba($color: #ffffff, $alpha: 0.3);
a:hover {
color: #00bfff;
}
}
li {
background-color: rgba($color: #222222, $alpha: 0.4);
padding: 15px;
font-size: 2vh;
}
}
ul.user-nav-bar li .active {
color: #ffffff;
text-decoration: none;
}
.user-nav:hover {
color: #00bfff;
text-decoration: none;
}
// TOP・POST・Bookmark・Messageの表示画面==================================
.pages {
height: 100vh;
}
.page {
background-color: rgba($color: #222222, $alpha: 0.4);
height: auto;
margin: 0 auto;
display: flex;
justify-content: space-around;
align-items: center;
display: none;
padding: 1.5vh 1.5vw;
}
.change-page {
display: flex;
justify-content: space-around;
height: 500px;
$(function() {
// class="user-nav"と設定しているDOM要素を取得してtabsという変数名で定義する。
let tabs = $(".user-nav");
// クラス切り替えをtabSwitch関数という名前で定義する。
function tabSwitch() {
// 全てのactiveクラスの中から、"active"という要素を削除
$(".active").removeClass("active");
// クリックしたタブに"activeクラス"を追加する。
$(this).addClass("active");
// 何番目の要素(タブ)がマウスオーバー されたのかを配列tabsから要素番号を取得して、変数indexに代入
const index = tabs.index(this);
// 全てのpageクラスから"show"という要素を削除して、マウスオーバーしたタブに対応したpageクラスに"showクラス"を追加する。
$(".page").removeClass("show").eq(index).addClass("show");
}
// タブがマウスオーバーされるとtabSwitch関数が呼び出される。
tabs.hover(tabSwitch);
});
봐 주셔서 감사합니다.
Reference
이 문제에 관하여(jQuery로 탭을 마우스 오버 할 때 표시 화면 전환), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tomato1125/items/d0a8605cc32468a182de텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)