http://sir.co.kr/bbs/board.php?bo_table=pg_qa&wr_id=4094
이 글을 보고 질문과 다른 내용을 간단히 만들어 봤습니다.
탭 메뉴를 클릭하면 해당 컨텐츠를 보여주며,
하나의 HTML이지만 각 메뉴마다 다른 URL(앵커 활용)을 제공합니다.
index.html
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>Tab Menu</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script src="application.js" type="text/javascript"></script>
</head>
<body>
<div id="container">
<ul id="tabs-menu">
<li id="tab-1"><a href="#content-1">A</a></li>
<li id="tab-2"><a href="#content-2">B</a></li>
<li id="tab-3"><a href="#content-3">C</a></li>
<li id="tab-4"><a href="#content-4">D</a></li>
</ul>
<div id="content-1" class="tabs-content">
A에 들어갈 내용
</div>
<div id="content-2" class="tabs-content">
B에 들어갈 내용
</div>
<div id="content-3" class="tabs-content">
C에 들어갈 내용
</div>
<div id="content-4" class="tabs-content">
D에 들어갈 내용
</div>
</div>
</body>
</html>
stylesheet.css
body {
font-size: 12px;
background: #FFF;
color: #333;
margin: 0;
}
#container {
margin: 10px auto;
width: 600px;
padding: 10px;
background: #F88;
}
#tabs-menu {
margin: 0;
padding: 0;
list-style-type: none;
width: 441px;
height: 30px;
background: url(./images/pink/bar_pink.gif) 0 0 no-repeat;
}
#tabs-menu li {
float: left;
margin-left: 2px;
}
#tabs-menu li#tab-1 {
margin-left: 144px;
}
#tabs-menu li a {
display: block;
overflow: hidden;
width: 71px;
height: 0;
padding-top: 30px;
background-position: 0 100%;
background-repeat: no-repeat;
}
#tabs-menu li#tab-1 a {
background-image: url(./images/pink/pink_off_01.gif);
}
#tabs-menu li#tab-1 a:hover,
#tabs-menu li#tab-1 a.selected {
background-image: url(./images/pink/pink_on_01.gif);
}
#tabs-menu li#tab-2 a {
background-image: url(./images/pink/pink_off_02.gif);
}
#tabs-menu li#tab-2 a:hover,
#tabs-menu li#tab-2 a.selected {
background-image: url(./images/pink/pink_on_02.gif);
}
#tabs-menu li#tab-3 a {
background-image: url(./images/pink/pink_off_03.gif);
}
#tabs-menu li#tab-3 a:hover,
#tabs-menu li#tab-3 a.selected {
background-image: url(./images/pink/pink_on_03.gif);
}
#tabs-menu li#tab-4 a {
background-image: url(./images/pink/pink_off_04.gif);
}
#tabs-menu li#tab-4 a:hover,
#tabs-menu li#tab-4 a.selected {
background-image: url(./images/pink/pink_on_04.gif);
}
.tabs-content {
padding: 20px 0;
}
application.js
$(function() {
var menu_items = $('#tabs-menu li');
$('.tabs-content').hide();
if (location.hash) {
$('a[href=' + location.hash + ']').addClass('selected');
$(location.hash).show();
} else {
menu_items.find('a').first().addClass('selected');
$('.tabs-content:first').show();
}
menu_items.each(function(index, item) {
$(item).find('a').click(function() {
var target = $(this).attr('href');
menu_items.find('a').removeClass('selected');
$(this).addClass('selected');
$('.tabs-content').hide();
$(target).show();
});
});
});
이 글을 보고 질문과 다른 내용을 간단히 만들어 봤습니다.
탭 메뉴를 클릭하면 해당 컨텐츠를 보여주며,
하나의 HTML이지만 각 메뉴마다 다른 URL(앵커 활용)을 제공합니다.
index.html
<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<title>Tab Menu</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script src="application.js" type="text/javascript"></script>
</head>
<body>
<div id="container">
<ul id="tabs-menu">
<li id="tab-1"><a href="#content-1">A</a></li>
<li id="tab-2"><a href="#content-2">B</a></li>
<li id="tab-3"><a href="#content-3">C</a></li>
<li id="tab-4"><a href="#content-4">D</a></li>
</ul>
<div id="content-1" class="tabs-content">
A에 들어갈 내용
</div>
<div id="content-2" class="tabs-content">
B에 들어갈 내용
</div>
<div id="content-3" class="tabs-content">
C에 들어갈 내용
</div>
<div id="content-4" class="tabs-content">
D에 들어갈 내용
</div>
</div>
</body>
</html>
stylesheet.css
body {
font-size: 12px;
background: #FFF;
color: #333;
margin: 0;
}
#container {
margin: 10px auto;
width: 600px;
padding: 10px;
background: #F88;
}
#tabs-menu {
margin: 0;
padding: 0;
list-style-type: none;
width: 441px;
height: 30px;
background: url(./images/pink/bar_pink.gif) 0 0 no-repeat;
}
#tabs-menu li {
float: left;
margin-left: 2px;
}
#tabs-menu li#tab-1 {
margin-left: 144px;
}
#tabs-menu li a {
display: block;
overflow: hidden;
width: 71px;
height: 0;
padding-top: 30px;
background-position: 0 100%;
background-repeat: no-repeat;
}
#tabs-menu li#tab-1 a {
background-image: url(./images/pink/pink_off_01.gif);
}
#tabs-menu li#tab-1 a:hover,
#tabs-menu li#tab-1 a.selected {
background-image: url(./images/pink/pink_on_01.gif);
}
#tabs-menu li#tab-2 a {
background-image: url(./images/pink/pink_off_02.gif);
}
#tabs-menu li#tab-2 a:hover,
#tabs-menu li#tab-2 a.selected {
background-image: url(./images/pink/pink_on_02.gif);
}
#tabs-menu li#tab-3 a {
background-image: url(./images/pink/pink_off_03.gif);
}
#tabs-menu li#tab-3 a:hover,
#tabs-menu li#tab-3 a.selected {
background-image: url(./images/pink/pink_on_03.gif);
}
#tabs-menu li#tab-4 a {
background-image: url(./images/pink/pink_off_04.gif);
}
#tabs-menu li#tab-4 a:hover,
#tabs-menu li#tab-4 a.selected {
background-image: url(./images/pink/pink_on_04.gif);
}
.tabs-content {
padding: 20px 0;
}
application.js
$(function() {
var menu_items = $('#tabs-menu li');
$('.tabs-content').hide();
if (location.hash) {
$('a[href=' + location.hash + ']').addClass('selected');
$(location.hash).show();
} else {
menu_items.find('a').first().addClass('selected');
$('.tabs-content:first').show();
}
menu_items.each(function(index, item) {
$(item).find('a').click(function() {
var target = $(this).attr('href');
menu_items.find('a').removeClass('selected');
$(this).addClass('selected');
$('.tabs-content').hide();
$(target).show();
});
});
});
댓글 8개
jQuery UI에 있는 tabs랑 약간 목적이 다른데, 이 코드는 anchor를 주소창에 적용하기 때문입니다.
예를 들어, index.html#content-3 등으로 바로 접근해 보세요.
약간 응용하면 처음부터 모든 컨텐츠를 노출하지 않고, 접근할 때마다 Ajax로 가져올 수도 있죠.
예를 들어, 탭은 아니지만 이전에 이와 유사한 방식으로 구현한 사이트입니다. https://blayer.co.kr/
개인적으론 jQuery UI에 있는 걸 그대로 쓰는 것보다는 그 코드를 읽고 자기만의 코드를 작성하는 편이 크게 도움이 된다고 생각합니다.
예를 들어, index.html#content-3 등으로 바로 접근해 보세요.
약간 응용하면 처음부터 모든 컨텐츠를 노출하지 않고, 접근할 때마다 Ajax로 가져올 수도 있죠.
예를 들어, 탭은 아니지만 이전에 이와 유사한 방식으로 구현한 사이트입니다. https://blayer.co.kr/
개인적으론 jQuery UI에 있는 걸 그대로 쓰는 것보다는 그 코드를 읽고 자기만의 코드를 작성하는 편이 크게 도움이 된다고 생각합니다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 12281 |
JavaScript
팝업창을 브라우저 해상도 구분없이 항상 중앙에 띄우기 입니다.
1
|
| 20386 | |
| 12280 |
jQuery
간단한 셀렉트 드롭다운 제이쿼리
|
| 12279 |
JavaScript
우클릭해제 소스 보기 자바스크립트 입니다.
|
| 12278 |
JavaScript
미리보기 소스 입니다.
|
| 12277 |
JavaScript
움직임이 자연스러운 자바시계 입니다.
|
| 12276 |
JavaScript
특정사람에게 메일 보내기 입니다.
|
| 12275 |
JavaScript
DirectX의 와이프 기능을 사용한 이미지 스와핑 효과 내기 입니다.
|
| 12274 |
JavaScript
iframe 써서 노 프레임 효과 내기 입니다.
|
| 12273 |
jQuery
이미지 없이 구현하는 간단한 별점 기능 제이쿼리
|
| 12272 | |
| 12260 |
node.js
Node.js - 실시간 위치 추적 (1)
11
|
| 360 | |
| 12258 | |
| 12257 | |
| 12256 | |
| 12255 | |
| 12253 | |
| 12252 | |
| 12251 | |
| 12250 | |
| 12249 | |
| 12248 | |
| 12247 | |
| 12246 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기