NAVER Careers

liimยท2023๋…„ 3์›” 27์ผ
0

๐Ÿ–ฅ NAVER Careers ํด๋ก ์ฝ”๋”ฉ / ๋ฐ˜์‘ํ˜• PC


๐Ÿ“ข Check Point

  1. ํ…์ŠคํŠธ ํšจ๊ณผ
  2. ์…€๋ ‰ํŠธ๋ฐ•์Šค ์ปค์Šคํ…€
  3. ๋ฐ˜์‘ํ˜•
  4. ์ฒดํฌ๋ฐ•์Šค


1. ํ…์ŠคํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜

๐Ÿ‘‰ ํ‚คํ”„๋ ˆ์ž„์œผ๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ฃผ๊ธฐ

.sc-visual .visual-slide .slogan{
    padding: 20px;
    overflow: hidden;
    font-size: 100px;
    font-weight: 800;
    line-height: 1.2;
    letter-spacing: -2.4px;
    white-space: nowrap;
    color: #fff;
    box-sizing: border-box;
    text-shadow: 6px 6px 18px rgb(0 0 0 / 16%);
    animation: fade-out 0.2s linear forwards;
}
.sc-visual .visual-slide .swiper-slide-active .slogan{
    opacity: 0;
    animation: wave-in 0.3s ease-out forwards, fade-in 0.8s linear forwards;
    animation-delay: 0.8s;
}

/* ํ‚คํ”„๋ ˆ์ž„ */
@keyframes fade-out {
    0% { opacity: 1; }
    100% { opacity: 0; }
}
@keyframes fade-in {
    0% { opacity: 0; }
    100% { opacity: 1; }
}
@keyframes wave-in {
    0% { width: 0%; }
    100% { width: 100%; }
}

0%, 100% ์‹œ์ ์— width๊ฐ’์œผ๋กœ ์™ผ์ชฝ์—์„œ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ํ…์ŠคํŠธ ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ–ˆ๋‹ค.
opacity์™€ ease-out,linear๋ฅผ ์ฃผ์–ด ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ์ž์—ฐ์Šค๋Ÿฝ๊ณ  ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์—ฌ์ง€๊ณ 
forwards๋กœ ์• ๋‹ˆ๋ฉ”์ด์…˜์ด ๋๋‚˜๊ณ  ์œ ์ง€๋˜๋„๋ก ํ•˜์˜€๋‹ค.

const visualSlide = new Swiper(".visual-slide", {
    loop: true,
    speed: 1500,
    centeredSlides: true,
    simulateTouch: false, //๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ ๋ง‰๊ธฐ
    autoplay: {
        delay: 6000,
    },
});

์ˆ˜๋™์œผ๋กœ ์Šฌ๋ผ์ด๋“œ ๋˜์ง€ ์•Š๋„๋ก simulateTouch: false๋กœ ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋ฅผ ๋ง‰์•„์ฃผ์—ˆ๋‹ค.
speed๊ฐ’์„ ์กฐ์ ˆํ•˜์—ฌ ๋‹ค์Œ ์Šฌ๋ผ์ด๋“œ๋กœ ๋„˜์–ด๊ฐˆ ๋•Œ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ๋ณด์—ฌ์ง€๋„๋ก ํ–ˆ๋‹ค.


2. form ์ปค์Šคํ…€

โ‡ฃ select - option ํ…์ŠคํŠธ ์ปฌ๋Ÿฌ ๋ณ€๊ฒฝ

<form method="get" class="group-search">
    <div class="input-area">
        <div class="keyword-ic">
            <i class="ic"></i>
        </div>
        <span class="title">ํ‚ค์›Œ๋“œ</span>
        <input type="text" placeholder="ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž">
    </div>
    <div class="select-area">
        <span class="title">๋ฒ•์ธ</span>
        <div class="select-box">
            <select name="corp" id="">
                <option value disabled selected>๋ฒ•์ธ์„ ํƒ</option>
                <option value="">NAVER</option>
                <option value="">NAVER Cloud</option>
            </select>
        </div>
    </div>
    <button type="submit" class="btn-search">๊ฒ€์ƒ‰</button>
</form>

๐Ÿ‘‰ select์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์—ฌ์ง€๋Š” ํ…์ŠคํŠธ ์„ ํƒ

<option value disabled selected>๋ฒ•์ธ์„ ํƒ</option>

'disabled selected' ๋ฌธ๊ตฌ๋ฅผ option๋ž€ ์•ˆ์— ์ž‘์„ฑํ•˜๋ฉด placeholder์ฒ˜๋Ÿผ ํ…์ŠคํŠธ๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์—ฌ์ง„๋‹ค.

select option[value=""][disabled]{ display: none; }

CSS๋กœ disabled์ธ select option์€ display: none; ์ฒ˜๋ฆฌํ•˜๋ฉด ์„ ํƒ ๋ฆฌ์ŠคํŠธ์— ๋ณด์—ฌ์ง€์ง€ ์•Š๋Š”๋‹ค.

๐Ÿ‘‰ placeholder๋Š” css์—์„œ ์ปค์Šคํ…€ ๊ฐ€๋Šฅ

.popup-search .search-area input::placeholder{
    font-weight: bold;
    color: #d0d0d0;
}

๐Ÿ‘‰ option์€ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ปค์Šคํ…€ ๊ฐ€๋Šฅ

$('select').change(function(){
	$(this).css('color','#000');
});

์•„๋ฌด๊ฒƒ๋„ ์„ ํƒํ•˜์ง€ ์•Š์€ ์ฒ˜์Œ ํ…์Šค๋Š” ํšŒ์ƒ‰์ด ๋งž์œผ๋‚˜ ์„ ํƒํ–ˆ์„ ๋•Œ๋Š” ๊ฒ€์ •์ƒ‰์ด์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ!
select๋Š” click ์ด๋ฒคํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ’์„ ์„ ํƒํ–ˆ์„ ๋•Œ ์ด๋ฒคํŠธ๋กœ change ๋ผ๋Š” ์ด๋ฒคํŠธ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.


3. ๋ฐ˜์‘ํ˜•

๐Ÿ‘‰ ๋ฏธ๋””์–ด ์ฟผ๋ฆฌ(Media Query)

๋‹ค์–‘ํ•œ ํ™”๋ฉด ํ•ด์ƒ๋„์— ๋”ฐ๋ผ HTML์— ์ ์šฉํ•˜๋Š” ์Šคํƒ€์ผ์„ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋Š” CSS3์˜ ์†์„ฑ์œผ๋กœ ์œ ์—ฐํ•˜๊ฒŒ ์ปจํ…์ธ ๋ฅผ ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ๋ณธ ๋ฌธ๋ฒ•

@media (screen) {
	content;
}

์ž‘์„ฑ ์œ„์น˜โ“
1. ๊ฐ css ํŒŒ์ผ ํ•˜๋‹จ
2. response.css ํŒŒ์ผ์„ ์ƒ์„ฑ
3. ์†Œ์Šค ๋ฐ”๋กœ ๋ฐ‘์— ์ž‘์„ฑ (scss)

์ž‘์„ฑ ๋ฐฉ๋ฒ•โ—๏ธ

//๋Œ€๋žต ๊ตฌํ˜„์ด ์•ˆ๋  ๊ฒƒ ๊ฐ™์€ ๋„“์ด์—์„œ ์ž‘์—…. ๋ณดํ†ต 1200 ์ด์ƒ
/* 1025 ~ 1200px๊นŒ์ง€ ๋ณด์ด๋Š” ํ™”๋ฉด. ์ตœ์†Œ์น˜์ธ 1025๋ฅผ ๋ณด๊ณ  ์ž‘์—… */
@media (max-width:1200px) {    }

//์•„๋ž˜ 2๊ฐ€์ง€ ์‚ฌ์ด์ฆˆ๋Š” ๋Œ€๋ถ€๋ถ„ ์ •ํ•ด์ ธ์žˆ๋‹ค.
/* 768 ~ 1024px๊นŒ์ง€ ๋ณด์ด๋Š” ํ™”๋ฉด. ์ตœ์†Œ์น˜์ธ 768์„ ๋ณด๊ณ  ์ž‘์—… */
@media (max-width:1024) {    }

/* 320 ~ 767px๊นŒ์ง€ ๋ณด์ด๋Š” ํ™”๋ฉด. ์ตœ์†Œ์น˜์ธ 320์„ ๋ณด๊ณ  ์ž‘์—… */
@media (max-width:767px) {    }

๊ผญ ์ด ์ˆ˜์น˜๋กœ ํ•ด์•ผํ•ด! ๋ผ๋Š” ์ •๋‹ต์€ ์—†๋‹ค. ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๋Š” ๋ถ„๊ธฐ์ ์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • ๋ชจ๋ฐ”์ผ 320px ~ 767 ๋˜๋Š” 768px
  • ํƒœ๋ธ”๋ฆฟ 768px ~ 1024px
  • ๋…ธํŠธ๋ถ 1025px ~ 1200 ๋˜๋Š” 1280px
  • ๋ฐ์Šคํฌํƒ‘ 1200, 1280px ...๋“ฑ๋“ฑ (1200 ์ด์ƒ)
@media (max-width:1200px) {
    .wrapper{ padding-top: 60px; }
    .sc-visual .visual-slide .slogan{ font-size: 80px; }
    ...(์ƒ๋žต)
}

@media (max-width:1024px) {
    .inner1 { padding: 0 22px; }
    .sc-visual .visual-slide .slogan{ font-size: 60px; }
    ...(์ƒ๋žต)
}

@media (max-width:767px) { 
    .inner1{ padding: 0 22px; }
    .swiper-backface-hidden .swiper-slide{ padding-bottom: 62.5%; }
    ...(์ƒ๋žต)
}

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” max-width ๋ชจ๋ฐ”์ผ 767px / ํƒœ๋ธ”๋ฆฟ 1024px / ๋…ธํŠธ๋ถ 1200px ๋กœ ์ž‘์—…ํ•˜์˜€๋‹ค.


4. ์ฒดํฌ๋ฐ•์Šค pop-up

๐Ÿ‘‰ ํŒ์—… ์ฐฝ ๋„์› ์„ ๋•Œ ๋ณธ๋ฌธ ์˜์—ญ์˜ ์Šคํฌ๋กค๋ฐ”๊ฐ€ ๋ณด์ด๋Š” ๋ถ€๋ถ„ ๊ฐœ์„ 

โ—๏ธ radio๋Š” ์—ฌ๋Ÿฌ ์„ ํƒ์ง€ ์ค‘ 1๊ฐœ๋งŒ ์„ ํƒ ๊ฐ€๋Šฅ, checkbox๋Š” ๋‹ค์ค‘ ์„ ํƒ ๊ฐ€๋Šฅ

<span class="headline">์ง๊ตฐ/์ง๋ฌด</span>
<div class="chk-inner">
    <span class="title main">Tech</span>
    <div class="chk-wrap">
        <!-- ์ „์ฒด์„ ํƒ -->
        <div class="chk-box">
            <input type="checkbox" id="all-1">
            <label for="all-1" class="all-chk">์ „์ฒด</label>
        </div>
        <!-- ์„œ๋ธŒ์นดํ…Œ๊ณ ๋ฆฌ -->
        <div class="sub-box">
            <span class="title sub">Software Development</span>
            <ul class="sub-list">
                <li class="sub-item">
                	<input type="checkbox" id="frontend">
                	<label for="frontend">Frontend</label>
                </li>
                <li class="sub-item">
                	<input type="checkbox" id="android">
                	<label for="android">Android</label>
                </li>
                (...์ƒ๋žต)
            </ul>
        </div>
        (...์ƒ๋žต)
    </div>
</div>

id๋กœ label๊ณผ input ์—ฐ๊ฒฐ = input id์™€ label for ๊ฐ’์„ ๊ฐ™๊ฒŒ (all-1)

<input type="checkbox" id="all-1">
<label for="all-1" class="all-chk">์ „์ฒด</label>

input์€ appearance: none; ์ด ํ•ด์ œ๋˜์–ด์•ผ ๋ˆˆ์œผ๋กœ ๋ณด์—ฌ์ง„๋‹ค.
ํ•ด๋‹น ๊ธฐ๋Šฅ์˜ ์ฒดํฌ๋ฐ•์Šค ์˜์—ญ์€ ๋””์ž์ธ ์ˆ˜์ •์ด ๋ถˆ๊ฐ€ํ•˜์—ฌ ์ˆจ๊น€ ์ฒ˜๋ฆฌ ํ›„ ๊พธ๋ฐˆ ์š”์†Œ์ธ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
โ—๏ธ ๋‹จ์ˆœ ์ˆจ๊น€ ์ฒ˜๋ฆฌ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ˆจ๊ฒจ์กŒ์ง€๋งŒ ํด๋ฆญ์ด ๋˜์–ด ๋ฐ์ดํ„ฐ ์ „์†ก์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ๋” ํ•ด์•ผํ•œ๋‹ค.

1) ์ˆจ๊น€ ์ฒ˜๋ฆฌ

.chk-area input{
  position: absolute;
  right: 0;
}

2-1) ๊พธ๋ฐˆ ์š”์†Œ์˜ ์ฒดํฌ๋ฐ•์Šค ์ƒ์„ฑ
input์˜ ์ธ์ ‘์š”์†Œ์˜ ๋ผ๋ฒจ์˜ before ๊ธฐ๋ณธ ์Šคํƒ€์ผ๋ง

.chk-area label::before{
    content: '';
    display: inline-block;
    width: 8px; height: 8px;
    border: 1px solid #d0d0d0;
    border-radius: 50%;
    margin-right: 10px;
}

2-2) ์„ ํƒ ์‹œ ์Šคํƒ€์ผ๋ง (์ฒดํฌ ๋˜์—ˆ์„ ๋•Œ)

.chk-area input:checked+label::before{
    background: #000;
    border: 1px solid #fff;
}

1) ์ „์ฒด์„ ํƒ
click ์ด๋ฒคํŠธ๋กœ
1. ๋ชจ๋“  input์ด ์ฒดํฌ ๋˜์–ด์žˆ์œผ๋ฉด ํ•ด์ œ์‹œํ‚ค๊ณ 
2. ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ๋ชจ๋“  input์„ ์ฒดํฌ ํ™œ์„ฑํ™”์‹œํ‚จ๋‹ค.

$('.all-chk').click(function(){
  if($(this).siblings('input').prop('checked')){
  	$(this).parent().siblings('.sub-box').find('input').prop('checked',false)
  }else{
  	$(this).parent().siblings('.sub-box').find('input').prop('checked',true)
  }
});

2) ์„ ํƒ ์ดˆ๊ธฐํ™”
์ดˆ๊ธฐํ™” ๋ฒ„ํŠผ์„ ๋งŒ๋“ค๊ณ  click ์ด๋ฒคํŠธ๋กœ ๋ชจ๋“  input์˜ ์ฒดํฌ๋ฅผ ํ•ด์ œ์‹œํ‚จ๋‹ค.

<button type="button" class="clear">Clear filters</button>
$('.clear').click(function(){
	$('.popup-search input').prop('checked',false)
});
profile
Web Publisher

0๊ฐœ์˜ ๋Œ“๊ธ€