일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 슬라이드전환
- 깃
- 세로메뉴바
- github
- 정보처리기사
- 웹디자인기능사실기
- 렛츠기릿자바스크립트
- HTML
- 코드공유
- 프론트엔드
- git
- 코딩독학
- 비전공자
- jQuery
- 웹디실기
- CSS
- 웹퍼블리셔
- JavaScript
- 리액트
- Supabase
- react
- 웹디자인기능사
- 실기
- PROJECT
- 자바스크립트
- 생활코딩
- 타입스크립트
- web
- JS
- 연산자
- Today
- Total
코딩하는라민
Jquery 탭 메뉴 만들기 본문
Jquery 탭 메뉴 만들기
1. 탭의 기본 구조
- tab1, tab2 는 활성화되기 위한 클래스를 따로 줘야한다. ex) ‘on’, ‘active’, ‘current’ ...
- tab 에 a를 주지 않았으면 cursor: pointer; 속성을 부여해준다.
- tab의 ‘on’ 클래스에는 활성화되었을 때 색상을 따로 지정.
- contents 에도 활성화되기 위한 클래스를 지정해준다. ex) ‘on’, ‘active’, ‘current’ ...
- contents 는 tab 이 on 이 아닐 때에는 보이지 않게 하기 위해서 display: none;을 줘야한다.
- contents의 ‘on’ 클래스에 display: block; 과 너비, 높이 등등 보여질 부분의 속성을 지정.
tab1 | tab2 |
contents |
2. 탭 메뉴 만들기 : 같은 타이틀과 콘텐츠 부분이 같은 부모에 있는 형태
<div class="wrap">
<ul class="tab_list">
<li class="on">
<a href="#">공지사항</a>
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minima, recusandae dolor odit labore voluptate rerum facere autem magnam ab molestiae officia qui voluptas reprehenderit saepe iure obcaecati inventore cumque vero?</p>
</li>
<li>
<a href="#">갤러리</a>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Velit voluptates fuga in quae exercitationem tempore aliquid modi eos maxime odio, sequi nulla harum consequatur impedit similique dolore explicabo consequuntur illum!</p>
</li>
</ul>
</div>
.wrap{
width: 100%;
height: 100%;
}
.tab_list{
margin: 20px auto;
width: 500px;
height: 200px;
position: relative;
}
.tab_list li{
float: left;
width: 30%;
}
.tab_list li a{
text-align: center;
display: block;
padding: 10px;
font-weight: bold;
}
.tab_list li p{
display: none;
padding: 20px;
box-sizing: border-box;
line-height: 1.5;
border: 1px solid #eee;
border-top: none;
}
.tab_list li.on a{
background-color: pink;
}
.tab_list li.on p{
background-color: pink;
color: white;
display: block;
position: absolute;
left: 0;
width: 500px;
height: 160px;
}
- ul 의 li 의 너비를 보여질 탭의 너비보다는 작게 설정( ex. 30%, 100px ... )
- ul 의 li 은 옆으로 쌓이게 하여 탭의 제목(tab_list li a)이 가로로 정렬된 형태로 만들어준다.
- 콘텐츠 부분(ul li p)은 display: none; 으로 일단은 보이지 않게 만들어줌
- li에 on 이라는 클래스가 주어졌을 때, 화면에 보이게 만들어준다.
.tab_list li.on a
.tab_list li.on p
→ li가 on 클래스를 가지고 있을 때 li a 와 li p 에 색상을 지정해준다.
- tab_list li.on p에 포지션을 줘서 한곳에 보이게 만들어준 후 tab_list 를 기준으로 left : 0; 을 줘서 콘텐츠 부분이 왼쪽을 기준으로 정렬되게 만들어준다.
- left: 0; 값을 주지 않았을 경우 위의 사진과 같이 갤러리 탭의 콘텐츠 부분이 타이틀을 기준으로 정렬되기 때문에 옆으로 밀려나 있는 것 같이 보이게 된다.
- tab_list 을 기준으로 모든 콘텐츠 박스 (tab_list li p) 가 왼쪽으로 정렬되었다.
$('.tab_list li').click(function(){
$(this).addClass('on').siblings().removeClass('on');
});
- 그 다음 자바스크립트 한줄만 넣어주면 된다.
- tab_list li를 클릭하면 이 클릭한 것(this)에 on 이라는 클래스를 주고, li 의 형제들(두번째 탭)은 on 이라는 클래스를 제거해준다.
3. 탭 메뉴 만들기 : 타이틀과 콘텐츠 부분을 분리
<div class="wrap">
<div class="tab">
<ul class="tab_tit_list"> /* 타이틀 */
<li class="on">
<a href="#">
공지사항
</a>
</li>
<li>
<a href="#">
갤러리
</a>
</li>
</ul>
<ul class="tab_content_list"> /* 콘텐츠 */
<li class="active">
<p>Lorem ipsum dolor sit, amet consectetur adipisicing elit. Minima, recusandae dolor odit labore voluptate rerum facere autem magnam ab molestiae officia qui voluptas reprehenderit saepe iure obcaecati inventore cumque vero?</p>
</li>
<li>
<p>Lorem ipsum dolor sit amet consectetur, adipisicing elit. Velit voluptates fuga in quae exercitationem tempore aliquid modi eos maxime odio, sequi nulla harum consequatur impedit similique dolore explicabo consequuntur illum!</p>
</li>
</ul>
</div>
</div>
.wrap{
width: 100%;
height: 100%;
}
.tab{
margin: 20px auto;
width: 500px;
height: 200px;
position: relative;
border: 1px solid #eee;
}
.tab_tit_list li a{
width: 150px;
height: 50px;
line-height: 50px;
float: left;
text-align: center;
font-weight: bold;
}
.tab_content_list li{
display: block;
padding: 20px;
box-sizing: border-box;
width: 500px;
height: 200px;
position: absolute;
top: 30px;
display: none;
}
.tab_content_list li p{
padding: 20px;
box-sizing: border-box;
line-height: 1.5;
}
.tab_tit_list li.on a{
background-color: pink;
}
.tab_content_list li.active{
display: block;
}
.tab_list li.on p{
background-color: pink;
color: white;
display: block;
position: absolute;
left: 0;
width: 500px;
height: 160px;
}
$('.tab_tit_list li').click(function(){
$(this).addClass('on').siblings().removeClass('on');
var index = $(this).index()
$(this).parent().next().children().eq(index).addClass('active').siblings().removeClass('active');
});
- index 라는 변수에 tab_tit_list li 의 인덱스가 몇번째인지 저장해서
- tab_tit_list li 의 부모(tab_tit_list)의 다음 요소(tab_content_list)의 자식(tab_content_list li)에 active 라는 클래스를 주고 li 의 형제들(선택하지 않은 탭의 콘텐츠)에는 active 라는 클래스를 제거해준다.
'Core > Jquery' 카테고리의 다른 글
CSS Jquery 화면 가운데에 모달창 띄우기 (0) | 2022.09.26 |
---|---|
Jquery 이미지 슬라이드_상하좌우 슬라이딩 기본 (2) | 2022.09.23 |
Jquery 이미지 슬라이드_이미지 순서대로 서서히 나타나게 (0) | 2022.09.22 |
CSS, Jquery 세로 메뉴 만들기(서브 메뉴) (0) | 2022.09.22 |
CSS, Jquery 메인메뉴, 서브메뉴 만들기 (2) | 2022.09.21 |