JavaScript 는 간단 한 라운드 맵 효 과 를 실현 합 니 다.
윤 방도:한 모듈 이나 창 에서 컴퓨터 에서 마 우 스 를 클릭 하고 핸드폰 에서 손가락 이 미 끄 러 지면 여러 장의 그림 을 볼 수 있다.이 그림 들 은 모두 윤 방도 이 고 이 모듈 을 윤 방도 라 고 부른다.
어떻게 라운드 방송 도 를 실현 합 니까?
어떻게 해야만 js 안에서 윤 방 도 를 만 들 수 있 습 니까?예 를 들 어 아래 와 같은 것 은 그림 에 대응 하 는 작은 원점 을 자동 으로 생 성 할 수 있 고 좌우 화살 표를 클릭 하면 위 나 다음 그림 으로 뛰 어 올 라 갈 수 있 으 며 몇 초 마다 자동 으로 윤 방 할 수 있 으 며 작은 원점 을 클릭 하여 지정 한 그림 으로 갈 수 있 습 니 다.
HTML 구조
먼저 우 리 는 HTML 페이지 를 만 듭 니 다.이 구 조 는 매우 간단 합 니 다.큰 div 로 두 개의 div 를 끼 워 넣 고 이름 을 slider 라 고 합 니 다.위의 div 는 그림 을 담 는 데 사 용 됩 니 다.이름 을 slider-img 이 라 고 합 니 다.아래 의 div 는 바로 컨트롤 입 니 다.다음 그림 을 담 는 버튼 과 작은 원점 입 니 다.이것 은 slider-ctrl 이 라 고 합 니 다.
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/index.css"/>
<script src="../public.js"></script>
<script src="./js/index.js"></script>
</head>
<body>
<div class="slider" id="slider">
<div class="slider-img">
<ul>
<li><a href="#"><img src="images/1.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/2.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/3.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/4.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/5.jpg" alt=""/></a></li>
<li><a href="#"><img src="images/6.jpg" alt=""/></a></li>
</ul>
</div>
<div class="slider-ctrl">
//
<span class="prev" id="prev"></span>
<span class="next" id="next"></span>
</div>
</div>
</body>
</html>
CSS 코드css 코드 는 매우 간단 합 니 다.
* {
margin: 0;
padding: 0;
}
.slider {
width: 310px;
height: 265px;
margin: 100px auto;
position: relative;
overflow: hidden;
}
.slider-img {
width: 310px;
height: 220px;
}
ul {
list-style: none;
}
li {
position: absolute;
top: 0;
left: 0;
}
.slider-ctrl {
text-align: center;
padding-top: 10px;
}
.slider-ctrl-con {
display: inline-block;
width: 24px;
height: 24px;
background: url(../images/icon.png) no-repeat -24px -780px;
text-indent: -99999px;
margin: 0 5px;
cursor: pointer;
}
.slider-ctrl-con.current {
background-position: -24px -760px;
}
.prev,.next {
position: absolute;
top: 40%;
width: 30px;
height: 35px;
background: url(../images/icon.png) no-repeat;
}
.prev {
left: 10px;
}
.next {
right: 10px;
background-position: 0 -44px;
}
js 코드먼저 수요 분석 을 하고 생각 을 정리 한 다음 에 한 걸음 한 걸음 코드 를 써 야 한다.우 리 는 먼저 관련 요 소 를 가 져 온 다음 에 그림 의 수량 에 따라 대응 하 는 작은 원점 을 생 성 합 니 다.그림 이 쌓 여 있 기 때문에 우 리 는 다른 그림 을 모두 오른쪽 에 숨 기 고 첫 번 째 그림 을 표시 하면 됩 니 다.그 다음 에 첫 번 째 작은 도 트 를 밝 혀 서 작은 도 트 와 그림 이 연결 되 어 있 도록 해 야 합 니 다.그 다음 에 우 리 는 오른쪽 화살 표를 클릭 하여 다음 그림 을 보고 왼쪽 화살 표를 클릭 하여 위의 그림 을 보고 작은 원점 을 클릭 하면 해당 하 는 그림 을 표시 할 수 있 으 며 모두 상대 적 인 그림 을 밝 혀 야 한다.마지막 으로 그 로 하여 금 자동 으로 그림 을 돌려 서 마 우 스 를 옮 길 때 윤방 을 멈 추고 마 우 스 를 옮 길 때 계속 윤방 하 게 하 는 것 이다.
window.onload = function(){
// 0
//
var slider = document.getElementById('slider');
// li
var imgLiS = slider.children[0].children[0].children;
//
var ctrlDiv = slider.children[1];
// ( )
var prev = document.getElementById('prev')
// ( )
var next = document.getElementById('next')
//
var width = slider.offsetWidth;
//
var index = 0;
// 1
for(var i=imgLiS.length-1;i>=0;i--){
var newPoint = document.createElement('span');
// ,
newPoint.className = "slider-ctrl-con";
newPoint.innerHTML = i;
//
ctrlDiv.insertBefore(newPoint,ctrlDiv.children[0])
// 2
imgLiS[i].style.left = width+"px"
}
// 2
imgLiS[index].style.left = 0;
//
var ctrlS = ctrlDiv.children;
// 3
light()
// 4 ,
prev.onclick = prevImg;
// 5 ,
next.onclick = nextImg;
// 6 , ,
for(var i=0;i<imgLiS.length;i++){
ctrlS[i].onclick = function(){
var num = +this.innerHTML;
if(num>index){
//
imgLiS[num].style.left = width+"px";
//
move(imgLiS[index],'left',-width)
//
move(imgLiS[num],'left',0)
}
if(num<index){
//
imgLiS[num].style.left = -width+"px";
//
move(imgLiS[index],'left',width)
//
move(imgLiS[num],'left',0)
}
// index
index = num;
//
light()
}
}
// 7 : 3
var timer = setInterval(nextImg,3000)
// 8
slider.onmouseenter = function(){
clearInterval(timer)
}
// 9
slider.onmouseleave = function(){
clearInterval(timer)
timer = setInterval(nextImg,3000)
}
// ,
function light(){
for(var i=0;i<imgLiS.length;i++){
ctrlS[i].className = "slider-ctrl-con"
}
ctrlS[index].className = "slider-ctrl-con current"
}
//
function prevImg(){
var num = index-1;
if(num<0){
// 0, 0 , , length-1
num = imgLiS.length-1;
}
//
imgLiS[num].style.left = -width+"px";
//
move(imgLiS[index],'left',width)
//
move(imgLiS[num],'left',0)
// num
// index num
index = num;
light()
}
//
function nextImg(){
var num = index + 1;
if(num>imgLiS.length-1){
num = 0;
}
//
imgLiS[num].style.left = width+"px";
//
move(imgLiS[index],'left',-width)
//
move(imgLiS[num],'left',0)
// index
index = num;
light()
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.