자 바스 크 립 트 회전 라운드 맵 구현
이 효 과 는 이 렇 습 니 다.모두 7 장의 그림 이 있 습 니 다.그들 은 자동 으로 왼쪽으로 미 끄 러 집 니 다.그리고 좌우 화살 표 는 라운드 그림 의 왼쪽 미끄럼 과 오른쪽 미끄럼 을 제어 할 수 있 습 니 다.또한 마우스 가 그림 에 멈 추 면 라운드 그림 은 자동 으로 미 끄 러 지 는 것 을 멈 추고 마우스 가 이동 할 때 계속 왼쪽으로 돌아 갑 니 다.
우선,저 는 두 개의 함 수 를 봉 인 했 습 니 다.(jQuery 를 아직 배우 지 않 았 기 때문에 봉 인 된 함수 의 방법 으로 이 루어 졌 습 니 다)첫 번 째 함 수 는$함수 입 니 다.호출 하면 html 의 요 소 를 얻 을 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
`function $(select){
if (typeof select != 'string') {
console.log(' ');
return null;
}
var firstChar = select.charAt(0);
switch(firstChar){
case '#':
return document.getElementById(select.substr(1));
break;
case '.':
if (document.getElementsByClassName){
return document.getElementsByClassName(select.substr(1));
} else {
var result = [];
var allElemnts = document.getElementsByTagName('*');
console.log(allElemnts);
for (var i = 0; i < allElemnts.length; i++){
var e = allElemnts[i];
var className = e.className;
var classArr = className.split(' ');
for (var j = 0; j < classArr.length; j++){
var c = classArr[j];
if (c == select.substr(1)) {
result.push(e);
break;
}
}
}
return result;
}
break;
default :
return document.getElementsByTagName(select);
}
}`
두 번 째 함 수 는 애니메이션 함수 로 json 으로 여러 스타일 의 동적 변 화 를 실현 하여 하나의 애니메이션 효 과 를 얻 을 수 있 습 니 다.코드 는 다음 과 같 습 니 다.
function animate(element, json, fun) {
clearInterval(element.timer);
function getStyle(element, styleName){
if(element.currentStyle){
//ie currentstyle
//return element.currentStyle.heigh;
return element.currentStyle[styleName];
}else{
var computedStyle = window.getComputedStyle(element,null);
return computedStyle[styleName];
}
}
var isStop = false;
element.timer = setInterval(function () {
isStop = true;
for (var key in json){
var target = json[key];
var current;
if (key == 'opacity') {
//
current = parseFloat(getStyle(element, key)) || 1;
} else {
//
current = parseInt(getStyle(element, key)) || 0;
}
var step = (target - current) / 10;
if (key != 'opacity') {
step = step > 0 ? Math.ceil(step) : Math.floor(step);
}
current += step;
if (key == 'opacity') {
if (Math.abs(target - current) > 0.01) {
isStop = false;
} else {
current = target;
}
element.style.opacity = current + '';
} else {
if (Math.abs(target-current) > Math.abs(step)) {
isStop = false;
} else {
current = target;
}
if (key == 'zIndex'){
element.style.zIndex = Math.round(current);
} else {
element.style[key] = current + 'px';
}
}
}
if (isStop) {
clearInterval(element.timer);
console.log(' ');
if (typeof fun == 'function') {
fun();
}
}
}, 30);
}`
다음은 html 부분 을 써 야 합 니 다.그림 이 몇 장 밖 에 없 기 때문에 html 부분 은 간단 합 니 다.
<body>
<div class="box">
<div class="content">
<ul>
<li><a href="#"><img src="./images/1.jpg"></a></li>
<li><a href="#"><img src="./images/2.jpg"></a></li>
<li><a href="#"><img src="./images/3.jpg"></a></li>
<li><a href="#"><img src="./images/4.jpg" class="current"></a></li>
<li><a href="#"><img src="./images/5.jpg"></a></li>
<li><a href="#"><img src="./images/6.jpg"></a></li>
<li><a href="#"><img src="./images/7.jpg"></a></li>
</ul>
</div>
<div class="control">
<a href="javascript:;" id="prev"></a>
<a href="javascript:;" id="next"></a>
</div>
</div>
</body>
css 스타일 의 부분 도 서술 을 많이 하지 않 습 니 다.다음은 JS 부분 입 니 다.코드 도 간단 합 니 다.정리 하면 됩 니 다.
window.onload = function(){
// ,
var json = [{
width: 630,
top: 23,
left: 0,
zIndex: 2,
opacity: 0
},{
width: 630,
top: 23,
left: 0,
zIndex: 3,
opacity: 0
},{
width: 630,
top: 23,
left: 0,
zIndex: 4,
opacity: 0.6
},{
width: 730,
top: 0,
left: 125,
zIndex: 5,
opacity: 1
},{
width: 630,
top: 23,
left: 350,
zIndex: 4,
opacity: 0.6
},{
width: 630,
top: 23,
left: 350,
zIndex: 3,
opacity: 0
},{
width: 630,
top: 23,
left: 350,
zIndex: 2,
opacity: 0
}];
function refreshImageLocatin(index){
// i i
//index=1 i i-1
// i i-index
var liArr = $('li');
for(var i = 0; i < liArr.length; i++){
var li = liArr[i];
var locationIndex = i - index;
console.log('i='+i);
console.log('index='+index);
console.log('locationIndex='+locationIndex);
if(locationIndex < 0){
locationIndex += 7;
}
var locationData = json[locationIndex];
animate(li, locationData, null);
}
}
refreshImageLocatin(0);
var index = 0;
$('#next').onclick = function(){
index++;
if(index == 7){
index = 0;
}
refreshImageLocatin(index);
}
$('#prev').onclick = function(){
index--;
if(index < 0){
index = 6;
}
refreshImageLocatin(index);
}
var nextImage = $('#next').onclick;
var contentBox = $('.content')[0];
//
var timer = setInterval(nextImage, 3000);
// ,
contentBox.onmouseover = function(){
clearInterval(timer);
}
contentBox.onmouseout = function(){
timer = setInterval(nextImage ,3000)
}
}
이상 은 회전 라운드 맵 의 모든 내용 입 니 다.자신의 학습 과정 에 간단 한 기록 을 하 는 동시에 공 고 히 하 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.