ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • flex && Array로 slide만들기(2)
    Web/JavaScript 2020. 1. 29. 04:07

    ☺️ 이전 글 

     

    flex && Array로 slide만들기(1)

    내가 만든 슬라이드 : * .view-ver와 사진후보 array는 grid로 구분되어 있다. 사진 후보들인 .best-scene이 Array로 아래에 깔려 있고 사용자가 그 중 하나를 클릭(onclick)하면 해당 .best-scene의 background-..

    humonnom.tistory.com

    html과 css 설정은 이전 글에서 다뤘고 이번 글에서는 js 설정만 다룬다.

     

    <처음 계획 : 사용자가 사진의 왼쪽 반쪽을 누르면 ?>

    (1) div.viewVer 현재 background-image를 구한다.

    (2) 현재 background-image 가 array에서 몇 번째 인지 확인하고 거기서 -1 해서

    그 사진이 div.viewVer의   new background-image 가 되도록 한다.

    (3) 사용자가 사진의 왼쪽 반쪽을 누르면 현재 보고 있는 사진의 왼쪽 사진을 볼 수 있게 된다.

     

    <문제점 : array가 url로 되어있다.>

    console.log(viewVer.style.backgroundImage)를 했을 때, 내가 기대했던 것은

    https://어쩌고저쩌고.png

    같은 이미지의 url이었다.

    그런데 출력된 url은

    url("https://어쩌고저쩌고.123.png")

    와 같이 url()에 둘러쌓인 상태였다.

     

    <해결방법(1) : 정규식으로 url만 추출해내기>

    정규식 표현을 사용하여 url만 추출해내려고 했다.

    다른 사람들이 만든 url추출 정규식 표현을 수정하여 적용해보았지만 원하는 결과가 나오지 않았다.

    "https://어쩌고저쩌고.123.png""

    까지 만드는 데 성공했지만 마지막에 하나 더 붙은 " 큰 따옴표를 결국 없애지 못해서

    정규식 표현은 다음에 제대로 배워보는 걸로 하고 다른 방법을 찾았다.

     

    <해결방법(2) : split으로 원하는 부분만 잘라쓰기>

    이번에 이용한 image 소스들은 전부 내가 올린 tiystory글에서 url을 따왔기 때문에, url의 대부분이 일치했다.

    예를 들면 이런식으로 ⬇︎ 점(.)을 기준으로 어떤 부분만 서로 달랐다.

     

     

     

    그래서 일단

    현재 viewVer.style.backgroundImage를 구해서 split으로 쪼갰다.

    * split(".")이렇게 쓰면 점을 기준으로 쪼개진다. split("/") 이렇게 쓰면 슬래쉬 기준으로

     

    url("https://어쩌고저쩌고.123.png")가 점을 기준으로 이렇게 세 조각으로 쪼개졌다.

     

     

    내가 필요한 건 123 숫자 부분이니까 점으로 쪼갠 세 조각 중에

    ❷번째(index: [1])를 extractedurl로 설정했다.

    *index는 [0]부터 시작하니까 두번째 조각의 index가 [1]이 된다.

     

     

    그러고 나서 123조각을 다시 완전한 url소스로 둔갑시킨다.

    `https://어쩌고저쩌고.${extractedUrl}.png`

    그리고 나서 currentBackUrl이라는 이름을 부여한다.

     

    currentBackUrl원래 이 이미지가 들어있던 array 에 넣어서 몇 번째 순서였는지를 알아낸다.

    bestSrcBackup.indexOf(currentBackUrl)

     

    그러면 최근 배경화면의 url의 index를 알 수 있다.

    console.log(c

     

     

    만약에 c가 0과 같다면 리스트의 첫번째 소스이기 때문에 왼쪽으로 더 이상 갈수가 없다.

    이런 경우는 맨 마지막 사진으로 갈 수 있도록 설정해주고

    c가 0과 같지 않다면 현재 배경화면인 사진의 왼쪽으로 한 칸 이동할 수 있도록

    -1을 해주면 된다.

     

    <오른쪽 반쪽의 경우>

    왼쪽과 기본적으로 동일한 과정을 반복한다.

    다만 오른쪽 onclick의 경우는 

    c가 가장 마지막 소스일 경우를 생각해 주면 된다.

    이렇게 설정하면 마지막 이미지와 첫번째 이미지가 연결되는 효과를 볼 수 있다.

    사진 리스트를 한 번 돌고나면 다시 맨 처음으로 돌아가는 것.

     

    실제 소스는 아래 깃헙 참조

    🕹github: https://github.com/humonnom/wheres-miranda.git

    'Web > JavaScript' 카테고리의 다른 글

    flex && Array로 slide만들기(1)  (0) 2020.01.29
    Miranda Card Game: 완성  (0) 2020.01.26
    ESLInt  (0) 2020.01.07
    Nomad coders - wetube clone coding  (0) 2020.01.07
    사진으로 슬라이드 만들기  (0) 2019.12.17

    댓글

Designed by Tistory + Edited by Juepark