inflearn logo
강의

Khóa học

Chia sẻ kiến thức

Bắt đầu phát triển web tương tác đúng cách

nâng cao! Cuộn 3D 17

1분이가 계속 한자리에만 생기는데요. info.xPos가 일분이에게 안들어가는거 같아요. 놓친부분이 있는거겠죠?

Đã giải quyết

217

LEETY

3 câu hỏi đã được viết

0

(function(){//즉시 실행 함수
    const stageElem = document.querySelector('.stage');
    const houseElem = document.querySelector('.house');
    const barElem = document.querySelector('.progress-bar');
    const mousePos = {x:0,y:0};
    let maxScrollValue;


    function  resizeHandler(){
        maxScrollValue = document.body.offsetHeight - window.innerHeight;
    }

    window.addEventListener('scroll',function(){
        // pageYoffset 스크롤 한 값
        // console.log(this.pageYOffset);
        // 스크롤 범위 지정하기
        // console.log( pageYOffset/maxScrollValue);
        const scrollPer = pageYOffset/maxScrollValue
        const zMove =scrollPer*970 -490;
        houseElem.style.transform = 'translateZ('+zMove+'vw)';
        // progress bar
        barElem.style.width = scrollPer *100 + '%';
    })





    window.addEventListener('mousemove',function(e){
        // console.log(e.clientX,e.clientY) 마우스 위치 알아내기
        mousePos.x = -1+(e.clientX /window.innerWidth)*2;
        mousePos.y = 1-(e.clientY /window.innerHeight)*2;

        stageElem.style.transform='rotateX('+(mousePos.y*5)+'deg) rotateY('+(mousePos.y*5)+'deg)';
        // console.log(mousePos);
    })
    window.addEventListener('resize',resizeHandler)
    resizeHandler();

    stageElem.addEventListener('click',function(e){

        // console.log(e.clientX/window.innerWidth*100)
            new Character({//객체의 속성으로 넣어야 함. 다른 것들도 추가해야 하기때문에
                xPos :e.clientX/window.innerWidth*100
            });


    })


})()
function Character(info) {
    this.mainElem = document.createElement('div');
    this.mainElem.classList.add('charactor');
    this.mainElem.innerHTML = '' +
        ' <div class="character" >' +
            ' <div class="character-face-con character-head">' +
                '<div class="character-face character-head-face face-front"></div>' +
                '<div class="character-face character-head-face face-back"></div>' +
            '</div>' +
            ' <div class="character-face-con character-torso">' +
                '<div class="character-face character-torso-face face-front"></div>' +
                '<div class="character-face character-torso-face face-back"></div>' +
            ' </div>' +
            '<div class="character-face-con character-arm character-arm-right">' +
                ' <div class="character-face character-arm-face face-front"></div>' +
                ' <div class="character-face character-arm-face face-back"></div>' +
            '</div>' +
            '  <div class="character-face-con character-arm character-arm-left">' +
                '<div class="character-face character-arm-face face-front"></div>' +
                '<div class="character-face character-arm-face face-back"></div>' +
            '</div>' +
            '  <div class="character-face-con character-leg character-leg-right">' +
                '<div class="character-face character-leg-face face-front"></div>' +
                '<div class="character-face character-leg-face face-back"></div>' +
            '</div>' +
            '  <div class="character-face-con character-leg character-leg-left">' +
                '<div class="character-face character-leg-face face-front"></div>' +
                '<div class="character-face character-leg-face face-back"></div>' +
            '</div>' +
        '</div>';

        document.querySelector('.stage').appendChild(this.mainElem);


        this.mainElem.style.leftinfo.xPos+'%';
}

인터랙티브-웹 javascript HTML/CSS

Câu trả lời 2

0

LEETY

감사합니다!

0

studiomeal

function Character() 에서 오타가 있습니다.

this.mainElem.classList.add('charactor');

charactor를 character로 바꾸어주세요~ 클래스 이름이 제대로 안들어가서 선택이 안되는 문제였습니다.

this.mainElem.classList.add('character');

왼쪽/오른쪽 동작시 딜레이 문제

0

93

1

변수 범위 관련 질문

0

106

1

perspective 문의

0

101

1

생성자 함수를 클래스 함수로 변경 하고 this 오류 관련

0

150

1

스크롤이 중간 위치에 있을 때 창의 크기를 변환하면 생기는 문제

0

127

1

animation이벤트 질문이요!

0

71

1

resize handler에서 질문이 있습니다.

0

111

1

카드 뒤집힐 때 F가 보인 이유

0

149

1

3d 뒤집기 추가효과

0

218

1

전진! 3D 스크롤 21 강의 질문

1

171

1

eventlistener 질문

0

149

1

zMove 를 1000으로 설정하는 이유에 대하여.

0

168

1

[정보-23강] ES6 class 문법으로 공부하시는 분들!! 화살표 함수로도 시도해보셔요!

1

191

1

동적으로 html 생성 후 이벤트 위임 질문 있습니다.

0

266

1

rotateY()에서 deg에 따른 차이

0

197

1

코드 작성 순서

0

276

1

이미지가 없는데 첨부파일을 다운 받는 방법이 있나요??

1

394

1

'이벤트 위임 보강 영상'에 있는 예제 html이 안 보입니다

0

265

2

섹션5 자바스크립트 이벤트 다루기 질문

1

243

1

[#전진! 3D 스크롤 11] mousePos 공식 질문 있습니다!

0

423

2

css 는 직접 작성을 해야하는걸까용?

0

326

1

translateZ 에 px 이 아닌 vw 로 값을 주신 이유가 있을가요?

0

361

2

house 부분에도 width , height 부분을 꽉 차게 주신 부분이 제가 이해한게 맞는지 궁금합니다.

0

305

2

left:-400vw 가 아닌 translateZ(100vw); 을 입력하신 이유가 궁금합니다.

0

306

2