inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

초보자도 만들 수 있는 스크롤 인터렉션. 1편 자바스크립트

2-1 [코드설명] 기초다지기! 이동할 거리 백분율 구하는 방법

100% 가 아니라 156%가 나와요.

194

tt t

작성한 질문수 8

0

js 문제인가 싶어 선생님 소스를 그대로 갖다 써봤는데도 결과물 최대치가 156%가 나옵니다. 

css 문제인가도 싶은데 당췌 뭐가 잘못된건지 모르겠어요.

<body>

    <div class="wrap">
        <section class="sec01">
            <article class="content">
                <div class="progress">
                    <span class="bar"></span>
                    <p class="txt">0%</p>
                </div>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>
                가<br>

            </article>
        </section>
    </div>
</body>
.content {
  width1000px;
  margin100px auto; }
  .content .progress {
    positionfixed;
    left50%;
    top500px;
    width70%;
    height100px;
    margin-left-35%;
    border1px solid #222;
    text-aligncenter;
    line-height100px; }
    .content .progress .bar {
      displayblock;
      width0%;
      height100%;
      background-color#111; }

var text = $(".progress .txt");
var progressBar = $(".progress .bar");

function getPercent() {
    var scrollHeight = $('.sec01').height();
    var scrollRealHeight = (scrollHeight - $(window).height());
    var winScrollTop = $(window).scrollTop();
    var scrollPercent = (winScrollTop / scrollRealHeight) * 100;
    var textPercent = Math.floor(scrollPercent);

    render(textPercentscrollPercent);

}

function render(textPercentscrollPercent) {
    text.text(textPercent + "%");
    progressBar.css({
        width: scrollPercent + "%"
    });
}



function init() {
    getPercent();
}
$(window).scroll(function () {
    getPercent();
})
init();

javascript 인터랙티브-웹 HTML/CSS jquery

답변 1

0

깡코딩

안녕하세요 :)

섹션2-1의 스크롤 높이는  sec01엘리먼트를 기준으로 합니다. 그쵸!?

(조금 더 확실한 해답이 궁금하다면 섹션5를 참고하세요)

해결방법.1

그럴경우 하위 요소인 content에 마진값을 넣을경우 스크롤 높이가 달라져 스크롤 값이 더 크게 나오게 됩니다.   content요소에 margin 이 아닌 패딩을 사용해보세요!

해결방법.2

섹션2-1에서 스크롤 엘리먼트의 높이값은 사용자가 고정 값으로 설정한게 아니라

폰트의 길이로 설정되도록 되어있죠??

그럴경우 웹폰트의 다운 속도가 느린 환경에서 스크롤 높이를 제대로 가지고 오지 못하는 상황이 생길 수 있습니다.

이런 문제까지 고려해서 프로그래밍을 하고 싶다면 속도는 조금 느리지만

$(function(){}) <- 도큐먼트 레디가 아닌

window.onload  = function(){} <- 온로드 이벤트를 사용해보세요!

속도는 조금 느리지만 모든 요소를 로드하기 때문에 안전하답니다 :)

조금 더 확실한 해답이 궁금하다면 섹션5까지 수업을 진행해 보시고 그래도 모르겠다면 다시 한번 질문 주시면 될 것 같습니다 :)

그럼 또다른 궁금증이 생길때 문의주세요 ^^

다음강의 언제나오나요 다음강의는 인터렉티브한 전체적인 웹사이트였으면 좋겠네요

0

212

1

반응형에 대해 질문이 있습니다 !

0

382

1

날짜 카운트를 활용하여 시간으로 적용해볼 수 있나요?

0

388

1

함수가 정의되기 전에 함수 호출

0

353

1

섹션12 보너스 챕터에 관한 질문입니다!

0

477

1

5-3-1 강좌 섹션 질문 합니다.

0

324

1

죄송합니다만 해당 프로젝트를 리엑트로 수정해서 만들어보고있는중에 질문드립니다.

1

480

3

화면 높이 관련 질문 있습니다.

1

439

1

선생님

0

378

1

5-2 vanilla.html 질문합니다.

0

428

1

5-3-2 질문입니다.

1

302

1

5-2 추가 질문이요

0

361

2

5-2 ! 질문이요.

0

270

1

안녕하세요!

0

276

1

질문드립니다.

1

370

2

질문드립니다.

0

1677

3

색션6강 카운트관련 문의드립니다!

0

246

1

섹션5 관련 질문드립니다.

0

268

1

setProperty 를 재활용 하고싶습니다.

0

216

1

IntersectionObserver

0

260

1

offsetheight와 scrollheight

0

401

1

완성된코드를 그대로 가져왔는데 크기가 이상해요

0

435

2

2:56에 10씩 증가시키는건 어떻게 하신건가요?

0

320

1

<script>에 $(function(){})으로 감싸준 이유

0

212

1