javascript 탭 메뉴

2022. 9. 14. 13:15JavaScript

2가지 스타일의 마크업

1.

<div class="탭1">

<h1></h1> //position으로 tab menu 위치 잡아주기
// 내용

</div>

<div class="탭2">
<h1></h1> //position으로 tab menu 위치 잡아주기
// 내용

</div>

<div class="탭3">
<h1></h1> //position으로 tab menu 위치 잡아주기
// 내용

</div>

2.

<div>

h3*3>a    // tab 메뉴 부분

</div>

<div>

// 탭 메뉴별 내용

</div>
<div>

// 탭 메뉴별 내용

</div>
<div>

// 탭 메뉴별 내용

</div>

script 예시

<body>
<div class="tabs">     
    <h3><a href="#" class="tab tab1">대관절차</a></h3>     
    <div class="contlist">         
		<dl class="comment">
			<dt>STEP 01 신청</dt>
			<dd>신세계 문화홀은 수시 대관을 원칙으로 하고 있습니다. 유선 협의 후 대관 신청서와 공연 계획서를 이메일로 제출하여 주시기바랍니다.</dd>
			<dt>STEP 02 심사</dt>
			<dd>문화홀 대관 기준에 의거하여 대관의 가부를 결정하게 됩니다.</dd>
			<dt>STEP 03 승인자 통보</dt>
			<dd>심사 후, 대관 승인이 결정되면 개별통보 해드립니다. </dd>
			<dt>STEP 04 계약</dt>
			<dd>약정된 일정 안에 계약을 체결하셔야 하며, 계약 체결이 되지 않을 경우 자동으로 취소됩니다.</dd>
		</dl>
   </div>

   <h3><a href="#" class="tab tab2">대관규정</a></h3>
   <div class="contlist">
     <div class="borrowWrite">
			<strong>신세계백화점 문화홀 대관 규정</strong><br /><br />
			제 1장 총칙<br />
			제 1조 (목적)<br />
			이 규정은 ㈜ 신세계백화점 부문 문화홀(이하 “문화홀” 이라 한다) 의 대관에 관하여 필요한 사항을 규정함을 목적으로 한다. <br /><br />

			제 2조 (대관의 정의) <br />
			① 대관이라 함은 대관자가 공연, 발표회, 행사, 녹화 등을 위하여 시설, 설비 및 부수장비를 소정의 절차를 거쳐 임차한 후, 사용하는 것을 말한다.<br />
			② 대관자는 이 규정을 인정하고 당사의 대관승인을 받아 문화홀과 계약을 체결한 사람 및 단체를 말한다.<br />
			③ 당사는 대관시설, 설비의 관리 유지, 입장통제, 안전관리에 대한 모든 권한을 갖는다. <br /><br />

			제 3조(대관의 종류) <br />
			① 대관은 수시 대관을 기본으로 하며, 관람료 징수에 따라 유료 공연 대관과 무료 공연 대관으로 나뉘며, 목적에 따라 공연 대관, 학교 발표회 대관, 문화예술 단체 및 행사 대관, 기타 대관으로 구분한다. 
			② 수시대관은 별도의 신청기간이나 공지를 원칙으로 하지 않고 문화홀의 임의로 신청, 승인 확정한다. <br /><br />
		</div>
   </div>

   <h3><a href="#" class="tab tab3">신청양식</a></h3>
   <div class="contlist">
        <div class="comment">
			<p>해당 양식을 다운로드 후, 각 점포 담당자 이메일로 보내주시기 바랍니다.</p>
			<ul>
				<li>대관신청서</li>
				<li>공연계획서</li>
				<li>Email
					<ul>
						<li>본점  taehee@shinsegae.com</li>
						<li>죽전점  hwa1216@shinsegae.com</li>
						<li>센텀시티점  hwa1216@shinsegae.com</li>
					</ul>
				</li>
			</ul>
		</div>
		<div class="borrowBtn"><a href="#">신청양식 다운로드</a></div>
   </div>
 </div> 
</body>
var cnt=$('.tabs h3').size();  //탭메뉴 개수 *** , size() 확장성
$('.tabs .contlist:eq(0)').show(); // 첫번째 탭 내용만 열어라
$('.tabs .tab1').css('background','green').css('color','#333'); //첫번째 탭메뉴 활성화
           //자바스크립트의 상대 경로의 기준은 => 스크립트 파일을 불러들인 html파일이 저장된 경로 기준***

$('.tabs .tab').each(function (index) {  // index=0 1 2
  $(this).click(function(e){  //각각의 탭메뉴를 클릭하면... 
      e.preventDefault();   // <a> href="#" 값을 강제로 막는다 

      $(".tabs .contlist").hide(); //모든 탭내용을 안보이게...
      //$(".tabs .contlist:eq("+index+")").show(); //클릭한 해당 탭내용만 보여라
      $(".tabs .contlist:eq("+index+")").fadeIn('slow');
      $('.tab').css('background','red').css('color','#fff'); //모든 탭메뉴를 비활성화
      $(this).css('background','green').css('color','#333'); // 클릭한 해당 탭메뉴만 활성화

 });
});
*{margin:0; padding:0}
img{border:0; vertical-align:top}
ul,ol{list-style:none}
body{font-family:"돋움"; font-size:14px; color:#333333}
a{color: #333; text-decoration: none;}

.tabs {position:relative;border:1px solid #ccc; width:600px;} 
.tabs a.tab {display:block; width:84px; position:absolute; text-align: center;
          font-size: 16px; background: red; color: #fff; font-weight: bold;padding: 10px 0; transition: all .5s;} 
.tabs a.tab1{left:0; top:0}
.tabs a.tab2{left:84px; top:0}
.tabs a.tab3{left:168px; top:0}

.tabs .contlist {margin-top:50px; display: none;
    padding:15px;line-height:1.5em; background:#CCF}

탭메뉴를 지도에 적용했을 때 오류

  • display:none; 처리된 코드에 지도 API 를 호출할 경우 오류
  • 처음 로드시 전부 보이게 한 후 scroll 이벤트나 overflow, height 값으로 가려준다

 

 

'JavaScript' 카테고리의 다른 글

jQuery stop() 메서드 빠른클릭시 문제  (0) 2022.09.16
Javascript/jQuery Popup Event  (0) 2022.09.15
Vanila JS Tab menu ex  (0) 2022.09.02
Vanila JS class add/remove  (0) 2022.09.02
Javascript event  (0) 2022.08.31