💻 서울특별시청 클론코딩
window.open(url, windowName, [windowFeatures]);
window.open('팝업주소', '팝업창 이름', '팝업창 설정');
url(주소 매개변수)
새창(팝업창)에 보여질 주소.
선택적인 값으로 비워두면 빈 창이 보인다.
windowName (팝업이름 매개변수)
새로 열릴 팝업창의 이름을 지정한다.
동일한 이름의 팝업창이 열려 있을 경우 팝업창이 새로 열리지 않고 원래 열려있던 팝업창의 내용을 초기상태로 바꿈
windowFeatures (팝업 옵션)
선택적인 값으로 창의 크기, 스크롤, 리사이즈 가능 등의 속성을 지정한다.
📌 html
<div class="language-area">
<select id="selectLang" class="select-lang">
<option value="http://english.seoul.go.kr">ENGLISH</option>
<option value="http://japanese.seoul.go.kr">日本語</option>
<option value="http://chinese.seoul.go.kr">简体中文</option>
</select>
<a href="#" class="btn-go">GO</a>
</div>
📌 js
// selectLang btn
$('.language-area .btn-go').click(function(e){
e.preventDefault();
const link = $('#selectLang').val();
window.open(link);
});
📌 js
//slide1
const slide1 = $('.slide1 .visual-slider');
slide1.slick({
slide: 'div',
autoplay : true, //자동재생
infinite : true, //무한반복
prevArrow : $('.slide1 .btn-prev'), //이전 화살표 설정
nextArrow : $('.slide1 .btn-next'), //다음 화살표 설정
dots: true, //페이지네이션 여부
dotsClass: 'pagination', //페이지네이션 class명 지정
customPaging: function (slider, i) {
return (i + 1) + '/' + slider.slideCount; //dots 모양을 numbering 모양으로 변경
}
});
//slide2
slide2.slick({
slide: 'div',
autoplay : true,
infinite : true,
prevArrow : $('.slide2 .btn-prev'),
nextArrow : $('.slide2 .btn-next'),
dots: true,
dotsClass: 'pagination',
customPaging: function (slider, i) {
return (i + 1) + '/' + slider.slideCount;
}
});
slide2.slick('slickPause'); //두 번째 슬라이드는 정지상태로 두기
z-index
📌 html
<div class="slide-area slide1 active">
··· 이하생략
</div>
<div class="slide-area slide2">
··· 이하생략
</div>
📌 css
.sc-visual .slide-area {
position: absolute;
right: 0;
top: 0;
width: 690px;
height: 100%;
}
.sc-visual .slide-area.active {
z-index: 2;
/*z-index 숫자 값이 높을 수록 위에 쌓임*/
}
📌 js
const slide1 = $('.slide1 .visual-slider');
const slide2 = $('.slide2 .visual-slider');
$('.sc-visual .slide-title').click(function(){
$(this).parent().addClass('active').siblings().removeClass('active');
//클릭된 대상의 부모에게 active 클래스 부여하고 그 형제는 active 클래스 제거
//슬라이드 상태 확인하고 적용하기
if($(this).parent().hasClass('slide1')){
slide2.slick('slickPause');
//클릭된 대상이 slide1일 경우 slide2 슬라이드 정지
if($('.slide1 .btn-control').hasClass('pause')){
//slide1이 재생상태라면,
slide1.slick('slickPlay');
//slide1 슬라이드 재생
} else {
slide1.slick('slickPause');
//slide1이 정지상태라면 slide1 슬라이드 정지
}
} else {
slide1.slick('slickPause');
//클릭된 대상이 slide2일 경우 slide1 슬라이드 정지
if($('.slide2 .btn-control').hasClass('pause')){
slide2.slick('slickPlay');
} else {
slide2.slick('slickPause');
}
}
});
📌 html
<a href="#" class="btn btn-control pause">
<i class="ico-control">
<span class="blind">자동재생 또는 정지</span>
</i>
</a>
📌 js
//slide1
$('.slide1 .btn-control').click(function(e){
e.preventDefault();
//해시태그 기본값 막기
if($(this).hasClass('pause')){
$(this).removeClass('pause');
slide1.slick('slickPause');
//정지버튼을 누를 경우 슬라이드 정지!
} else {
$(this).addClass('pause');
slide1.slick('slickPlay');
//재생버튼을 누를 경우 슬라이드 재생!
}
});
//slide2
$('.slide2 .btn-control').click(function(e){
e.preventDefault();
if($(this).hasClass('pause')){
$(this).removeClass('pause');
slide2.slick('slickPause');
} else {
$(this).addClass('pause');
slide2.slick('slickPlay');
}
});
키보드 이벤트(Keyboard Event)는 사용자가 키를 누르거나 키를 놓을 때 발생한다. 키를 누를 때는 keydown 타입의 이벤트가 발생하고, 키를 놓을 때는 keyup 타입의 이벤트가 발생
키보드 이벤트 객체에는 눌리거나 놓아진 키에 대한 다양한 메타정보가 담겨 있다. 예를 들어 key 속성에는 키 값이, code 속성에는 코드 값이, shiftKey 속성에는 쉬프트키가 함께 눌렸는지 여부가 저장됨
$('.site-list-area .site-item:first-child a').keydown(function(e){
if(e.keyCode === 9 && e.shiftKey) {
//키보드 tab키와 shift키를 같이 누를 경우 (즉, 탭을 뒤로 이동할 경우)
$('.site-list-area').stop().slideUp();
//닫힘
}
});
$('.site-list-area .site-item:last-child a').keydown(function(e){
if(e.keyCode === 9 && !e.shiftKey) {
//키보드 shift키 없이 tab키만 누를 경우 (즉, 탭을 앞으로 이동할 경우)
$('.site-list-area').stop().slideUp();
//닫힘
}
});