[๐Ÿ’ป] ์‹ค์Šต - naver career (๋ฐ˜์‘ํ˜•)

J-silverยท2022๋…„ 9์›” 24์ผ

web-project

๋ชฉ๋ก ๋ณด๊ธฐ
11/18

๐Ÿ“– Overview

์‚ฌ์ดํŠธ๋ช…: naver career
์ž‘์—… ๊ธฐ๊ฐ„: 3.5์ผ ์†Œ์š”
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ: swiper, jQuery
์œ ํ˜•: ๋ฐ˜์‘ํ˜•, ํด๋ก  ์ฝ”๋”ฉ
์ฐธ์—ฌ๋„: 100%

๐Ÿ‘€ Check-point

  • ๋ฏธ๋””์–ด์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋๋Š”๊ฐ€
  • ์„œ๋ธŒ๋ฉ”๋‰ด ํŽผ์ณค์„์‹œ ์„œ๋ธŒ๋ฉ”๋‰ด๋งŒ ์Šคํฌ๋กค์ด ๊ฐ€๋Šฅํ•œ๊ฐ€

๐Ÿ“Œ ๋ฐ˜์‘ํ˜• ๋ฏธ๋””์–ด์ฟผ๋ฆฌ

๋ชจ๋“  ๋ฐ˜์‘ํ˜•์†Œ์Šค ์ „์—๋Š” ๋ชจ๋“ ๊ฒŒ ์™„์„ฑ๋˜์–ด์žˆ๋Š”์ƒํƒœ(๋ชจ๋“  css์™„์„ฑ)์—์„œ ๋ฐ˜์‘ํ˜•์„ ์ž‘์—…ํ•ด์•ผ ํ•œ๋‹ค.

๐Ÿ‘1. ๋ชจ๋“  css ํŒŒ์ผ์— ๋“ค์–ด๊ฐ€์„œ ํ•˜๋‹จ๋ถ€๋ถ„์— ๋ฏธ๋””์–ด์ฟผ๋ฆฌ๋ฅผ ์ง‘์–ด๋„ฃ๋Š”๋‹ค.!

  1. response.css ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ๋ชฝ๋•… ๋„ฃ๋Š”๋‹ค.
    (์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ข€ ๋นก์…ˆ)
  2. pc,tablet,mobile๋ถ„๊ธฐ์ ๋ณ„๋กœ cssํŒŒ์ผ์„ ๋งŒ๋“ค์–ด๋†“์Œ
    (์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์ข€ ๋นก์…ˆ)

โœ ๋ถ„๊ธฐ์  ๋‚˜๋ˆ„๋Š” ๋ฒ•

  • ์ฒซ ๋ถ„๊ธฐ์ ์€ ์‚ฌ๋žŒ๋งˆ๋‹ค ์‚ฌ์ดํŠธ๋งˆ๋‹ค ์‹œ์•ˆ๋งˆ๋‹ค ๋‹ค ๋‹ค๋ฆ„
  • ์‚ฌ์ดํŠธ ๊ธฐ์ค€์œ„๋“œ๊ฐ€ ์งง์„์ˆ˜๋„ ๊ธธ์ˆ˜๋„์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋‹ค ๋‹ค๋ฆ„

-> ๊ตฌํ˜„๋ถˆ๊ฐ€๋Šฅ์‹œ์ , ๊ณต์กด์ด ์•ˆ๋˜๋Š”์‹œ์ , ์‹œ์•ˆ์œผ๋กœ ์ œ๊ณต์•ˆ๋ ํ™•๋ฅ ์ด 100%


๐Ÿ’ก ํ…Œ๋ธ”๋ฆฟ๊ณผ ๋ชจ๋ฐ”์ผ์€ ํ•ญ์ƒ ๊ณ ์ •์ด๊ณ  ๊ทธ ์™ธ์˜ ์‚ฌ์ด์ฆˆ๋“ค์€ ์‚ฌ์ดํŠธ๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ๋•œ์— ํ™•์ธํ•˜๊ณ  ํ• ๊ฒƒ

  • ํ…Œ๋ธ”๋ฆฟ (1023px)
  • ๋ชจ๋ฐ”์ผ๋˜‘๊ฐ™์Œ (767px)

โญํ•ญ์ƒ ์ตœ์†Œ๋ฅผ ์žก์•„์•ผํ•œ๋‹ค! ๊ทธ๋ž˜์•ผ ์•ˆ๊นจ์ง„๋‹ค.โญ


โœ ๊ฐœ๋ฐœ์ž๋ชจ๋“œ์—์„œ ๋ชจ๋ฐ”์ผ๋ชจ๋“œ๋กœ ๋ณด๋ฉด์„œ ํ™•์ธํ•˜์ž!

์ด ์‚ฌ์ดํŠธ์˜ ๋ถ„๊ธฐ์ ์€ max-width: 1100px์œผ๋กœ

@media screen and (max-width: 1200px) {
    /* *1024์„ ๊ธฐ์ค€์œผ๋กœ ํ™”๋ฉด์„ ๋ณด๊ณ  ์žก์•„์•ผํ•จ */ 
		/*  -> ์ด๊ฒƒ๋ณด๋‹ค ๋” ์ค„์–ด๋“ค์—ˆ์„๋•Œ์˜ ๊ณผ์ •์„ ๋ด์•ผํ•˜๊ธฐ๋•Œ๋ฌธ์—*/ 
}
@media screen and (max-width: 1023~4px) {
    /* *768์„๋ณด๊ณ  ์žก์•„์•ผํ•จ */ ->ํƒœ๋ธ”๋ฆฟ ์„ธ๋กœ์‚ฌ์ด์ฆˆ
}
@media screen and (max-width: 767px) {
    /* *320์„ ๋ณด๊ณ  ์žก์•„์•ผํ•จ */
}

โ—ผ ๊ณผ์ •์ค‘์— ๋ถ„๊ธฐ์ ์ถ”๊ฐ€๊ฐ€ ๋ถˆ๊ฐ€ํ”ผํ•˜๋‹ค๋ฉด ์ถ”๊ฐ€ ๊ฐ€๋Šฅ.

common,layout,main ๋งจ ๋งˆ์ง€๋ง‰ ๋ถ€๋ถ„์— ๋‹ค ๋“ค์–ด๊ฐ€์•ผํ•จ

๋‚ด๊ฐ€ ๊ณ ์ณ์•ผํ•˜๋Š”๊ฒƒ๋งŒ ์ˆ˜์น˜๋ฅผ ๊ณ ์ณ์ฃผ๋ฉด๋จ

ํ™”๋ฉด์ด ์ค„์–ด๋“ค์—ˆ์„๋•Œ ์˜์—ญ๋“ค์€ ๋ฏธ๋ฆฌ ์˜์—ญ์„ ๋งŒ๋“ค์–ด๋’€์–ด์•ผํ•œ๋‹ค.

๋ฏธ๋ฆฌ display : none;ํ•ด๋†“๊ณ  block์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ


โœ ๋ฐ˜์‘ํ˜• width

.inner{
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 104px 0 98px;
}
  • ๋ฐ˜์‘ํ˜•์„ ํ• ๋•Œ๋Š” width๊ฐ€ ๊ทธ๋ƒฅ๋“ค์–ด๊ฐ€์„  ์•ˆ๋œ๋‹ค.
  • max-width๋กœ ์ค˜์•ผํ•˜๋ฉฐ max-width๊ฐ€ ๋“ค์–ด๊ฐ”์„๋•Œ๋Š” 0๊นŒ์ง€๋„ ์ค„์–ด๋“ค์ˆ˜์žˆ๋‹ค๊ณ  ๊ฐ’์„ ์ค€๊ฒƒ

โœ header inner

  • ํ—ค๋” inner์— box-sizing: border-box; ์ค˜์•ผํ•œ๋‹ค.
    โ†’ ํ—ค๋”์— ํŒจ๋”ฉ์ด ๋“ค์–ด๊ฐ”๊ธฐ๋•Œ๋ฌธ

๐Ÿ’ก flex : 1 ํ—ท๊ฐˆ๋ฆฌ๋Š”์ ??

โœ flex ์ผ์„๋•Œ ์ขŒ์šฐ ์กฐ์ ˆ1

  • flex ์ž์‹์ด ๋‘๋ช… ์žˆ์„๋•Œ๋Š” ๊ฐ์ž 1๋Œ€1 ๋กœ ๋น„์œจ ๋จน๊ฒ ๋‹ค๋Š” ๋œป
    -> ๊ฐ์ž ๋˜‘๊ฐ™์€ ๋น„์œจ๋กœ ๋จน์Œ
  • ์ง€๊ธˆ์€ logo์™€ gnb-area ๋‘˜์ด ์‹ธ์šฐ๋Š”๋ฐ
    logo๋Š” ์ •ํ™•ํ•œ width๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ๋กœ๊ณ ๋นผ๊ณ  ๋‚˜๋จธ์ง€๋Š”
    gnb๊ฐ€ ๋ชจ๋‘ ๋จน๋Š”๋‹ค = grow : 1, ๋๊นŒ์ง€ ์ž๋ผ๋‚œ๋‹ค
  • ๋ฉ”๋‰ด์ฒ˜๋ฆฌํ• ๋•Œ ๋ฐ‘์—๊นŒ์ง€ ์•ˆ๋จน์Œ์œผ๋กœ height : 100%

โœ flex ์ผ์„๋•Œ ์ขŒ์šฐ ์กฐ์ ˆ2

  • ๊ฐœ์ธ์ •๋ณด ์ฒ˜๋ฆฌ๋ฐฉ์นจ์— margin-right: auto; ๋ฅผ ์ค€๋‹ค.

  • ๊ทธ๋Ÿผ ์˜ค๋ฅธ์ชฝ์„ ์ญ‰ ๋ฐ€์–ด๋‚ธ๋‹ค.

margin:0 auto ๊ฐ€ ๊ฐ€์šด๋ฐ๋กœ ๋ณด๋‚ด์ฃผ๋Š”๊ฑด ์•Œ๊ฒƒ์ด๋‹ค.
๊ทธ ์ด์œ ๋Š” ์ขŒ์šฐ๋ฅผ ์ž๋™์œผ๋กœ ์ซ™ ๋ฐ€๋‹ค๋ณด๋‹ˆ ๊ฐ€์šด๋ฐ๋กœ ์™€์ง„๊ฒƒ.

๊ฐ™์€ ์›๋ฆฌ๋กœ margin-right: auto ๋ฅผ ์ค€๋‹ค๋ฉด ์ž๋™์œผ๋กœ ์˜ค๋ฅธ์ชฝ๋งŒ ์ญ‰ ๋Š˜์–ด๋‚˜๊ฒŒ๋œ๋‹ค


๐Ÿ“Œ animation ๋กค๋ง

  • ์–ด๋””์— ๋†”๋„ ์ƒ๊ด€์—†๋Š”์• ๋‹ˆ๊นŒ div๊ฐ€ ์•„๋‹Œ article๋กœ ํ‘œ์‹œํ•œ๋‹ค
  • career ์ด๋ฏธ์ง€ ๋ถ€๋ถ„์€ before๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋” ์ข‹๋‹ค
  • ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ ๋šํ•˜๊ณ  ์œ„๋กœ ์˜ฌ๋ผ๊ฐ€ ๋ณด์ด๋Š”๊ฑด ํƒœ๊ทธ ์ž์ฒด๊ฐ€ ์‚ฌ๋ผ์กŒ๊ธฐ ๋•Œ๋ฌธ (block์ด๋ž€ ๋œป)
  • body์— padding-top: 64px; ๋ฅผ ์ค€๋‹ค.
    -> 64์ธ ์ด์œ ๋Š” header ๊ฐ’์ž„ header๋Š” ํ•ญ์ƒ ๋– ์žˆ์œผ๋‹ˆ๊นŒ!
    ํ—ค๋”์˜ ๋†’์ด๋งŒํผ์€ ๋ณด์žฅํ•ด์ค˜์•ผํ•จ
animation: rolling 20s linear infinite;
@keyframes rolling {
    0% { transform: translateX(50%);}
    100% {transform: translateX(-100%);}
}

๐Ÿ’ฌ ์™œ ๋กค๋ง์„ 0์—์„œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๊ฐ€?

  • 50%์—์„œ ์‹œ์ž‘์‹œํ‚ค๋‹ˆ๊นŒ ๋กค๋ง ์‹œ์ž‘ํ•˜๋ฉด ๋ฐ”๋กœ๋‚˜์˜ฌ์ˆ˜์žˆ๋Š”๊ฒƒ
    ex) 50% โ†’-100% โ†’ 50% โ†’โ€ฆโ€ฆ
  • infinite๋กœ ๋ฌดํ•œ ๋ฐ˜๋ณต
  • text-align: right;๋กœ ๋งจ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ๋ณด๋‚ด 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋А๋‚Œ์ฃผ๊ธฐ

๐Ÿ“Œ ๊ฒ€์ƒ‰ ์˜์—ญ

โœ ๊ธ€์ž ๋ฌถ๊ธฐ (label )

<div class="search-list">
     <label for="keyword" class="ic-title">ํ‚ค์›Œ๋“œ</label>
     <input type="text" name="" id="keyword" placeholder="ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž">
</div>
  • label ๊ณผ input์€ ์—ฐ๊ฒฐ์ด ๋˜์–ด์•ผํ•จ
    โ†’id๊ฐ’๊ณผ for๊ฐ’์„ ๊ฐ™๊ฒŒ ํ•ด์ค€๋‹ค.

โ†’ ๊ทธ๋ž˜์•ผ ๊ธ€์ž ํด๋ฆญ์‹œ ๋ฒ„ํŠผ๋„ ๊ฐ™์ด ์ฒดํฌ๊ฐ€ ๋œ๋‹ค


โœ formํƒœ๊ทธ

<form action="" method="get">
        <fieldset>
            <legend class="blind">์ธ์žฌ๊ฒ€์ƒ‰</legend>
            <div class="search-wrap">
                <div class="search-list">
                    <label for="keyword" class="ic-title">ํ‚ค์›Œ๋“œ</label>
                    <input type="text" name="" id="keyword" placeholder="ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž">
                </div>
                <div class="search-list">
                    <label for="job" class="ic-title">์ง๊ตฐ</label>
                    <select id="job">
                        <option value="preview" selected>์ง๊ตฐ์„ ํƒ</option>
                        <option value="Tech">Tech</option>
                    </select>
                </div>
            </div>
        </fieldset>
 </form>
  • formํƒœ๊ทธ๋Š” fieldset์œผ๋กœ ๋ฌถ์–ด์ฃผ๊ณ  legend๋กœ ์ œ๋ชฉ์„ ์จ์ค˜์•ผํ•œ๋‹ค.

โœ input ์ž๋™์™„์„ฑ

input ํ…์ŠคํŠธ ํด๋ฆญ์‹œ ์ž๋™์™„์„ฑ ๋„๊ธฐ

autocomplete="off"

  • input์†์„ฑ์— ๋„ฃ๊ฑฐ๋‚˜
<input type="text" autocomplete="off" />
  • formํƒœ๊ทธ์— ๋„ฃ๊ธฐ
<form autocomplete="off">
  <input type="text" />
</form>

โœ select ์„ ํƒ์‹œ ์ƒ‰๋ณ€๊ฒฝ

change์ด๋ฒคํŠธ

๐Ÿค” ์ฒ˜์Œ์— ์ƒ‰์„ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด color: #d0d0d0;๋ฅผ ์ ์šฉํ–ˆ์ง€๋งŒ ๋ฐ”๋€Œ์ง€์•Š์Œ -> ๊ธ€์ž ์ž์ฒด์— ์ƒ‰์„ ์คฌ๊ธฐ ๋•Œ๋ฌธ

$('.search-area select').change(function(e){
        e.preventDefault();
        $(this).css('color','#000');
    })

select๋ฅผ ์„ ํƒํ–ˆ์„๋•Œ this์˜css์˜ ์ƒ‰์ด ๋ธ”๋ž™์œผ๋กœ ๋ฐ”๋€Œ์–ด๋ผ


โœ input focus์ดˆ๊ธฐํ™”

input {
    padding: 0;
    background: transparent;
    border: 0;
}
input:focus {
    outline: none;
}

โœ placeholder ๊พธ๋ฏธ๊ธฐ

.search-area .keyword-search input::placeholder{
    color: #b4b4b4;
    font-weight: bold;
}

โœ select ๋น„ํ™œ์„ฑํ™”

โ—ผ ์˜ต์…˜ ์„ ํƒ ๋น„ํ™œ์„ฑํ™”

  1. ํƒœ๊ทธ์— ์ง์ ‘์ฃผ๊ธฐ
<option value="" disabled="" selected="">์ง๊ตฐ์„ ํƒ</option>
  1. css์— ์ฃผ๊ธฐ
.search-area option[value=""][disabled] {
    display: none;
}

๐Ÿ“Œ ์Šค์™€์ดํผ

โœ ์Šค์™€์ดํผ์— active์ฃผ๊ธฐ

.video-txt{
		opacity: 0;
    	transition:opacity 0.5s 0.3s;
    /*ํˆฌ๋ช…๋„๊ฐ€ 0.5์ดˆ๋งŒ์— ๋‚˜ํƒ€๋‚˜๊ณ  ๋”œ๋ ˆ์ด๋Š” 0.3์ดˆ*/
}
.sc-mainbanner .swiper-slide-active .video-txt{
    opacity: 1;
}
  • ์Šค์™€์ดํผ๊ฐ€ ์ž‘๋™ ๋  ๋•Œ๋Š” ํ•ญ์ƒ โ€˜.swiper-slide-activeโ€™๊ฐ€ ๋“ค์–ด๊ฐ€์žˆ๋‹ค.
    -> ํšจ๊ณผ๋ฅผ ์ฃผ๊ณ ์‹ถ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ํšจ๊ณผ์ฃผ๊ธฐ

  • ๋งŒ์•ฝ transition์— opacity๋ฅผ ์•ˆ์จ์ฃผ๋ฉด ์ฒ˜์Œ ์‹œ์ž‘ํ• ๋•Œ ๊ธ€์ž๊ฐ€ ์ž‘์•„์กŒ๋‹ค ์ปค์ง€๊ฒŒ ๋‚˜์˜จ๋‹ค.
    -> ์™œ๋ƒ๋ฉด transition์—๋Š” all์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ์ˆจ์–ด์ ธ์žˆ๋‹ค.
    ๋ชจ๋“ ๊ฑธ ๋ฐ”๊ฟ”์ฃผ๊ธฐ๋•Œ๋ฌธ์— opacity๋ฅผ ๊ผญ ์ ์–ด์ฃผ๊ธฐ

transition:opacity 1.2s 0.3s linear;

โœ ๋ฏธ๋””์–ด์ฟผ๋ฆฌ์‹œ ์Šค์™€์ดํผ

๋ณธ๋ž˜ ์Šค์™€์ดํผ ๊ธฐ์ค€์„ pc๋กœ ์žก์•˜๋‹ค๋ฉด ๊ธฐ์ค€์„ ๋ชจ๋ฐ”์ผ๋กœ ์žก๊ณ  ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ด์ค€๋‹ค.

var lastslide = new Swiper(".lastslide", {
        slidesPerView: 1,
        spaceBetween: 30,
        navigation: {
          nextEl: ".next",
          prevEl: ".prev",
        }
    });

breakpoints๋ฅผ ์ด์šฉํ•˜์—ฌ pc๋ฒ„์ „์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

var lastslide = new Swiper(".lastslide", {
        slidesPerView: 1,/* ๊ธฐ์ค€์ด ๋ชจ๋ฐ”์ผ,๊ธฐ๋ณธ๊ฐ’ */
        spaceBetween: 30,
        navigation: {
          nextEl: ".next",
          prevEl: ".prev",
        },
        breakpoints:{
            769:{/* 768๋ณด๋‹ค ์ปธ์„๋•Œ */
                slidesPerView: 3,
            }
          },
    });
  • ๊ธฐ๋ณธ๊ฐ’์ด ๋ชจ๋ฐ”์ผ์ด ๋˜๋Š”๊ฑฐ
  • ๋ชจ๋ฐ”์ผ์ผ๋•Œ ์Šฌ๋ผ์ด๋“œ๊ฐ€ ํ•˜๋‚˜๋งŒ ๋ณด์—ฌ์•ผํ•˜๊ณ  ํ™”๋ฉด์ด 768๋ณด๋‹ค ์ปธ์„๋•Œ ์Šฌ๋ผ์ด๋“œ๋ฅผ 3๊ฐœ ๋ณด์ด๊ฒŒ ํ•˜๋ผ๋Š” ๋œป
  • โ€˜ โ€™๋”ฐ์˜ดํ‘œ ํ•„์š”์—†์Œ!

โœ ์ด๋ฏธ์ง€ padding-bottom

<div class="img-box">
    <img src="./asset/imges/contents/img_slide2_1.jpg" alt="์‚ฌ๋žŒ์„ ๊ณต๋ถ€ํ•ฉ๋‹ˆ๋‹ค">
</div>

์ด๋ฏธ์ง€๋Š” ํ•ญ์ƒ ์ด๋ฏธ์ง€ ๋ฐ•์Šค๋กœ ๋ฌถ์–ด์ฃผ๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ
๊ทธ๋ž˜์•ผ (๋ฐ˜์‘ํ˜•์‹œ) ํšจ๊ณผ๋ž‘ ์‚ฌ์ด์ฆˆ๋ฅผ ๋งˆ์Œ๋Œ€๋กœ ์กฐ์ •ํ• ์ˆ˜์žˆ๋‹ค.
โ†’ ์ด๋ฏธ์ง€์— ์ง์ ‘์ ์ธ px โŒ

โœ ์˜ค๋ฅ˜์‚ฌํ•ญ

๋ฏธ๋””์–ด์ฟผ๋ฆฌ์‹œ img-box์— ์ง์ ‘์ ์ธ px๋กœ ์‚ฌ์ด์ฆˆ๋ฅผ ์ฃผ๊ฒŒ ๋˜๋ฉด ์‚ฌ์ด์ฆˆ๊ฐ€ ๋งž์ง€ ์•Š๋Š”๋‹ค.

โœ ํ•ด๊ฒฐ์‚ฌํ•ญ

  • ์Šค์™€์ดํผ ์ค‘ ๋ถ€๋ชจ์ธ์• ํ•œํ…Œ ๋†’์ด ์ฃผ๋ฉด ์•ˆ๋œ๋‹ค.
    โ†’ ๋งจ๋ฐ‘ ๋„˜์–ด๊ฐ€๋Š” ํ™”์‚ดํ‘œ ๋‚ ๋ผ๊ฐ

  • ์ด๋ฏธ์ง€ ์‚ฌ์ด์ฆˆ๋ฅผ %๋กœ ์ค€๋‹ค
    โ†’ ํ™”๋ฉด์ด ์ค„๋•Œ๋งˆ๋‹ค ์‚ฌ์ด์ฆˆ ์•Œ๋งž๊ฒŒ ๋น„์œจ์œ ์ง€ ํ• ๋ผ๋Š”๊ฒƒ
    โ†’ %๋Š” ํ™”๋ฉด ๋น„์œจ์„ ๋œปํ•จ

๐Ÿ’ก %์˜ ํ•ต์‹ฌ ์›๋ฆฌ๋Š”

  • ๋ถ€๋ชจ ์š”์†Œ์˜ width์— % ๊ฐ’์„ ์ ์šฉ โ†’ ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฐ€๋ณ€
  • ์ž์‹ ์š”์†Œ์— padding-top: n%โ†’ ๋ถ€๋ชจ ์š”์†Œ width๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ž์‹ ์š”์†Œ์˜ ๋†’์ด ์„ค์ • ๊ฐ€๋Šฅ
  • ๋ถ€๋ชจ์— ์žˆ๋Š” padding-topํ˜น์€padding-bottom์ด ์œ ๋™์ ์ด๊ฒŒ ํ•ด์ฃผ๋Š”๊ฒƒ
    โ†’ div๋Š” ์œ ๋™์ ์ด์ง€ ๋ชปํ•˜๋‹ˆ๊นŒ!

  • ์ด๋ฏธ์ง€ ๋ฐ•์Šค(๋ถ€๋ชจ)์— position: relative, padding-bottom: 47%์„ ์ฃผ๊ณ  ์ด๋ฏธ์ง€์— position: absolute๋ฅผ ์ค˜์„œ ์›ํ•˜๋Š” ์œ„์น˜์— ๋”ฑ ๋“ค์–ด๊ฐˆ์ˆ˜์žˆ๊ฒŒํ•œ๋‹ค
    โ†’ ๋น„์œจ์œ ์ง€ ์‹œํ‚ค๋ ค๊ณ 


โœ ๋ฒ„ํŠผcss

.control-box .btn-nav.swiper-button-disabled{
    opacity: 0.5;}
  • ํˆฌ๋ช…๋„๋งŒ ์กฐ์ ˆํ•˜๋ฉด ๋œ๋‹ค.
  • button-disabled๋Š” ์Šค์™€์ดํผ์—์„œ ์ œ์ผ ๋งˆ์ง€๋ง‰์— ๋„๋‹ฌํ•˜๋Š” ํด๋ž˜์Šค์ด๋‹ค.

๐Ÿ“Œ ๋น„๋””์˜คํƒœ๊ทธ

<div class="video-box">
    <video muted autoplay loop playsinline poster="ํฌ์Šคํ„ฐ๋กœ ์“ฐ์ผ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ">
        <source src="https://recruit.pstatic.net/share/tmplat/naver/video/Joker.mp4" type="video/mp4">
    </video>
    <h3 class="video-txt">Board<br> the Navership</h3>
 <div>
  • muted - ์Œ์†Œ๊ฑฐ
  • autoplay - ์ž๋™์žฌ์ƒ
  • playinline: IOS ์ž๋™์žฌ์ƒ
  • loop - ๋ฐ˜๋ณต

โ—ผ playinline

โœ IOS (์•„์ดํŒจ๋“œ๋‚˜ ์•„์ดํฐ)์—์„œ video autoplay="ture" ๋ฅผ ๋„ฃ์–ด๋„ ์ž๋™์žฌ์ƒ์ด ๋˜์ง€์•Š๋Š”๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ IOS์—๋Š” autoplay ๋Œ€์‹  playinline์„ ์จ์•ผํ•œ๋‹ค.


โ—ผ poster

poster ์†์„ฑ์œผ๋กœ ๋„ฃ์€ ์ด๋ฏธ์ง€๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋กœ๋”ฉ๋ ๋•Œ๋‚˜ ์ฒ˜์Œ ๋กœ๋“œ๋˜์–ด ์žฌ์ƒ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๊ธฐ ์ „๊นŒ์ง€ ๋ณด์—ฌ์ค„ ์ด๋ฏธ์ง€์ด๋‹ค.

ํฌ์Šคํ„ฐ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ ˆํ•˜๋ ค๋ฉด css๋ฅผ ์ด์šฉํ•ด ์กฐ์ ˆํ•ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

video[poster]{ 
	/* ํฌ์Šคํ„ฐ ์ด๋ฏธ์ง€์˜ ํฌ๊ธฐ๋ฅผ ๋น„๋””์˜ค ์˜์ƒ์— ๊ฝ‰์ฐจ๋„๋ก */
    height:100%;
    width:100%;
    }

๐Ÿ“Œ reset

์ œ์ž‘ ์‹œ ์ถ”๊ฐ€์ ์œผ๋กœ ํ•„์š”ํ•œ reset๋ถ€๋ถ„

input {
    padding: 0;
    background: transparent;
    border: 0;
    font-family: 'TTHoves','NanumSquare', sans-serif;
}
input:focus {
    outline: none;
}
fieldset {
    margin: 0;
}
button {
    background: transparent;
    border: 0;
    margin: 0;
    padding: 0;
}
select {
    border: 0;
    outline: none;
    appearance: none;
    -moz-appearance: none; /* Firefox */ 
    -webkit-appearance: none; /* Safari and Chrome */
}
/* IE ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ œ๊ฑฐ */
select::-ms-expand{
	display: none; /* IE 10, 11 */
}

๐Ÿ“Œ ์ž๋ฐ” ํ•ด์„

โœ ํ˜ธ๋ฒ„

โ—ผ ํ˜ธ๋ฒ„์‹œ ํŒ ๋‚˜ํƒ€๋‚˜๊ธฐ (๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์•„๋‹˜)

๐Ÿ’ก ์ด๋ฒคํŠธ๋ฅผ ์ฃผ๊ธฐ ์œ„ํ•ด ์ž์‹ํด๋ž˜์Šค๋ฅผ ๊ณ„์† ์ถ”๊ฐ€ํ•˜๋‹ค๋ณด๋ฉด ์žฌํ™•์žฅ์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€.
โœ ํ•ด๊ฒฐ๋ฐฉ์•ˆ โ†’ โ€™thisโ€™

$('.menu-item').hover(function(){
        if($(this).find('.sub-list').length){2
            $('.header').addClass('hover')2
            $(this).find('.sub-list').addClass('active') 1
        }
    }, function(){
        $('.header').removeClass('hover')2
        $('.sub-list').removeClass('active') 1
    })
  1. .menu-item์— ํ˜ธ๋ฒ„ํ• ๋•Œ ํ˜ธ๋ฒ„ ๋œ๋‹ค๋ฉด
    sub-list์˜ ์ž์‹์ค‘์— sub-item์„ ์ฐพ์•„์„œ active์„ ์ถ”๊ฐ€ํ•ด๋ผ,
    ๊ทธ๋ ‡์ง€ ์•Š์„๋•Œ๋Š” ๋„ฃ์–ด์คฌ๋˜ ํด๋ž˜์Šค๋ฅผ ๋‹ค ๋นผ์ค˜๋ผ

โ†’ ๋ฉ”๋‰ด team์˜ ์ž์‹์— ํŒ์„ ์ฃผ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ header์— ํ˜ธ๋ฒ„ํ–ˆ์„๋•Œ ํŒ์ด ๋‚˜์˜ค๋Š”๊ฑธ๋กœ ํ•ด์•ผํ•จ

  1. ๋งŒ์•ฝ์— ์ง€๊ธˆ this( li )์— โ€˜sub-listโ€™์˜ ๊ธธ์ด๊ฐ€ 1์ด๋ฉด ์ž‘๋™๋˜๋ผ

๐Ÿ’ก length๋Š” ๊ธธ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด 1 ์—†๋‹ค๋ฉด 0
๊ทธ๋Ÿผ์œผ๋กœ ํƒœ๊ทธ๊ฐ€ ์žˆ์œผ๋ฉด 1 ์—†์œผ๋ฉด 0 ํƒœ๊ทธ์˜ ์—ฌ๋ถ€ ํ™•์ธ


โœ ๋ฒ„ํŠผ ๋Œ๋ฆฌ๊ธฐ

footer .tab-area.active .button{
    background: #fff;
}
footer .tab-area .button::after{
    content: '';
    background-position: -122px -93px;
    position: absolute;
    top: 50%;
    right: 0;
    transform: translateY(-50%);
    /* display: inline-block; */ ์•ฑ์†”์ด ์—†์—ˆ๋‹ค๋ฉด ํ•„์š”ํ•จ
    width: 10px;
    height: 6px;
    z-index: 99;
}
footer .tab-area.active .button::after{
    transform: rotate(180deg);
    right: 5px;
}
  • ๋ฏธ๋ฆฌ โ€˜activeโ€™ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๊ณ  ์ž๋ฐ”๋กœ โ€˜toggleClassโ€™๋งŒ ์ฃผ๋ฉด ๋!!
$('.tab-area .button').click(function(){
		$('.tab-area').toggleClass('active');
});

โ—ผ ํ˜น์‹œ๋‚˜ ๋ถ€๋“œ๋Ÿฝ๊ฒŒ ์ฃผ๊ณ ์‹ถ๋‹ค๋ฉด slide-down

โ—ผ ๐Ÿ’ก flex๋ฅผ ์“ฐ๋‹ค๋ณด๋ฉด ๋ถ€๋ชจ๋†’์ด๋ฅผ ์ž์‹๋“ค์—๊ฒŒ ๊ณต์œ ๋ฅผ ํ•จ.

๊ธฐ๋ณธ์ด align-items: stretch ์ž์‹์ด ๊ทธ ๋†’์ด๋ฅผ ๋ฐ›๊ธฐ์‹ซ๋‹ค๋ฉด align-items: center; ๋ฅผ ์ฃผ๋ฉด ๋จ





์˜ค๋‹ตโœ(โ—”โ—กโ—”)โœง

1. ํ•„์ˆ˜ css๋ช…

  • header, main(container),footer๋Š” ํด๋ž˜์Šค ํ•„์ˆ˜
    -> ๋‚˜์ค‘์— ์ˆ˜์ •์— ์šฉ์˜ํ•˜๋ ค๊ณ 
    -> ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋™์ผํ•œ css๊ฐ€ ๋‚˜์˜ฌ์ˆ˜๋„ ์žˆ์œผ๋‹ˆ๊นŒ ๊ณ ์œ ํ•œ ์• ๋“ค์€ cssํ• ๋•Œ ์•ž์— ์จ์ฃผ๊ธฐ
    ex) .header .ํด๋ž˜์Šค๋ช…{}

  • ์™ผ์ชฝ ๋ฉ”๋‰ด๋“ค์€ ul๋กœ ์ ํ•ฉํ•˜์ง€๋งŒ ์˜ค๋ฅธ์ชฝ ๋ฉ”๋‰ด๋“ค์€ ul๋ณด๋‹ค aํƒœ๊ทธ๋กœ๋งŒ ์ด๋ฃจ์–ด ์ง„๊ฒŒ ์ข‹๋‹ค.

์™œ๋ƒ!! โ†’ ul์€ 3~4๊ฐœ ์ด์ƒ์ผ๋•Œ๊ฐ€ ์ด์ƒ์ ์ด๋‹ˆ๊นŒ



2. flex๋ฅผ ์ผ๋Š”๋ฐ ์•ˆ๋‚ด๋ ค์˜จ ์ด์œ ๋Š”??

โœ ์˜ค๋ฅ˜์‚ฌํ•ญ

  • ํ˜ธ๋ฒ„์‹œ ๋ฐ‘์— ๋‚˜์˜ค๋Š” ์„ ์€ border๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ์ปน๊ฑฐ๋ฆฐ๋‹ค
    โ†’ ๊ทธ๋Ÿผ์œผ๋กœ width์™€height์„ ์ด์šฉํ•˜์—ฌ after์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค€๋‹ค.

โœ ํ•ด๊ฒฐ๋ฐฉ์•ˆ

  • aํƒœ๊ทธ height : 100% ๋ฅผ ์คฌ๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด๋ ค์˜ค์ง€ ์•Š๋Š”๊ฒƒ โ†’๊ฐ•์ œ๋กœ line-height๋ฅผ ์คฌ์Œ
  • 100%๋ฅผ ์•ˆ์ค€ ์ด์œ ๋Š” ์‹œ์•ˆ์—์„œ ํ˜ธ๋ฒ„ํ–ˆ์„์‹œ ์ƒ๊ธฐ๋Š” ์„ ์ด ๊ธ€์ž ๋ฐ”๋กœ ๋ฐ‘์ด๊ธฐ ๋•Œ๋ฌธ
.gnb-area a::after{
    content: '';
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100%;
    height: 1px;
    background: #000;
    display: none;
}
.gnb-area a:hover::after{
    display: block;
}

3. ์ค‘์š”ํ•˜์ง€ ์•Š์€ ์ด๋ฏธ์ง€๋Š” before,after

  • ๊ตณ์ด p/spanํƒœ๊ทธ๋ฅผ ์จ์„œ ์ด๋ฏธ์ง€๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ํ•„์š” ์—†๋‹ค. ์˜๋ฏธ๊ฐ€ ์—†๋Š”์• ๋“ค์€ before,after๋กœ ๊พธ๋ฉฐ์ฃผ๊ธฐ

4. position: relative ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ธฐ์ค€

โœ ์˜ค๋ฅ˜์‚ฌํ•ญ

์ฒ˜์Œ์—๋Š” ๋ฉ”์ธ ์Šค์™€์ดํผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ position: relative๋ฅผ ์คฌ์—ˆ๋Š”๋ฐ ์œ„์น˜๊ฐ€ ์‹œ์•ˆ์ฒ˜๋Ÿผ ๋˜์ง€ ์•Š์Œ.

transform: translateY(-50%);
		   z-index: 1;
		   position: relative;

โœ ํ•ด๊ฒฐ๋ฐฉ์•ˆ

  • ์™„์ „ ๊ฐ„๋‹จํ•จ, ์ž๊ธฐ์ž์‹ ์„ ๊ธฐ์ค€์œผ๋กœ ์ฃผ๋ฉด๋จ
    -> position: relative;

5. z-index ์ ์šฉ

โœ ์˜ค๋ฅ˜์‚ฌํ•ญ

z-index๋ฅผ header๋ณด๋‹ค ๋†’๊ฒŒ ์คฌ๋Š”๋ฐ๋„ ๊ณ„์† ์œ„์— ์‚ด์•„์žˆ๋‹ค.
๊ทธ ์ด์œ ๋Š”?

โœ ํ•ด๊ฒฐ์‚ฌํ•ญ

->๋ชจ๋ฐ”์ผ์˜์—ญ์„ ๊ฐ์‹ธ๋Š” ๋ถ€๋ชจ์—๊ฒŒ z-index:1์„ ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹์ด ์•„๋ฌด๋ฆฌ ๋†’์€ z-index๊ฐ’์„ ๋จน์–ด๋„ ๋†’๊ฒŒ ๋‚˜์˜ฌ ์ˆ˜ ์—†์—ˆ๋‹ค.


6. ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์„ ํƒ์ง€ input:radio

โœ ์˜ค๋ฅ˜์‚ฌํ•ญ
โŒ button๋กœ ๊ป๋ฐ๊ธฐ๋งŒ ์„ ํƒํ•˜๊ฒŒ ํ–ˆ๋‹ค

์˜ค๋ฅ˜์ธ ์ด์œ 
-> ์‚ฌ์šฉ์ž๊ฐ€ ํด๋ฆญํ–ˆ์„์‹œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ €์žฅ๋œ ๊ฐ’์„ ์•Œ์•„์•ผํ•œ๋‹ค. ๊ป๋ฐ๊ธฐ๋งŒ ๊พธ๋ฉฐ์ฃผ๋ฉด ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ’์„ ์•Œ์ˆ˜๊ฐ€ ์—†์Œ.

โœ ํ•ด๊ฒฐ์‚ฌํ•ญ

๊ฐ’์„ ๋ฐ›์•„์•ผ์ง€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๊ฐ’์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

$('.mo-lnb .btn-lnbclose').click(function(e){
   e.preventDefault();
   $('input').prop('checked',false)
})

close๋ฅผ ์„ ํƒํ–ˆ์„๋•Œ input์˜ prop(property)์ฒดํฌ๊ฐ’์ด false๋กœ ๋ฐ”๋€Œ์–ด๋ผ

profile
๋‹ฌ๋ฆฌ๋Š” ๊ฑฐ๋ถ์ด

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