전체 화면이 굴러가는 원리는 무엇입니까?css의 어떤 속성을 사용했습니까?(필기시험)
14842 단어 fullpagejavascript
//html
<div id="wrap">
<div id="main">
<div id="page1" class="page"></div>
<div id="page2" class="page"></div>
<div id="page3" class="page"></div>
<div id="page4" class="page"></div>
</div>
</div>
랩 블록은 창에서 볼 수 있는 부분입니다. js를 통해 창의 시각적 크기를 가져오고
overflow:hidden
속성으로 설정하여 창에 스크롤 바가 나타나지 않고 창 크기의 한 페이지만 표시할 수 있습니다.main 영역을 설정하고relative로 지정하며main 블록의 top 속성을 바꾸어 서로 다른 페이지를 전환합니다. 구체적인 css 코드는 다음과 같습니다.html,body{
margin:0;
padding:0;
}
#wrap{
width:100%;
overflow:hidden;
background:#111;
}
#main{
width:100%;
background:#222;
position:relative;
}
.page{
width:100%;
margin:0;
}
js 코드의 주요 부분은 스크롤 이벤트에 대한 함수 귀속이다. 대부분의 브라우저는
mousewheel
이벤트를 제공했고Firefox 3.5+는 지원하지 않지만 같은 역할을 하는 이벤트를 지원한다: DOMMouseScroll
.mousewheel
이벤트: event.wheelDelta
가 되돌아오는 경우 롤러가 위로 굴러가는 것을 의미한다.DOMMouseScroll
이벤트: event.detail
가 되돌아오는 경우 마이너스 값은 롤러가 위로 굴러가는 것을 설명하고 페이지당 높이는 document.body.clientHeight
+px이다.구체적인 코드는 다음과 같습니다.var pages = document.getElementsByClassName('page');
var wrap = document.getElementById('wrap');
var len = document.documentElement.clientHeight;
var main = document.getElementById('main');
wrap.style.height=len+"px";
for(var i=0;i<pages.length;i++){
pages[i].style.height=len+"px";
}
if(navigator.userAgent.toLowerCase().indexOf('firefox') !=-1){
document.addEventListener("DOMMouseScroll",scrollFun);
}else if(document.addEventListener){
document.addEventListener("mousewheel",scrollFun,false);
}else if(document.attachEvent){
document.attachEvent("onmousewheel",scrollFun);
}else{
document.onmousewheel=scrollFun;
}
var startTime = 0;
var endTime = 0;
var now = 0;
function scrollFun(e){
startTime = new Date().getTime();
var event = e || window.event;
var dir = event.detail || -event.wheelDelta;
if(startTime - endTime > 1000){
if(dir>0 && now > -3*len){
now -= len;
main.style.top = now + "px";
endTime = new Date().getTime();
}else if(dir<0 && now < 0){
now += len;
main.style.top=now+"px";
endTime=new Date().getTime();
}
}else{
event.preventDafault();
}
}
주: 상기 내용은 기타 대신코드를 참고합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
v-bind를 사용하여 CSS에 대한 Vue3 상태애플리케이션을 더 동적으로 만들기 위해 Vue는 동적 상태를 템플릿 내부의 마크업에 연결할 수 있도록 합니다. 예를 들어 특정 기준이 충족되는 경우에만 요소에 클래스를 적용할 수 있습니다. 그러나 구성 요소 상태가 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.