controller.control을 사용해서 연동했을 때 오류가 하나 발생했다.

swiper의 width값을 100%로 설정했을 경우,

개발자도구 확인 결과 브라우저 창 크기를 늘였다 줄였다 할 때마다 width값이 반영이 안됐다. 

loopedSlides로 두 스와이퍼의 duplication을 맞춰봐도 여전히 오류 해결불가..ㅜㅜ

물론 폰or태블릿 으로만 접속했을 시 상관없지만 

pc접속 시 사용자가 임의로 창 크기를 늘였다 줄였다 할 경우 슬라이드가 삐꾸난다.

 

그래서 그냥 다른 연동법을 씀.

 

<html>

<div class="whole">
    <div class="inner">
        <div class="swiper-container-main">
            <div class="swiper-wrapper">
                <div class="swiper-slide">SLIDE 1</div>
                <div class="swiper-slide">SLIDE 2</div>
                <div class="swiper-slide">SLIDE 3</div>
                <div class="swiper-slide">SLIDE 4</div>
            </div>
        </div>
    </div>
</div>

<div class="whole sub_slide">
    <div class="inner">
        <div class="swiper-container-sub">
            <div class="swiper-wrapper">
                <div class="swiper-slide">SLIDE 1</div>
                <div class="swiper-slide">SLIDE 2</div>
                <div class="swiper-slide">SLIDE 3</div>
                <div class="swiper-slide">SLIDE 4</div>
            </div>
        </div>
    </div>
</div>

 

<css>

* {
  padding: 0; margin: 0;
}	

.whole {
		overflow: hidden;
		max-width: 100%;
		margin: auto;
	  }

	  .whole.sub_slide {
		width: 500px;
   		margin-top:20px;
	  }

	  .inner {
		position: relative;
	  }
	  
	  .swiper-container-main,
	  .swiper-container-sub {
		width: 100%;
		height: 100%;
		overflow: visible;
	  }

	  .swiper-slide {
		text-align: center;
		font-size: 18px;
		background: #fff;
		width: 100%;
		display: flex;
		justify-content: center;
		align-items: center;
		transition: opacity 0.5s ease;
	  }

	  .swiper-slide:nth-of-type(2n){
		background-color: #ff690b;
	  }
	  .swiper-slide:nth-of-type(2n+1){
		background-color: #00b047;
	  }
	  .swiper-slide:nth-of-type(4n){
		background-color: #eed571;
	  }

 

<js>

  	const swiper2 = new Swiper('.swiper-container-sub', {
	  slidesPerView: 1,
	  spaceBetween: 0,    
  
	  effect:"fade",
	  fadeEffect: {
	  crossFade: true
	  },
	  loop: true,
	  loopedSlides:4,
	});
  
	const swiper = new Swiper('.swiper-container-main', {
	  slidesPerView: 1,
	  spaceBetween: 0,    
	  loop: true,
	  loopedSlides:4,
	  autoplay: {
        delay:2500,
       },
	  thumbs: {
		  swiper: swiper2,
	  }, 
	});

이 때 swiper-container-main 을 swiper-container-sub보다 나중에 써 준다.

thumbs 때문인데 swiper2를 먼저 위에서 정의해야 thumbs가 swiper2를 인식해서 작동한다.

 

결론은 thumbs가 포함 된 스와이퍼를 가장 밑에 써줘야한다.

 

thums 를 사용하니 pc에서 width값으로인한 오류는 발생하지 않았다. 

swiper를 controller로 연동시킬 때 두 개가 서로 묘하게 어긋나면서 돌아가는 오류가 발생했다.

그 때 loopedSlides를 설정해서 오류를 잡았는데 

이 옵션은 loop 시 파라미터의 duplicate 갯수를 설정해준다.

 

뭔지 감이 안 와서 개발자도구를 켜 봤다.

 

loopedSlides를 설정하지 않은 상태

1/3 2/3 3/3 는 내가 설정한 슬라이드, 그리고 앞 뒤로 duplicate 즉 복제된 슬라이드가 하나씩 있다.

여기까진 평범하게 빙빙 돌아가는 슬라이드의 모습이다. 

 

 

loopedSlides: 3 설정했을 때

 

1/3 2/3 3/3이 앞 뒤로 복제됐다.

 

 

그러니까 두 개의 스와이퍼 연동 시 오류가 발생했을 때 

각각의 스와이퍼의 duplicate 된 갯수가 일치하는지 확인해보고 맞지 않는다면 loopedSlides를 설정해 맞춰줬더니 

서로 잘 맞물려서 돌아갔다.

$(function(){
  $(window).scroll(function(){
       실행코드 입력
  })
})

 

요구사항

모바일 헤더는 배경 투명하게 해주는데 슬라이더 아래로 스크롤다운하면

배경 흰 색으로, border bottom 추가해서 

내용과 구분되도록 만들어주세요

 

짱 쉽 다

See the Pen Untitled by yeaseula (@yeaseula) on CodePen.

일단 헤더는 flxed 해두고 

if문으로 원하는만큼 스크롤 다운 했을 때 header에 css를 추가해주는 코드를 짠다.

 

scroll down을 표현하는 애니메이션 아이디어

 

See the Pen Untitled by yeaseula (@yeaseula) on CodePen.

 

'개발 > css scss' 카테고리의 다른 글

z-index 적용 안된다면?  (0) 2022.10.23
span 태그 속성 이해하기 (+div와 차이점)  (0) 2022.09.16

 

화면 중앙을 기준으로 마우스커서 이미지를 다르게 변경해야한다. 

커서가 좌측에 있을 땐 <-, 우측에 있을 땐 -> 이런모양으로..

 

물론 브라우저 크기를 줄이면 기준점이 되는 위치도 새롭게 계산되어야한다.

 

 

css / scss

.cursor_L {cursor: url(/files/attach/images/main/arr.png), auto}
.cursor_R {cursor: url(/files/attach/images/main/arr-left.png), auto}

 

javascript

$(document).ready(function(){

    $(document).mousemove(function(e){

        var htmlWidth = $('html').width();
        var num = Number(htmlWidth);
        var res = parseInt(num / 2);

        if(e.pageX < res){
            $('html').addClass('cursor_R');
            $('html').removeClass('cursor_L');
        }else {
            $('html').addClass('cursor_L');
            $('html').removeClass('cursor_R');
        }
    });
});

 

마우스가 움직일 때 마다 실행되는 함수이다.

즉, 마우스가 움직일 때 마다 html의 넓이를 계산한다.

 

창을 줄여도 다시 window 안에 마우스커서가 위치하는 순간 함수가 실행되어 줄어든 html 넓이를 계산해준다!

 

이런 방식을 응용해서 다양한 조건에서 마우스 커서를 자유롭게 바꿀 수 있을듯..!

 

 

처음에 이걸 만들어달래서 ...? 했는데 

아주 기본적인 자바스크립트만으로도 만들 수 있는 가성비 내려오는 효과였다ㅋㅋ

+ Recent posts