js 라운드 맵 의 전체 코드 구현
1.작은 땡땡이 위 에 마 우 스 를 올 려 윤 방
2.포커 스 버튼 을 눌 러 라운드 방송
3.이음매 없 는 자동 윤 방
윤 방도 의 원리:
일련의 크기 가 같은 그림 을 평평 하 게 깔 고 CSS 레이아웃 을 이용 하여 한 장의 그림 만 표시 하고 나머지 는 숨 깁 니 다.편 이 량 계산(애니메이션 함수 봉인)을 통 해 자동 으로 재생 하거나 이벤트 클릭 을 통 해 그림 을 전환 합 니 다.
html 레이아웃:
<div id="box" class="all">
<div class="inner"> <!-- -->
<ul>
<li><a href="#"><img src="images/18.jpg" width="550" height="320" alt=""></a></li>
<li><a href="#"><img src="images/19.jpg" width="550" height="320" alt=""></a></li>
<li><a href="#"><img src="images/14.jpg" width="550" height="320" alt=""></a></li>
<li><a href="#"><img src="images/17.jpg" width="550" height="320" alt=""></a></li>
</ul>
<ol> <!-- -->
</ol>
</div>
<div class="focusD" id="arr">
<span id="left"><</span>
<span id="right">></span>
</div>
</div>
css 스타일:
* {
margin: 0;
padding: 0;
}
/*<-- -->*/
img {
vertical-align: top;
}
.all {
width: 550px;
height: 320px;
margin: 100px auto;
padding: 5px;
border: 1px solid #ccc;
position: relative;
}
.inner {
position: relative;
width: 550px;
height: 320px;
background-color: pink;
overflow: hidden;
}
.inner ul {
width: 1000%;
list-style: none;
position: absolute;
top: 0;
left: 0;
}
.inner ul li {
float: left;
}
.focusD {
position: absolute;
left: 0;
top: 50%;
width: 550px;
padding: 0 10px;
height: 30px;
box-sizing: border-box;
display: none;
}
.inner ol {
position: absolute;
right: 30px;
bottom: 10px;
}
.inner ol li {
width: 15px;
display: inline-block;
height: 15px;
margin: 0 3px;
cursor: pointer;
line-height: 15px;
text-align: center;
background-color: #fff;
}
/* */
.inner ol .current {
background-color: orange;
color: #fff;
}
.focusD span {
display: inline-block;
width: 25px;
font-size: 24px;
height: 30px;
color: #ccc;
line-height: 30px;
text-align: center;
background: rgba(255, 255, 255, 0.3);
cursor: pointer;
}
#left {
float: left;
}
#right {
float: right;
}
효과 보이 기:js 부분:
다음 에 우 리 는 js 코드 를 써 야 한다.우선 우리 가 필요 로 하 는 모든 요 소 를 가 져 와 야 한다.주:my$("id")즉 document.getElement ById 입 니 다.간편 하 게 만 드 는 방법 입 니 다.
var index=0;
// div
var box = my$("box");
//
var inner = box.children[0];
//
var imgWidth = inner.offsetWidth;
// ul
var ulObj = inner.children[0];
// ul li
var list = ulObj.children;
// ol
var olObj = inner.children[1];
//
var arr = my$("arr");
그 다음 에 우 리 는 작은 버튼 인 작은 원점 을 만 들 고 마우스 로 이벤트 에 들 어 가 는 것 을 등록 해 야 합 니 다.그 전에 우 리 는 작은 원점 1,2,3 은 죽은 것 이 아니 라 얼 리 의 그림 장수 에 따라 결정 되 기 때문에 우 리 는 먼저 js 에서 div 의 ol 에 li(즉 작은 원점)를 추가 하고 얼 리 의 그림 몇 li 에 색인 값 을 추가 하여 다음 작업 을 할 수 있 도록 해 야 합 니 다.
// ----- ul li
for (var i = 0; i < list.length; i++) {
var liObjs = document.createElement("li");
olObj.appendChild(liObjs);
liObjs.innerHTML = (i + 1);
// ol li ,
liObjs.setAttribute("index", i);
//
liObjs.onmouseover = function () {
//
for (var j = 0; j < olObj.children.length; j++) {
olObj.children[j].removeAttribute("class");
}
//
this.className = "current";
// ol li
index = this.getAttribute("index");
// ul
animate(ulObj, -index * imgWidth); //
};
}
// ol li
olObj.children[0].className = "current";
이음매 없 는 스크롤 을 실현 하려 면 첫 번 째 그림 을 복제 하여 맨 뒤에 놓 아야 합 니 다.
// ol li
ulObj.appendChild(ulObj.children[0].cloneNode(true));
다음 단 계 는 좌우 버튼 을 누 르 면 윤방 이 이 루어 집 니 다.
//
my$("right").onclick=clickHandle;
function clickHandle() {
if (index==ulObj.children.length-1){
ulObj.style.left=0+"px";
index=0;
}
index++;
animate(ulObj,-index*imgWidth);
if (index==list.length-1){
olObj.children[0].className="current";
olObj.children[olObj.children.length-1].className="";
}else {
for (var i=0;i<olObj.children.length;i++){
olObj.children[i].className="";
}
olObj.children[index].className="current";
}
};
//
my$("left").onclick=function () {
if (index==0){
index=list.length-1;
ulObj.style.left=-index*imgWidth+"px";
}
index--;
animate(ulObj,-index*imgWidth);
for (var i=0;i<olObj.children.length;i++){
olObj.children[i].className="";
}
olObj.children[index].className="current";
};
마지막 단 계 는 자동 으로 돌아 가 는 것 입 니 다.즉,타 이 머 를 만 들 수 있 습 니 다.일정 시간 마다 좌우 단 추 를 누 르 는 클릭 이 벤트 를 호출 합 니 다.단 추 를 누 르 는 것 과 같 습 니 다.하지만 마 우 스 를 액자 에 넣 을 때 타 이 머 를 제거 해 야 합 니 다.그렇지 않 으 면 클릭 할 때 자동 으로 돌아 가 는 것 을 주의해 야 합 니 다.전체 js 코드:
<script>
var index=0;
// div
var box = my$("box");
//
var inner = box.children[0];
//
var imgWidth = inner.offsetWidth;
// ul
var ulObj = inner.children[0];
// ul li
var list = ulObj.children;
// ol
var olObj = inner.children[1];
//
var arr = my$("arr");
// ----- ul li
for (var i = 0; i < list.length; i++) {
var liObjs = document.createElement("li");
olObj.appendChild(liObjs);
liObjs.innerHTML = (i + 1);
// ol li ,
liObjs.setAttribute("index", i);
//
liObjs.onmouseover = function () {
//
for (var j = 0; j < olObj.children.length; j++) {
olObj.children[j].removeAttribute("class");
}
//
this.className = "current";
// ol li
index = this.getAttribute("index");
// ul
animate(ulObj, -index * imgWidth); //
};
}
// ol li
olObj.children[0].className = "current";
// ol li
ulObj.appendChild(ulObj.children[0].cloneNode(true));
var timeId=setInterval(clickHandle,3000);
my$("box").onmouseover=function(){
arr.style.display="block";
clearInterval(timeId);
};
//
my$("right").onclick=clickHandle;
function clickHandle() {
if (index==ulObj.children.length-1){
ulObj.style.left=0+"px";
index=0;
}
index++;
animate(ulObj,-index*imgWidth);
if (index==list.length-1){
olObj.children[0].className="current";
olObj.children[olObj.children.length-1].className="";
}else {
for (var i=0;i<olObj.children.length;i++){
olObj.children[i].className="";
}
olObj.children[index].className="current";
}
};
//
my$("left").onclick=function () {
if (index==0){
index=list.length-1;
ulObj.style.left=-index*imgWidth+"px";
}
index--;
animate(ulObj,-index*imgWidth);
for (var i=0;i<olObj.children.length;i++){
olObj.children[i].className="";
}
olObj.children[index].className="current";
};
my$("box").onmouseout=function(){
arr.style.display="none";
timeId=setInterval(clickHandle,3000);
};
// ,
function animate(element, target) {
clearInterval(element.timeId);
element.timeId = setInterval(function () {
var current = element.offsetLeft;
var step = 9;
step = current > target ? -step : step;
current += step;
if (Math.abs(target - current) > Math.abs(step)) {
element.style.left = current + "px";
} else {
clearInterval(element.timeId);
element.style.left = target + "px";
}
}, 10);
}
function my$(id) {
return document.getElementById(id);
}
</script>
하 이 라이트 주제 공유:jQuery 사진 윤 방자 바스 크 립 트 사진 윤 방부 트 스 트랩 사진 윤 방이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.