πŸ’» 곡뢀 기둝/🎨 CSS

HTML/CSS | 이미지 μŠ¬λΌμ΄λ“œ

  • -

λ‚΄λ°°μΊ μ—μ„œ λ―Έλ‹ˆν”„λ‘œμ νŠΈλ₯Ό μ§„ν–‰ν•˜λ©΄μ„œ, 

 

λ‚˜μ˜ μ•Όμ‹¬μž‘ 사진을 가러리 μ‹μœΌλ‘œ κΈ°λŠ₯ λΆ€μ—¬ν•˜λ˜ 쀑 배우게 된 μ΄λ―Έμ§€ μŠ¬λΌμ΄λ“œ

λ―€μ°Œλ‹€

ν•œ 번 λ°°μ›Œλ³΄μž.

 


 

 

생각보닀 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ—†μ΄λŠ” μƒκ°μœΌλ‘œ λ‹΄κ³  있던 κΈ°λŠ₯을 κ΅¬ν˜„ν•  수 μžˆλŠ” λ²”μœ„κ°€ μ μ—ˆλ‹€.

 

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μ†Œμ€‘ν•¨.. λ¦¬μŠ€νŽ™..

 

아직 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ΅μˆ™ν•˜μ§€ μ•Šμ€ λ‚˜μ—κ²ŒλŠ” HTML/CSS λ‘œ κ·Όμ ‘ν•˜κ²Œ κ΅¬ν˜„μ΄ κ°€λŠ₯ν•œ 이미지 μŠ¬λΌμ΄λ“œλ₯Ό λ°°μ›Œλ³΄μ•˜λ‹€.

 

기본적으둜 μ•Œμ•„μ•Όν•  radio λ°•μŠ€μ˜ κ°œλ…μ— λŒ€ν•΄μ„œ μ•Œκ³  갈 ν•„μš”κ°€ μžˆλ‹€.

 

input μ—μ„œ type="radio" 속성을 μ‚¬μš©ν•  수 μžˆλŠ”λ°, radio 속성은 ν•œ 번 클릭 μ‹œ ν•΄μ œκ°€ μ•ˆλ˜λ©°, name="slide" μœΌλ‘œ 묢은 input 듀은 ν•˜λ‚˜μ˜ 그룹이 λ˜μ–΄ μ—¬λŸ¬ input 쀑 ν•˜λ‚˜λ§Œ 체크가 λ˜λŠ” 효과λ₯Ό 가지고 μžˆλ‹€.

 

input 은 label κ³Ό 같이 μ‚¬μš©ν•  수 μžˆλ‹€.

<input type="radio" id="slide01">
<label for="slide01">문자&이미지>/label>  # label을 체크 μ‹œ input 이 체크 됨.

 

이것을 μ΄μš©ν•΄μ„œ HTML μ„ λ¨Όμ € κ΅¬μ„±ν•΄λ³΄μž.

 

HTML μ˜ μ˜μ—­μ€ 3개둜 λ‚˜λˆ„μ—ˆλ‹€.

μ˜μ—­ 1 μ—μ„œλŠ” λΆˆλ¦Ώ 클릭에 따라 체크된 λΌλ””μ˜€ λ°•μŠ€κ°€ λ³€ν•˜λ„λ‘ ν•΄μ€€λ‹€.

type="radio" λ₯Ό 4개 μ •μ˜

 

μ˜μ—­ 2 μ—μ„œλŠ” μŠ¬λΌμ΄λ“œ 이미지 4μž₯을 λͺ©λ‘(<ul>)으둜 μ •μ˜.

 

μ˜μ—­ 3 μ—μ„œλŠ” μŠ¬λΌμ΄λ“œ 이동을 μœ„ν•΄ ν΄λ¦­ν•˜λŠ” μŠ¬λΌμ΄λ“œ λΆˆλ¦Ώμ„ 4개둜 였게 λ§Œλ“ λ‹€.

<div class="slider">
<!--  μ˜μ—­ 1 : radio 4개의 클릭에 λ”°λ₯Έ λΌλ””μ˜€ λ°•μŠ€ λ³€ν™”  -->
    <input type="radio" name="slide" id="slide1" checked>
    <input type="radio" name="slide" id="slide2">
    <input type="radio" name="slide" id="slide3">
    <input type="radio" name="slide" id="slide4">
    <!--  μ˜μ—­ 2 : μŠ¬λΌμ΄λ“œ 이미지 4μž₯의 λͺ©λ‘ μ •μ˜  -->
    <ul id="imgholder" class="imgs"> <!--  μŠ¬λΌμ΄λ“œ 이미지 크기 κ³ μ • : 640px x 480px  -->
        <li><img src="./miniproject/img/slide1.jpg"></li>
        <li><img src="./miniproject/img/slide2.jpg"></li>
        <li><img src="./miniproject/img/slide3.jpg"></li>
        <li><img src="./miniproject/img/slide5.jpg"></li>
    </ul>
    <!--  μ˜μ—­ 3 : μŠ¬λΌμ΄λ“œ 이동을 μœ„ν•œ 뢈릿 4개  -->
    <div class="bullets">
        <label for="slide1">&nbsp;</label>
        <label for="slide2">&nbsp;</label>
        <label for="slide3">&nbsp;</label>
        <label for="slide4">&nbsp;</label>
    </div>
</div>

 

CSS λ₯Ό ν†΅ν•΄μ„œ 기본적인 배치λ₯Ό μž‘μ•„μ£Όμž.

 

μ˜μ—­ 1 : class="slider"

ν•΄λ‹Ή 이미지 μŠ¬λΌμ΄λ“œμ˜ 쑰건은 ν¬κΈ°λŠ” 640px x 480px 으둜 λ§žμΆ”κ³ , 이미지가 κ°€μš΄λ°λ‘œ 올 수 있게 μ •λ ¬ν•΄μ€€λ‹€.

λΌλ””μ˜€ λ°•μŠ€λŠ” 보이지 μ•Šλ„λ‘ 감좔기.

뢈릿 라벨둜 μŠ¬λΌμ΄λ“œ 이동 λΌλ””μ˜€ λ°•μŠ€ κΈ°λŠ₯ μ‚¬μš©.

<style>
	/* μŠ¬λΌμ΄λ“œ 전체 크기λ₯Ό λ§žμΆ”κ³ , κ°€μš΄λ° μ •λ ¬ */
    .slider {
        width: 640px;
        height: 480px;
        position: relative;
        margin: 0 auto;
    }

    /* λΌλ””μ˜€ λ°•μŠ€ 숨기기 */
    .slider input[type=radio] {
        display: none;
    }
</style>

 

μ˜μ—­ 2 : class="imgs"

μŠ¬λΌμ΄λ“œ 이미지 λͺ©λ‘ μœ„μΉ˜λ₯Ό μ •μ˜.

λΉ„μ •λ ¬ λͺ©λ‘ νƒœκ·Έ <ul> νƒœκ·Έλ‘œ μƒμ„±ν•˜κΈ° λ•Œλ¬Έμ— λΆˆλ¦Ώμ„ μ•ˆλ³΄μ΄κ²Œ ν•˜κ³ , λͺ©λ‘μ˜ 여백을 λͺ¨λ‘ 제거.

더보기

<ul> μš”μ†ŒλŠ” μ •λ ¬λ˜μ§€ μ•Šμ€ λͺ©λ‘(unordered list ) 즉, μˆœμ„œκ°€ μ€‘μš”ν•˜μ§€ μ•Šμ€ λͺ©λ‘μ„ λ‚˜νƒ€λ‚Ό λ•Œ μ‚¬μš©ν•œλ‹€. <ul> μš”μ†Œ μ•ˆμ— λ“€μ–΄κ°ˆ ν•­λͺ©μ˜ μˆœμ„œλ₯Ό 바꿨을 λ•Œ κ·Έ λͺ©λ‘μ˜ μ˜λ―Έλ„ λ°”λ€Œκ²Œ λœλ‹€λ©΄ <ul> 이 μ•„λ‹Œ <ol> νƒœκ·Έλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 λ°”λžŒμ§ν•˜λ‹€. <ul>κ³Ό <ol>의 직계 μžμ‹ μš”μ†Œλ‘œλŠ” 였직! <li> μš”μ†Œλ§Œ 올 수 μžˆλ‹€. <li> μš”μ†ŒλŠ” λ°‘μ—μ„œ 보닀 μžμ„Ένžˆ λ‹€λ£¨κ² μ§€λ§Œ, λͺ©λ‘ μ•ˆμ˜ ν•­λͺ©μœΌλ‘œ, <ul>κ³Ό <ol> μš”μ†ŒλŠ” μ΅œμ†Œ ν•˜λ‚˜ μ΄μƒμ˜ <li> μš”μ†Œλ₯Ό μžμ‹μœΌλ‘œ κ°€μ Έμ•Ό ν•œλ‹€.

 

좜처 : https://juheeexx.tistory.com/13

μŠ¬λΌμ΄λ“œ 이미지듀 쀑 μ²΄ν¬λœ 1개λ₯Ό μ œμ™Έν•œ λ‚˜λ¨Έμ§€λŠ” λͺ¨λ‘ 투λͺ…ν•˜κ²Œ ν•΄μ„œ 보이지 μ•Šλ„λ‘ ν•΄μ•Ό ν•˜λ―€λ‘œ "opacity: 0;" μ†μ„±μ„ μŠ¬λΌμ΄λ“œ κ° ν•­λͺ©("ul.imgs.li") ν΄λž˜μŠ€μ— μΆ”κ°€

<style>
    /* μŠ¬λΌμ΄λ“œ 이미지 λͺ©λ‘ μœ„μΉ˜ μ •μ˜ */
    ul.imgs {
        padding: 0;
        margin: 0;
    }

    ul.imgs li {
        position: absolute; /* μŠ¬λΌμ΄λ“œκ°€ κ²Ήμ³μ„œ λͺ¨μ—¬μ•Ό ν•˜λ―€λ‘œ absolute μ†μ„±μœΌλ‘œ 배치 */
        opacity: 0; /* μ²΄ν¬ν•œ λΌλ””μ˜€λ°•μŠ€ μˆœμ„œμ˜ μŠ¬λΌμ΄λ“œλ§Œ ν‘œμ‹œλ˜λ„λ‘ κΈ°λ³Έ 투λͺ…도 μ„€μ • */
        list-style: none;
        padding: 0;
        margin: 0;
    }
</style>

 

μ˜μ—­ 3 : class="bullets"

μŠ¬λΌμ΄λ“œλ₯Ό μ΄λ™ν•˜λŠ” 클릭 라벨은 μŠ¬λΌμ΄λ“œ κ°€μš΄λ° ν•˜λ‹¨μ— μ λ‹Ήνžˆ 간격을 λ„μ›Œμ„œ 배치

<style>
    /* μŠ¬λΌμ΄λ“œλ₯Ό μ΄λ™ν•˜λŠ” 클릭 라벨 */
    .bullets {
        position: absolute;
        left: 50%; /* κ°€λ‘œλ‘œ κ°€μš΄λ° μ •λ ¬ */
        transform: translateX(-50%);
        bottom: 20px; /* μŠ¬λΌμ΄λ“œ λ°‘μ—μ„œ 20px 간격 띄움 */
        z-index: 2; /* μŠ¬λΌμ΄λ“œ μœ„μ— 보이도둝 λ ˆμ΄μ–΄ μˆœμœ„λ₯Ό λ†’μž„ */
    }

    .bullets label {
        display: inline-block; /* ν•œ μ€„λ‘œ 뢈릿 λ‚˜μ—΄*/
        border-radius: 50%; /* μ›ν˜• 뢈릿으둜 처리 */
        background-color: rgba(0, 0, 0, 0.55);
        width: 20px; /* 뢈릿 λ„ˆλΉ„ */
        height: 20px; /* 뢈릿 높이 */
        cursor: pointer;
    }
</style>

 

뢈릿 색상 : CSS둜 μ›ν˜• λ„ν˜•μ„ λ§Œλ“€κ³ , 배경색을 반투λͺ… κ²€μ •μœΌλ‘œ ν‘œμ‹œ. (CSS : .bullets label)

μ •λ ¬ 된 λΆˆλ¦Ώ 라벨의 λͺ©λ‘(:nth-child(1~4))μ—μ„œ μ°¨λ‘€λŒ€λ‘œ μ²΄ν¬(:checked) κ°€ 될 것이고, 뒀에 λ‚˜μ˜€λŠ” (~) bullets(클래슀)>label:nth-child(1) λŠ” μ„ νƒν•΄μ„œ 배경색을 λ³€κ²½ν•œλ‹€λŠ” 뜻.

<style>
    /* 체크된 λΆˆλ¦Ώμ€ 배경색을 ν°μƒ‰μœΌλ‘œ λ³€κ²½ : ν˜„μœ„μΉ˜ ν‘œμ‹œ */
    .slider input[type=radio]:nth-child(1):checked ~ .bullets > label:nth-child(1) {
        background-color: #fff;
    } /* 첫 번째 λΌλ””μ˜€ λ°•μŠ€κ°€ 체크된 slider input[type=radio]:nth-child(1):checked 뒀에 λ‚˜μ˜€λŠ”
    .bullets > label:nth-child(1) 을 μ„ νƒν•΄μ„œ 배경색을 λ³€κ²½ν•œλ‹€λŠ” 뜻. */

    .slider input[type=radio]:nth-child(2):checked ~ .bullets > label:nth-child(2) {
        background-color: #fff;
    }

    .slider input[type=radio]:nth-child(3):checked ~ .bullets > label:nth-child(3) {
        background-color: #fff;
    }

    .slider input[type=radio]:nth-child(4):checked ~ .bullets > label:nth-child(4) {
        background-color: #fff;
    }
</style>

 

μŠ¬λΌμ΄λ“œ μ „ν™˜ 효과

λΌλ””μ˜€ λ°•μŠ€κ°€ 체크 되면 λΌλ””μ˜€ λ°•μŠ€μ˜ μˆœμ„œμ— λ§žλŠ” 이미지가 νˆ¬λͺ… μƒνƒœμ—μ„œ 뢈투λͺ… μƒνƒœλ‘œ λ°”λ€Œκ³ , μ „ν™˜ μ• λ‹ˆλ©”μ΄μ…˜μœΌλ‘œ 뢈투λͺ…ν•΄μ§€λŠ” 효과λ₯Ό λ§Œλ“ λ‹€.

μ• λ‹ˆλ©”μ΄μ…˜ μ‹œκ°„ "transition: 1s;"

<style>
    /* μŠ¬λΌμ΄λ“œ μ „ν™˜ 효과 */
    .slider input[type=radio]:nth-child(1):checked ~ ul.imgs > li:nth-child(1) {
        opacity: 1; /* κΈ°μ‘΄ 투λͺ…도 μ„€μ • */
        transition: 1s; /* μ• λ‹ˆλ©”μ΄μ…˜ μ‘°μ • : 1초 */
        z-index: 1; /* λ ˆμ΄μ–΄ μˆœμœ„λ₯Ό λ†’μž„ */
    }

    .slider input[type=radio]:nth-child(2):checked ~ ul.imgs > li:nth-child(2) {
        opacity: 1;
        transition: 1s;
        z-index: 1;
    }

    .slider input[type=radio]:nth-child(3):checked ~ ul.imgs > li:nth-child(3) {
        opacity: 1;
        transition: 1s;
        z-index: 1;
    }

    .slider input[type=radio]:nth-child(4):checked ~ ul.imgs > li:nth-child(4) {
        opacity: 1;
        transition: 1s;
        z-index: 1;
    }
</style>

 

μ—¬κΈ°κΉŒμ§€ ν–ˆλ‹€λ©΄ 잘 λ˜λŠ” 것을 λ³Ό 수 μžˆλ‹€.

 

λ‹€λ§Œ 밝은 배경의 색일 경우 이미지λ₯Ό μŠ¬λΌμ΄λ“œ ν•˜λ©΄μ€ λ²ˆμ©μ΄λŠ” λˆˆμ•„ν”ˆ ν˜„μƒμ„ λͺ©κ²©ν•  수 μžˆλ‹€.

μ–΄μš° λ‚΄λˆˆ

 

이λ₯Ό λ°©μ§€ν•˜κ³ μž.

 

μ„ μƒλ‹˜μ΄ λ˜μ‹œλŠ” λΈ”λ‘œκ·Έμ—μ„œλŠ” μ΄μ „μ˜ 이미지가 λΆˆνˆ¬λͺ…μ—μ„œ 투λͺ…μœΌλ‘œ μ „ν™˜λ˜λŠ” νš¨κ³Όμ— λ”œλ ˆμ΄λ₯Ό κ±Έμ–΄μ„œ 사λ₯΄λ₯΅ μ „ν™˜λ˜λŠ” 방법을 μ œμ•ˆν–ˆλ‹€.

<style>
    /* 밝은 μƒ‰μ˜ μ›ΉνŽ˜μ΄μ§€ λ°°κ²½μ—μ„œλŠ” μŠ¬λΌμ΄λ“œ λ³€κ²½μ‹œ μ• λ‹ˆλ©”μ΄μ…˜ μ‹œκ°„ λ™μ•ˆ 밝은 배경이 λΉ„μ³λ³΄μ΄λ©΄μ„œ λ²ˆμ©μ΄λŠ” ν˜„μƒμ„ 방지 */
    ul.imgs li {
        position: absolute;
        opacity: 0;
        list-style: none;
        padding: 0;
        margin: 0;
        transition-delay: 0.9s; /* νŠΈλžœμ§€μ…˜ 지연 μ‹œκ°„ 지정 */
    }
</style>

 

이 νš¨κ³Όκ°€ 적용이 λœλ‹€λ©΄,

편 γ…‘ μ•ˆ

 

이상 μˆ˜λ™ 이미지 μŠ¬λΌμ΄λ“œμ˜€λ‹€.

Contents

ν¬μŠ€νŒ… μ£Όμ†Œλ₯Ό λ³΅μ‚¬ν–ˆμŠ΅λ‹ˆλ‹€

이 글이 도움이 λ˜μ—ˆλ‹€λ©΄ 곡감 λΆ€νƒλ“œλ¦½λ‹ˆλ‹€.