<div class="select-wrap"> <span class="blind">์ธ์ด์ ํ</span> <select name="language" id="langList" class="lang-select"> <option value="https://english.seoul.go.kr/?SSid=101_01">ENGLISH</option> <option value="https://japanese.seoul.go.kr/?SSid=101_02">ๆฅๆฌ่ช</option> <option value="https://chinese.seoul.go.kr/?SSid=101_04">็ฎไฝไธญๆ</option> <option value="https://tchinese.seoul.go.kr/?SSid=101_03">็นไฝไธญๆ</option> <option value="https://world.seoul.go.kr/">WorldWide</option> </select> <button class="link-go" aria-label="์ ํ๋ ์ฌ์ดํธ๋ก ์ด๋" id="langBtn">GO</button> </div>
$('#langBtn').click(function(){ url=$('#langList').val(); window.open(url); })
option
์์์ value
์ถ๊ฐ (*option์ value๋ ํด๋น option์ด ์ ํ๋์์ ๋ ์๋ฒ๋ก ์ ์ถ๋๋ ๊ฐ)
value
์ ๊ฐ๊ฐ ์์ํ๋ ์น์ฌ์ดํธ ์ฃผ์ ์
๋ ฅํ๊ธฐ
button
์ ์์ด๋ #langBtn
์ ํด๋ฆญ ์ด๋ฒคํธ ์์ฑํ๊ธฐ
๋ณ์ url
์ ์์ฑ (select
์ ์์ด๋ #langList
์ value
๊ฐ ์ฆ ๊ฐ๊ฐ์ ์น์ฌ์ดํธ ์ฃผ์ ๊ฐ์ ๋ถ๋ฌ์ฌ์ ์์ต๋๋ค.)
์๋ก์ด ๋ธ๋ผ์ฐ์ ์ฐฝ์ ์ด ๋ ์ฌ์ฉํ๋ JavaScript ํจ์ window.open();
์ ๊ฐ๊ฐ์ ์น์ฌ์ดํธ ์ฃผ์ ๊ฐ ์ฆ ๋ณ์ url
์ ๋ฃ๋๋ค.
option
์ ์ ํํ๊ณbuttton
์ ํด๋ฆญํ์๋ ๊ฐ๊ฐ์ ์์ํ๋ ์ฌ์ดํธ (value
) ๋ก ์ด๋ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
button
์ WAI ARIA ์์ฑaria-label="์ ํ๋ ์ฌ์ดํธ๋ก ์ด๋"
์ ์ถ๊ฐํ์ฌ ์น ์ ๊ทผ์ฑ์ ํฅ์์ํฌ์ ์์ต๋๋ค.
tab ์์ญ
<div class="group-tab"> <button class="btn-news on" data-tab=".news-slide"> <i class="ic-news"><span class="blind">์ฃผ์๋ด์ค์์ด์ฝ</span></i> <span class="text">์ฃผ์๋ด์ค</span> </button> <button class="btn-citizen" data-tab=".citizen-slide"> <i class="ic-citizen"><span class="blind">์๋ฏผ์ฐธ์ฌ์์ด์ฝ</span></i> <span class="text">์๋ฏผ์ฐธ์ฌ</span> </button> </div>
swiper ์์ญ
<div class="swiper news-slide on"> ... </div> <div class="swiper citizen-slide"> ... </div>
$('.sc-visual .group-tab button').click(function(){ tabClass=$(this).data('tab') $(this).addClass('on').siblings().removeClass('on'); $('.sc-visual .swiper').removeClass('on'); $(tabClass).addClass('on'); })
๋ชจ๋ button
์ ํด๋ฆญ ์ด๋ฒคํธ ์์ฑํ๊ธฐ
๊ฐ button
์ ๋ฐ์ดํฐ ์์ฑ (data-tab=""
)์ ์ ์ํ๊ณ ๊ฐ๊ฐ ์์ํ๋ swiper์ ํด๋์ค ๋ช
์ ์
๋ ฅํ๊ธฐ
๋ณ์ tabClass
์์ฑ (ํด๋ฆญ๋ ๋ฒํผ์ data-tab
์์ฑ ๊ฐ์ ๊ฐ์ ธ์์ tabClass
๋ณ์์ ์ ์ฅ)
ํด๋ฆญ๋ ๋ฒํผ์ on
ํด๋์ค๋ฅผ ์ถ๊ฐํ๊ณ ๋์์ ํ์ ์์๋ค์ on
ํด๋์ค๋ฅผ ์ ๊ฑฐํ์ฌ ํญ ๋ฒํผ ๋ง๋ค๊ธฐ
ํด๋์ค ๋ด๋ถ์ ์๋ ๋ชจ๋ swiper
์ on
ํด๋์ค๋ฅผ ์ ๊ฑฐํ์ฌ ์ด๊ธฐํ ์ํค๊ธฐ
ํด๋ฆญ๋ ๋ฒํผ์ data-tab
์์ฑ์ ํด๋นํ๋ swiper์ on
ํด๋์ค๋ฅผ ์ถ๊ฐํ์ฌ ํด๋น swiper๋ฅผ ํญ ๋ฒํผ๊ณผ ์ฐ๋
<div class="control-area"> <button class="btn-prev"><span class="blind">์ด์ ์ฌ๋ผ์ด๋</span></button> <button class="btn-autoplay" data-slide="0"><span class="blind">์๋์ฌ์ ์ ์ง</span></button> <button class="btn-next"><span class="blind">๋ค์์ฌ๋ผ์ด๋</span></button> </div>
.flex1 .swiper .control-area .btn-autoplay{ background-position: -285px -285px; } .flex1 .swiper .control-area .btn-autoplay.on{ background-position: -269px -285px; }
swiper ์์ญ
const mainSlide1 = new Swiper(".news-slide", {...}); const mainSlide2 = new Swiper(".citizen-slide", {...}); const bannerSlide = new Swiper(".banner-slide", {...});
์๋์ฌ์ ๋ฒํผ ์์ญ
slideArr = [mainSlide1,mainSlide2,bannerSlide] $('.swiper .btn-autoplay').click(function(){ idx = $(this).data('slide'); if ($(this).hasClass('on')) { slideArr[idx].autoplay.start(); } else { slideArr[idx].autoplay.stop(); } $(this).toggleClass('on'); });
๋ฐฐ์ด slideArr
์์ฑ (mainSlide1
๋ 0, mainSlide2
๋ 1, bannerSlide
๋ 2์ ๊ฐ์ ๊ฐ๊ฐ ๊ฐ์ง๊ฒ ๋จ)
.btn-autoplay
๋ชจ๋์๊ฒ ๋ฐฐ์ด ๊ฐ๊ฐ์ ์์ํ๋ ๋ฐ์ดํฐ ์์ฑ (data-slide=""
) ๊ฐ (0,1,2) ์ถ๊ฐํ๊ธฐ
์๋์ฌ์ ๋ฒํผ .btn-autoplay
์ ํด๋ฆญ ์ด๋ฒคํธ ์ถ๊ฐํ๊ธฐ
๋ณ์ idx
์ ์ (ํด๋ฆญ๋ ๋ฒํผ์ data-slide
์์ฑ ๊ฐ (0,1,2)์ ์ถ์ถํ์ฌ ๋ณ์ idx
์ ์ ์ฅ)
์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด ํด๋ฆญ๋ ๋ฒํผ์ด on
ํด๋์ค๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ๊ณ , on
ํด๋์ค๊ฐ ์๋ค๋ฉด ํด๋น ๋ณ์ idx
์ ์๋ ์ฌ๋ผ์ด๋์ ์๋์ฌ์์ ์์ํ๊ฒ (autoplay.start();
) ๋ง๋ค๊ธฐ
on
ํด๋์ค๊ฐ ์์ ๋์๋ ํด๋น ๋ณ์ idx
์ ์๋ ์ฌ๋ผ์ด๋์ ์๋์ฌ์์ ๋ฉ์ถ๊ฒ(autoplay.stop();
) ๋ง๋ค๊ธฐ
ํด๋ฆญ๋ ๋ฒํผ์ on
ํด๋์ค๋ฅผ ํ ๊ธํ์ฌ (toggleClass
) ์ฌ์ ๋ฒํผ, ์ ์ง ๋ฒํผ์ด ๋ฐ๋์ ์๊ฒ ๋ง๋ค๊ธฐ
$('.sc-gov .direct-item:first-child').keydown(function(e){ key = e.key; if (key === 'Tab' && e.shiftKey) { slideClose(); } }) $('.sc-gov .direct-item:last-child').keydown(function(e){ key = e.key; if (key === 'Tab' && !e.shiftKey) { slideClose(); } })
ํด๋์ค 'direct-item'
์ ์ฒซ๋ฒ์งธ ์์(:first-child
)๊ณผ ๋ง์ง๋ง ์์(:last-child
)์ keydown
์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ๋ฑ๋กํ๊ธฐ (์ด๋ฒคํธ ํธ๋ค๋ฌ๋ ํค๋ณด๋ ํค๊ฐ ๋๋ ธ์ ๋ ์คํ)
๋ณ์ key
์์ฑ (์ด๋ฒคํธ ๊ฐ์ฒด์์ key
์ ๊ฐ์ ์ถ์ถํ์ฌ ๋ณ์ key
์ ์ ์ฅ)
ํค๋ณด๋ ์ด๋ฒคํธ์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์์ฑ์ผ๋ก ํค๋ณด๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ๋ ๋๋ฆฐ ์ค์ ํค์ ์ด๋ฆ์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค.
'direct-item'
์ ์ฒซ๋ฒ์งธ ์์(:first-child
)์ ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํด Tab
๊ณผ Shift
ํค๊ฐ ๊ฐ์ด ๋๋ ธ์๋ slideClose();
์ฌ๋ผ์ด๋๋ฅผ ๋ซ๋ ํจ์๋ฅผ ํธ์ถํ๊ธฐ
'direct-item'
์ ๋ง์ง๋ง ์์(:first-child
)์๋ Tab
๊ณผ Shift
ํค๊ฐ ๊ฐ์ด ๋๋ฆฌ์ง ์์์ ๋ slideClose();
์ฌ๋ผ์ด๋๋ฅผ ๋ซ๋ ํจ์๋ฅผ ํธ์ถํ์ฌ ์์ฑํ๊ธฐ