Andar

seung weon, seoΒ·2024λ…„ 6μ›” 3일
0

project

λͺ©λ‘ 보기
3/8
post-thumbnail

πŸƒβ€β™‚οΈ Andar

  • ν”„λ‘œμ νŠΈ 이름: Andar
  • μ‚¬μš©ν•œ μ–Έμ–΄: HTML, CSS, JavaScript, jQuery
  • μ›Ήμ‚¬μ΄νŠΈ μœ ν˜• : Mobile (λͺ¨λ°”일)

μŠ€ν¬λ‘€λ°” 숨기기 (크둜슀 λΈŒλΌμš°μ§•)

CSS

.group-menu2 .gnb-list{
    display: flex;
    padding: 11px 0 11px 15px;
    background: #fff;
    gap: 10px;
    width: calc(100% - 50px);
    overflow-x: auto;
    -ms-overflow-style: none;
    scrollbar-width: none;
}
.group-menu2 .gnb-list::-webkit-scrollbar{
    display: none;
}

크둜슀 λΈŒλΌμš°μ§•μ΄λž€?

크둜슀 λΈŒλΌμš°μ§•(cross-browser compatibility)은 μ›Ή νŽ˜μ΄μ§€ λ˜λŠ” μ›Ή μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ μ—¬λŸ¬ μ›Ή λΈŒλΌμš°μ € (주둜 Google Chrome, Microsoft Edge, Opera, FireFox, Safari)μ—μ„œ μΌκ΄€λœ λ°©μ‹μœΌλ‘œ λ™μž‘ν•˜λ„λ‘ 보μž₯ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.

  1. ν˜„μž¬ overflow-xκ°€ 적용된 클래슀 .gnb-list의 ::-webkit-scrollbar {display:none;}을 μž‘μ„±ν•˜μ—¬ Safari, Chromeκ³Ό 같이 WebKit엔진을 μ“°λŠ” λΈŒλΌμš°μ €μ—μ„œ μŠ€ν¬λ‘€λ°” 숨기기

  2. -ms-overflow-style: none;을 μž‘μ„±ν•˜μ—¬ Internet Explorer 및 Microsoft Edge λΈŒλΌμš°μ € μƒμ—μ„œ μŠ€ν¬λ‘€λ°” 숨기기

  3. scrollbar-width: none;을 μž‘μ„±ν•˜μ—¬ Firefox λΈŒλΌμš°μ € μƒμ—μ„œ μŠ€ν¬λ‘€λ°” 숨기기

-webkit μ΄λž€?

WebKit은 μ˜€ν”ˆ μ†ŒμŠ€ μ›Ή λΈŒλΌμš°μ € μ—”μ§„μœΌλ‘œ, 주둜 Safari, Google Chrome, Opera와 같은 μ›Ή λΈŒλΌμš°μ €μ— μ‚¬μš©λ˜κ³  μžˆμŠ΅λ‹ˆλ‹€. WebKit은 HTML, CSS 및 JavaScriptλ₯Ό ν•΄μ„ν•˜κ³  λ Œλ”λ§ν•˜μ—¬ μ›Ή νŽ˜μ΄μ§€λ₯Ό ν‘œμ‹œν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

Cafe24 λŒ€μ‘ λͺ¨λ“ˆ λ ˆμ΄μ•„μ›ƒ

HTML

Style1

<ul class="prd-list style1">
	<li class="prd-item"> 
		<a href="" class="link"></a> 
		<div class="thumb-box"> 
			<em class="number">1</em> 
			<img src="./assets/images/tab-all.jpg" alt="[3 SET] 에어리핏 μŠ€νƒ λ‹€λ“œν• 카라 ν‹°μ…”μΈ " class="img">
			<div class="icons"> 
				<img src="./assets/images/new.png" alt=""> 
			</div> 
		</div> 
		<div class="desc-box"> 
			<button class="review">리뷰 4,639</button> 
			<p class="name">[3 SET] 에어리핏 μŠ€νƒ λ‹€λ“œν• 카라 ν‹°μ…”μΈ </p>
			<div class="price">
				<span class="percent">41%</span> 
				<span class="current">69,000원</span> 
				<del class="before">117,000원</del> 
			</div> 
			<div class="etc">
				<span class="banner">λ΄„ νŽ˜μŠ€ν‹°λ²Œ ν•œμ • ν˜œνƒ (~4/14)</span>
			</div> 
		</div> 
	</li>
</ul>

Style2

<ul class="prd-list style2">
	<li class="prd-item"> 
		<a href="" class="link"></a> 
		<div class="thumb-box"> 
			<img src="./assets/images/desc-item1.jpg" alt="[SET] 맨즈 μŠ¬λž™μŠ€ & 폴둜 ν‹°μ…”μΈ  (μ—μ–΄μ†”λ¦¬λ“œ & 에어리핏)" class="img">
			<div class="icons"> 
				<img src="./assets/images/new.png" alt=""> 
			</div> 
		</div> 
		<div class="desc-box"> 
			<button class="review">리뷰 221</button> 
			<p class="name">[SET] 맨즈 μŠ¬λž™μŠ€ & 폴둜 ν‹°μ…”μΈ  (μ—μ–΄μ†”λ¦¬λ“œ & 에어리핏)</p>
			<div class="price">
				<span class="percent">24%</span> 
				<span class="current">99,000원</span> 
				<del class="before">131,000원</del> 
			</div>
			<div class="etc">
				<span class="banner">M-3XL</span>
				<span class="banner">νšŒμ› 할인가 94,000원(4/9~4/13)</span>
			</div>              
		</div>     
	</li>
</ul>

Cafe24μ—μ„œ λͺ¨λ“ˆμ΄λž€?

λͺ¨λ“ˆ(Module)μ΄λž€ β€˜1개 λ˜λŠ” κ·Έ μ΄μƒμ˜ μ½˜ν…μΈ μ™€ κΈ°λŠ₯의 λ¬ΆμŒβ€™ μž…λ‹ˆλ‹€. 즉, λͺ¨λ“ˆμ€ ν”„λ‘œκ·Έλž¨μ˜ μ΅œμ†Œ λ‹¨μœ„μ΄λ©°, 각 λͺ¨λ“ˆμ€ HTML 그리고 λ³€μˆ˜μ— μ˜ν•œ μ‘°ν•©μœΌλ‘œ κ΅¬λ™λ©λ‹ˆλ‹€. λͺ¨λ“ˆμ€ ν•˜λ‚˜μ˜ λ…λ¦½λœ μ™„μ „ν•œ ν”„λ‘œκ·Έλž¨μœΌλ‘œ μ‚¬μš©μžκ°€ μž…λ ₯ν•œ module=β€œλͺ¨λ“ˆμ•„μ΄λ””β€œ μ΄λž€ μ½”λ“œμ— μ˜ν•΄μ„œ νŒλ‹¨λ˜λ©° κ΅¬λ™λ©λ‹ˆλ‹€.

  1. Cafe24의 λͺ¨λ“ˆ λ ˆμ΄μ•„μ›ƒ μ‹œμŠ€ν…œμ„ μ°Έκ³ ν•˜μ—¬ 각 리슀트 μŠ€νƒ€μΌ(ul)듀에 곡톡 클래슀 .prd-listλ₯Ό μ£Όκ³  μžμ‹λ“€λ„ λ™μΌν•œ 클래슀 λͺ…을 μ£ΌκΈ°

  2. λ¨Όμ € style1을 κΈ°μ€€μœΌλ‘œ CSS둜 λ ˆμ΄μ•„μ›ƒ 작기

  3. style1κ³Ό style2의 λ ˆμ΄μ•„μ›ƒμ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ— 곡톡 클래슀 .prd-list 에 각각의 μŠ€νƒ€μΌ λͺ…을 클래슀둜 μΆ”κ°€(style1, style2, ...)

  4. .prd-list.style2λ₯Ό λΆ€λͺ¨λ‘œ CSSλ₯Ό μ‚¬μš©ν•˜μ—¬ style2에 맞게 λ ˆμ΄μ•„μ›ƒ μˆ˜μ •ν•˜κΈ°

.prd-list.style2 .prd-item{
    padding: 20px 0;
    display: flex;
}
.prd-list.style2 .prd-item+.prd-item{
    border-top: 1px solid #eee;
}
...

μœ„μ™€ 같은 λ°©λ²•μœΌλ‘œ λΉ„μŠ·ν•œ λ ˆμ΄μ•„μ›ƒμ„ μ†μ‰½κ²Œ μˆ˜μ •ν• μˆ˜ 있고, λΆˆν•„μš”ν•œ μ½”λ“œλ₯Ό μ€„μΌμˆ˜ μžˆλ‹€.

μ›Ή 폰트의 μ’…λ₯˜μ™€ @font-face μ‚¬μš©λ²•

μ›Ή 폰트의 μ’…λ₯˜

μ›Ή 폰트의 μ’…λ₯˜μ—λŠ” μ—¬λŸ¬ ν˜•μ‹μ΄ 있으며, 각 ν˜•μ‹μ€ νŠΉμ • μš©λ„μ™€ μ›Ή ν™˜κ²½μ—μ„œμ˜ μ΅œμ ν™”λ₯Ό κ³ λ €ν•˜μ—¬ λ””μžμΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€. WOFF(μ›Ή μ˜€ν”ˆ κΈ€κΌ΄ ν˜•μ‹)와 WOFF2(μ›Ή μ˜€ν”ˆ κΈ€κΌ΄ ν˜•μ‹ 2)λŠ” μ›Ή νŽ˜μ΄μ§€μ— μ΅œμ ν™”λœ ν˜•μ‹μ΄λ©°, TTF(νŠΈλ£¨νƒ€μž… 폰트)와 OTF(μ˜€ν”ˆνƒ€μž… 폰트) 등도 μ‚¬μš©λ©λ‹ˆλ‹€.

1. WOFF

WOFFλŠ” μ›Ή 폰트의 ν‘œμ€€ ν˜•μ‹ 쀑 ν•˜λ‚˜λ‘œ μ›Ή νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©ν•˜κΈ°μ— μ΅œμ ν™”λœ μ›Ή 폰트 ν˜•μ‹μž…λ‹ˆλ‹€.

2. WOFF2

WOFF2λŠ” μ›Ή WOFF2λŠ” WOFF의 κ°œμ„  λ²„μ „μœΌλ‘œ, WOFFλ₯Ό μ΅œλŒ€ 20% μ••μΆ•ν•œ ν°νŠΈμž…λ‹ˆλ‹€. μ΅œμ‹  μ›Ή 폰트 ν‘œμ€€ 쀑 ν•˜λ‚˜λ‘œ, 더 λΉ λ₯΄κ²Œ λ‘œλ“œλ˜λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.

3. TTF

Microsoft와 Apple이 ν•¨κ»˜ κ°œλ°œν•œ κΈ€κΌ΄ ν˜•μ‹μœΌλ‘œ, λͺ¨λ“  κΈ€μžμ— λŒ€ν•œ λͺ¨μ–‘κ³Ό 크기 정보λ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. μ›Ήμ—μ„œλŠ” 주둜 μ‚¬μš©λ˜μ§€ μ•Šκ³ , 주둜 μ›Ή 폰트 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

4. OTF

Adobe와 Microsoftκ°€ κ³΅λ™μœΌλ‘œ κ°œλ°œν•œ κΈ€κΌ΄ ν˜•μ‹μœΌλ‘œ, TTF와 μœ μ‚¬ν•˜μ§€λ§Œ 더 λ§Žμ€ κ³ κΈ‰ κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. TTF와 λ§ˆμ°¬κ°€μ§€λ‘œ μ›Ήμ—μ„œλŠ” 주둜 μ‚¬μš©λ˜μ§€ μ•Šκ³ , 주둜 μ›Ή 폰트 ν˜•μ‹μœΌλ‘œ λ³€ν™˜ν•˜μ—¬ μ‚¬μš©ν•©λ‹ˆλ‹€.

@font-face μ‚¬μš©λ²•

CSS

@font-face {
    font-family: 'Gilroy';
    src: url('../fonts/Gilroy-Regular.woff2') format('woff2');
    font-weight: normal;
}
@font-face {
    font-family: 'Gilroy';
    src: url('../fonts/Gilroy-Medium.woff2') format('woff2');
    font-weight: 500
    ;
}
@font-face {
    font-family: 'Gilroy';
    src: url('../fonts/Gilroy-SemiBold.woff2') format('woff2');
    font-weight: 600;
}
@font-face {
    font-family: 'Gilroy';
    src: url('../fonts/Gilroy-Bold.woff2') format('woff2');
    font-weight: 700;
    ;
}
  1. font-familyλ₯Ό μ‚¬μš©ν•˜μ—¬ 폰트의 이름을 지정 (λ™μΌν•œ 폰트둜 λ‹€μ–‘ν•œ κ΅΅κΈ°λ₯Ό ν‘œν˜„ν• λ•Œ 폰트의 이름을 κ°™κ²Œ ν•œλ‹€.)

  2. μƒλŒ€ 경둜(../)λ₯Ό μ‚¬μš©ν•˜μ—¬ 폰트 파일의 경둜λ₯Ό μ§€μ •ν•˜κ³  각 폰트의 format('...') λͺ…μ‹œν•˜κΈ°

  3. font-weight둜 각 폰트의 κ΅΅κΈ° μ„€μ • (보톡 400κΈ°μ€€ = regular)

μŠ¬λΌμ΄λ“œ 메뉴 λ§Œλ“€κΈ°

HTML

<nav class="gnb">
	<div class="menu-top">
    	<ul class="gnb-list">
        	<li class="gnb-item">
            	<a href="" class="focus"><span class="orange">24μ‹œκ°„ νƒ€μž„μ„ΈμΌ</span></a>
            </li>
          	<li class="gnb-item">
            	...
            </li>
		</ul>
        <button class="btn-all"><span class="blind">전체메뉴</span></button>
        <h2>전체메뉴</h2>
  </div>
  <div class="menu-all">
	<ul class="all-list">
		<li class="all-item">
			<a href="" class="focus">
				<span class="orange">24μ‹œκ°„ νƒ€μž„μ„ΈμΌ</span>
            </a>
          	</li>
      	<li class="all-item">
        	...
      	</li>
    </ul>
  </div>
</nav>

CSS

.group-menu2 .menu-top .btn-all{
    position: absolute;
    top: 10px;right: 10px;
    content: '';
    background-image: url(../images/arrow-open.png);
    background-repeat: no-repeat;
    display: block;
    width: 28px;
    height: 28px;
    background-size: 12px;
    background-position: center;
    transform: rotate(0);
    z-index: 1;
}
.group-menu2 .menu-top h2{
    position: absolute;
    top: 0;
    left: 0;
    font-size: 16px;
    line-height: 23px;
    color: #000;
    width: 100%;
    padding: 11px 16px;
    display: none;
}
.group-menu2 .menu-top.on h2{
    display: block;
}
.group-menu2 .menu-top.on .btn-all{
    transform: rotate(180deg);
}
.group-menu2 .menu-top.on .gnb-list{
    visibility: hidden;
}
.group-menu2 .menu-all{
    background: #fff;
    display: none;
}

jQuery

$('.group-menu2 .btn-all').click(function(){
    $('.header .menu-top').toggleClass('on');
    $('.menu-all').slideToggle();
})
  1. 클래슀 .btn-all 에 클릭 이벀트 생성 (ν™”μ‚΄ν‘œ λ²„νŠΌ)

  2. .menu-top에 클래슀 on이 μΆ”κ°€λ˜μ—ˆμ„λ•Œ μžμ‹ .gnb-listκ°€ 보이지 μ•Šκ²Œ λ§Œλ“€κΈ° (visibility: hidden;)

  3. 클래슀 on이 μΆ”κ°€λ˜μ—ˆμ„λ•Œ h2 즉 λ‘λ²ˆμ§Έ 메뉴 .menu-all의 제λͺ©μ΄ display: block; λ‚˜μ˜€κ²Œ λ§Œλ“€κΈ°

  4. 클래슀 on이 μΆ”κ°€λ˜μ—ˆμ„λ•Œ ν™”μ‚΄ν‘œ λ²„νŠΌ(.btn-all)을 180도 νšŒμ „ μ‹œν‚€κΈ°

  5. .menu-top에 toggleClass('on')을 λ„£μ–΄ ν΄λ¦­ν• λ•Œλ§ˆλ‹€ 클래슀 on을 ν† κΈ€ μ‹œν‚€κΈ°

  6. λ§ˆμ°¬κ°€μ§€λ‘œ λ‘λ²ˆμ§Έ 메뉴 .menu-all 에 ν•¨μˆ˜ slideToggle();λ₯Ό λ„£μ–΄ 클릭할 λ•Œλ§ˆλ‹€ μŠ¬λΌμ΄λ“œλ₯Ό ν† κΈ€μ‹œν‚€κΈ° (slideToggle은 display: none; μƒνƒœμ—μ„œλ„ μž‘λ™ν•¨)

profile
to reach new possibilities

0개의 λŒ“κΈ€