티스토리 뷰

정리 노트

10주차-5일 slide

eyoadgkn 2023. 12. 15. 11:37

 

HTML
input type=radio <-> label 연결 버튼 체크를 통한 슬라이드 나타내기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="slidescript.css">
</head>
<body>
    <div class="section">
        <input type="radio" class="a" name="slide" id="slide01" checked>
        <input type="radio" class="a" name="slide" id="slide02">
        <input type="radio" class="a" name="slide" id="slide03">
  
        <div class="slidewrap">
           <ul class="slidelist">
              <li class="first">
                 <a>
                    <label for="slide03" class="left to3_1"></label>
                    <img src="./slide01.jpg" >
                    <label for="slide02" class="right to2_1"></label>
                 </a>
              </li>
              <li class="second">
                 <a>
                    <label for="slide01" class="left to1_2"></label>
                    <img src="./slide02.jpg">
                    <label for="slide03" class="right to3_2"></label>
                 </a>
              </li>
              <li class="third">
                 <a>
                    <label for="slide02" class="left to2_3"></label>
                    <img src="./slide03.jpg">
                    <label for="slide01" class="right to1_3"></label>
                 </a>
              </li>
           </ul>
        </div>
     </div>
input type="radio"한 것을 label의 for의 value와 동일하게 하고 서로 연결을 해줍니다.
*
{
    padding: 0;
    margin: 0;
    list-style: none;
    box-sizing: border-box;
    text-decoration:none;
}
input[ type=radio]
{
    display: none;
}
.section
{
    width:100%;
    /* height: 800px; */
    /* border: 1px solid red; */
    /* margin: 0 auto; */
}
.sliderwrap
{
    width:100%;
}
.slidelist
{
    width: 100%;
    white-space:nowrap;
    font-size:0;
    /* overflow:hidden; */
    /* border: 1px solid red; */
}
.slidelist li
{
    /* font-size:0; */
    width:100%;
    display: inline-block;
    position:relative;
    /* border:1px solid red; */
}
.slidelist li a 
{
    display:block;
}
img
{
    width: 100%;
}
.left
{
    position: absolute;
    background: url(./left.png) center center / 100% no-repeat;
    border: 1px solid #eee;
    top: 50%;
    left: 5%;
    transform:translate(-50%,-50%);
    width:30px;
    height:30px;
    cursor:pointer;
}
.right
{
    position: absolute;
    background: url(./right.png) center center / 100% no-repeat;
    border: 1px solid #eee;
    top: 50%;
    left: 95%;
    transform:translate(-50%,-50%);
    width:30px;
    height:30px;
    cursor:pointer;
}
.slidelist
{
    transition : all 1s;
}
#slide01:checked ~ .slidewrap .slidelist li
{
    transform:translate(0%);
    transition: all 1.5s;
}
#slide02:checked ~ .slidewrap .slidelist li
{
    transform:translate(-100%);
    transition: all 1.5s;
}
#slide03:checked ~ .slidewrap .slidelist li
{
    transform:translate(-200%);
    transition: all 1.5s;
}
css로 꾸며준 뒤에 slide 기능 구현을 위해 해당 슬라이드 체크할 시에  관련 슬라이드 화면이 보여지게 하기 위해 li자체에 이동관련 translate를 줬습니다


#slide01:checked ~ .slidewrap .slidelist li{    transform:translate(0%);    transition: all 1.5s;}
#slide02:checked ~ .slidewrap .slidelist li{    transform:translate(-100%);    transition: all 1.5s;}
#slide03:checked ~ .slidewrap .slidelist li{    transform:translate(-200%);    transition: all 1.5s;}

<script>
   var btn1_3 = document.querySelector(".to3_1");
   console.log(btn1_3);
   var btn1_2 = document.querySelector(".to2_1");
   console.log(btn1_2);
   var btn2_1 = document.querySelector(".to1_2");
   console.log(btn2_1);
   var btn2_3 = document.querySelector(".to3_2");
   console.log(btn2_3);
   var btn3_2 = document.querySelector(".to2_3");
   console.log(btn3_2);
   var btn3_1 = document.querySelector(".to1_3");
   console.log(btn3_1);
   
   // btn1_3.addEventListener("click",function(btn)
   // {
   //    console.log(btn);
   // });
      // console.log(first);
   btn1_3.addEventListener("click",move_2);
   btn1_2.addEventListener("click",move_1);
   btn2_1.addEventListener("click",move_0);
   btn2_3.addEventListener("click",move_2);
   btn3_2.addEventListener("click",move_1);
   btn3_1.addEventListener("click",move_0);
   var aa = document.querySelector('.slidelist');
   // page1
   function move_0()
   {
      console.log("0연결");
      // var slide1 = document.querySelector(".first");
      // var slide2 = document.querySelector(".second");
      // var slide3 = document.querySelector(".third");
      // console.log(slide1);
      // console.log(slide2);
      // console.log(slide3);
      // slide1.style.transform='translateX(0%)';
      // slide2.style.transform='translateX(0%)';
      // slide3.style.transform='translateX(0%)';

      aa.style.transform='translate(0%)';
   }
   // page2
   function move_1()
   {
      console.log("1연결");
      // var slide1 = document.querySelector(".first");
      // var slide2 = document.querySelector(".second");
      // var slide3 = document.querySelector(".third");
      // console.log(slide1);
      // console.log(slide2);
      // console.log(slide3);
      // slide1.style.transform='translateX(-100%)';
      // slide2.style.transform='translateX(-100%)';
      // slide3.style.transform='translateX(-100%)';
      aa.style.transform='translate(-100%)';
   }
   // page3
   function move_2()
   {
      console.log("2연결");
      // var slide1 = document.querySelector(".first");
      // var slide2 = document.querySelector(".second");
      // var slide3 = document.querySelector(".third");
      // console.log(slide1);
      // console.log(slide2);
      // console.log(slide3);
      // slide1.style.transform='translateX(-200%)';
      // slide2.style.transform='translateX(-200%)';
      // slide3.style.transform='translateX(-200%)';
      aa.style.transform='translate(-200%)';
      
   }
   
  </script>

  var btn1_3 = document.querySelector(".to3_1");   console.log(btn1_3); 
 var btn1_2 = document.querySelector(".to2_1");   console.log(btn1_2);   
var btn2_1 = document.querySelector(".to1_2");   console.log(btn2_1);   
var btn2_3 = document.querySelector(".to3_2");   console.log(btn2_3);   
var btn3_2 = document.querySelector(".to2_3");   console.log(btn3_2); 
 var btn3_1 = document.querySelector(".to1_3");   console.log(btn3_1);

js로 슬라이드를 구현할려고할 때 각자 버튼들의 클래스들을 만들어 준 뒤 변수를 통해 초기화를 해줬습니다.


 btn1_3.addEventListener("click",move_2);   
btn1_2.addEventListener("click",move_1);   
btn2_1.addEventListener("click",move_0);   
btn2_3.addEventListener("click",move_2); 
 btn3_2.addEventListener("click",move_1);   
btn3_1.addEventListener("click",move_0);

해당 클래스를 클릭 할 때 함수가 실행되도록 addEventListener로 연결을 시켜줬습니다.
각각의 함수들은 li 자체에 클래스를 주고 변수에 할당을 한 뒤, 변수에 css translate 의 값을 지정해줘서 다같이 움직이도록 설정을 했습니다.


 

'정리 노트' 카테고리의 다른 글

MySQL Chapter2/Chapter3[13-1]  (0) 2024.01.02
12주-4일차  (0) 2023.12.29
10주차-3일  (0) 2023.12.13
10주차-2일  (0) 2023.12.12
8주차-1일  (0) 2023.11.27
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함