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"> </label>
<label for="slide2"> </label>
<label for="slide3"> </label>
<label for="slide4"> </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>
μ΄ ν¨κ³Όκ° μ μ©μ΄ λλ€λ©΄,
μ΄μ μλ μ΄λ―Έμ§ μ¬λΌμ΄λμλ€.