VScode/JavaScript
[JavaScript] Image
hvoon
2022. 9. 8. 17:54
getElementById
-자바스크립트에서 바디 안의 id 셀렉터 값을 지목하는 방법
-document.getElementById("아이디값")
onmouseover
-해당 태그에 마우스 포인터가 올라가면 일어나는 이벤트
onmouseout
-해당 태그에서 마우스 포인터가 밖으로 벗어나면 일어나는 이벤트
1. 마우스로 이미지 변환
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image01.html</title>
<script type="text/javascript">
function changeImageg01(){
document.getElementById("img1").src="images/5.jpg";
} // 마우스를 올리면 변하는 이미지
function changeImage02(){
document.getElementById("img1").src="images/1.jpg";
} // 마우스가 이미지에서 벗어나면 나타나는 이미지
function changeImage03(){
document.getElementById("img1").src="images/3.jpg";
} // 마우스로 클릭하면 변하는 이미지
</script>
</head>
<body>
<img src="images/1.jpg" id="img1" onclick="changeImage03();"
onmouseover="changeImageg01();" onmouseout="changeImage02();"
/>
</body>
</html>
2. 이미지 이름 입력받아서 이미지 변환
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image02.html</title>
<script type="text/javascript">
// 그림을 클릭하면 숫자하나를 입력 받아서
// "숫자.jpg" 파일로 그림을 바꾸는 코드를 완성
function change01(){
var number=prompt('number(1~10)','1');
var filename="images/"+number+".jpg";
document.getElementById("target").src=filename;
}
</script>
</head>
<body>
<img src="images/1.jpg" id="target" onclick="change01();" />
</body></html>
3. 마우스 클릭으로 지정된 범위까지 이미지 변환
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image03.html</title>
<script type="text/javascript">
// 클릭하면 이미지가 지정한 범위까지 순서대로 변함
var imgNum=1;
function changeImg(){
imgNum++;
if(imgNum>10) imgNum=1;
// 이미지 번호가 10 이후에는 1.jpg로 돌아감
document.getElementById("target").src="images/"+imgNum
+".jpg";
}
</script>
</head>
<body>
<img src="images/1.jpg" id="target" onclick="changeImg();"/>
</body>
</html>
4. 지정된 범위까지 자동으로 이미지 변환
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image04.html</title>
<script type="text/javascript">
// 1초에 한번씩 다음 이미지로 바뀌게 코딩. 그림은 1.jpg~10.jpg까지
var imgNum=1;
window.setInterval(function changeImg(){
imgNum++;
if(imgNum>10) imgNum=1;
document.getElementById("target").src="images/"+imgNum+".jpg";
},1000);
</script>
</head>
<body>
<img src="images/1.jpg" id="target">
</body>
</html>
5. clearInterval()
-함수를 종료시키는 명령어
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image05.html</title>
<script type="text/javascript">
var imgNum=1;
var timer;
function start(){
// timer 변수로 멈출 명령을 정의함
timer=window.setInterval(function(){
imgNum++;
if(imgNum>10) imgNum=1;
document.getElementById("target").src="images/"+imgNum
+".jpg";
},1000);
}
function stop(){
window.clearInterval(timer)
}
</script>
</head>
<body onload="start();"> // 창을 실행시킬 때부터 start() 함수가 시작됨
<img src="images/1.jpg" id="target" onmouseover="stop();"
onmouseout="start();" >
// 이미지에 마우스를 올리면 변화하던 이미지가 멈춤
</body>
</html>
6. 마우스로 함수 2개를 실행/정지 번갈아 시키기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Image06.html</title>
<style type="text/css">
#a1{position:absolute; width:170px; height:255px;
border:2px solid black; top:100px;}
</style>
<script type="text/javascript">
// 한개의 타이머는 시계방향으로 0.5초마다 20도씩 회전하는 동작
// 또 한개의 타이머는 반시계방향으로 0.5초마다 20도씩 회전하는 동작
// onMouseOver와 onMouseOut 이벤트에 연결하여 코딩
var aa=0;
var timer1, timer2;
function clockwise(){
window.clearInterval(timer2);
timer1=window.setInterval(function(){
aa+=20;
document.getElementById("a1").style.webkitTransform=
'rotate('+aa+'deg)';},500);
}
function counterclockwise(){
window.clearInterval(timer1);
timer2=window.setInterval(function(){
aa-=20;
document.getElementById("a1").style.webkitTransform=
'rotate('+aa+'deg)';},500);
}
</script>
</head>
<body onload="clockwise();">
<div id="a1" onmouseout="clockwise();"
onMouseOver="counterclockwise();">
<img src="images/1.jpg" >
</div>
</body>
</html>
css style을 이용한 이미지 슬라이드 제작하기
1. 마우스 클릭으로 다음 이미지 넘기기
-document.getElementById("").style.left
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll01.html</title>
<style type="text/css">
#view{position:relative; width:170px; height:255px;
border:3px solid blue; left:100px; overflow:hidden;}
// view: 이미지가 나타날 id
// overflow: hidden으로 설정하여 #imgs가 지정된 범위를 제외하고 안 보임
#imgs{position:absolute; width:850px; height:255px;
border:1px dashed red; transition: 0.2s;}
// imgs: 이미지를 이어 붙인 id
</style>
<script type="text/javascript">
var imgNum=0;
// 이동 거리 계산 때문에 초기값은 1보단 0으로 하는게 좋음
function moveImg(){
imgNum++;
if(imgNum>4) imgNum=0;
var dist=imgNum*170*(-1);
// 왼쪽으로 이미지 크기(170px)만큼 이동함
document.getElementById("imgs").style.left=dist+"px";
}
</script>
</head>
<body>
<div id="view">
<div id="imgs" onclick="moveImg();">
<img src="images/1.jpg"><img src="images/2.jpg"><img src="images/3.jpg"><img src="images/4.jpg"><img src="images/5.jpg">
// 이미지를 이어서 써야 float 명령으로 일렬로 출력됨
</div>
</div>
</body>
</html>
2. 이미지 위에 마우스 올리면 정지, 마우스가 이미지에서 벗어나면 실행
-document.getElementById("").style.left
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll02.html</title>
<style type="text/css">
#view{position:relative; width:170px; height:255px;
border:3px solid blue; left:100px; overflow:hidden;}
#imgs{position:absolute; width:850px; height:255px;
left:0; border:1px dashed red; transition: 0.2s;}
</style>
<script type="text/javascript">
// 타이머를 이용해서 시작부터 자동으로 움직이게 하되
// 마우스가 올라가면 멈추고 마우스가 빠져나가면 다시 움직임
var timer;
var imgNum=0;
// 이동 거리 계산 때문에 초기값은 1보단 0으로 하는게 좋음
function moveImg(){
timer=window.setInterval(function(){
imgNum++;
if(imgNum>4) imgNum=0;
var dist=imgNum*170*(-1);
document.getElementById("imgs").style.left=dist+"px";
},1000);
}
function stop(){
window.clearInterval(timer);
}
</script>
</head>
<body onLoad="moveImg();">
<div id="view" onmouseout="moveImg();" onmouseover="stop();">
<div id="imgs" >
<img src="images/1.jpg"><img src="images/2.jpg"><img src="images/3.jpg"><img src="images/4.jpg"><img src="images/5.jpg">
</div>
</div>
</body>
</html>
3. 투명도 이용해서 이미지 슬라이드 만들기
-document.getElementById('').style.opacity
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll03.html</title>
<style type="text/css">
#view{position:relative; width:170px; height:255px;
border:1px solid blue; left:100px;}
.imgs{position:absolute; top:0; left:0; opacity:0;
transition:1s;}
.imgs:first-child{opacity:1;}
// 처음에 나타나는 이미지는 투명도 1로 하여 선명하게 나타나게 함
</style>
<script type="text/javascript">
var imgNum=1;
window.setInterval(function(){
// document.getElementById("imgs"+imgNum).style.opacity='0';
for(var i=1; i<=5; i++)
document.getElementById("imgs"+i).style.opacity='0';
// 현재 화면에 보여야할 이미지가 나오기 전에 모든 이미지 투명으로
imgNum++;
if(imgNum>5) imgNum=1;
document.getElementById("imgs"+imgNum).style.opacity='1';
},1000);
</script>
</head>
<body>
<div id="view">
<div class="imgs" id="imgs1"><img src="images/1.jpg"></div>
<div class="imgs" id="imgs2"><img src="images/2.jpg"></div>
<div class="imgs" id="imgs3"><img src="images/3.jpg"></div>
<div class="imgs" id="imgs4"><img src="images/4.jpg"></div>
<div class="imgs" id="imgs5"><img src="images/5.jpg"></div>
</div>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll04.html</title>
<style type="text/css">
#view{position:relative; width:170px; height:255px;
border:1px solid blue; left:100px;}
.imgs{position:absolute; top:0; left:0; opacity:0;
transition:1s;}
.imgs:first-child{opacity:1;}
</style>
<script type="text/javascript">
// 순서대로 fadein 하되 마우스가 올라가면 멈춤, 나가면 다시 시작하게 코딩
var timer;
var imgNum=1;
function moveImg(){
timer=window.setInterval(function(){
document.getElementById("imgs"+imgNum).style.opacity='0';
imgNum++;
if(imgNum>5) imgNum=1;
document.getElementById("imgs"+imgNum).style.opacity='1';
},1000);
}
function stop(){
window.clearInterval(timer);
}
</script>
</head>
<body onload="moveImg">
<div id="view" onmouseout="moveImg();" onmouseover="stop();">
<div class="imgs" id="imgs1"><img src="images/1.jpg"></div>
<div class="imgs" id="imgs2"><img src="images/2.jpg"></div>
<div class="imgs" id="imgs3"><img src="images/3.jpg"></div>
<div class="imgs" id="imgs4"><img src="images/4.jpg"></div>
<div class="imgs" id="imgs5"><img src="images/5.jpg"></div>
</div>
</body>
</html>
4. transform 이용하기
-document.getElementById("").style.webkitTransform
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll05.html</title>
<style type="text/css">
ul{list-style:none; margin:0; padding:0;}
ul li{position:relative; float:left; padding:0;
margin:0px; overflow:hidden;}
.caption{position:absolute; width:300px; height:200px;
top:200px; background:black; opacity:0.7;
transition:0.5s;}
.caption h1, .caption p{color:white; text-align:center;}
</style>
<script type="text/javascript">
function caption_up(x){
document.getElementById("cap"+x).style.webkitTransform=
"translateY(-200px)";
} // 마우스를 이미지에 올리면 id cap이 올라옴
function caption_down(x){
document.getElementById("cap"+x).style.webkitTransform=
"translateY(+200px)";
} // 마우스가 이미지에서 벗어나면 id cap 내려감
</script>
</head>
<body>
<ul>
<li onmouseover="caption_up(1)" onmouseout="caption_down(1)">
<img src="images/prod1.jpg">
<div class="caption" id="cap1">
<h1>상품1</h1><p>상품1:설명텍스트</p><p>가격:12,234원</p>
</div>
</li>
<li onmouseover="caption_up(2)" onmouseout="caption_down(2)">
<img src="images/prod2.jpg">
<div class="caption" id="cap2">
<h1>상품2</h1><p>상품2:설명텍스트</p><p>가격:12,234원</p>
</div>
</li>
<li onmouseover="caption_up(3)" onmouseout="caption_down(3)">
<img src="images/prod3.jpg">
<div class="caption" id="cap3">
<h1>상품3</h1><p>상품3:설명텍스트</p><p>가격:12,234원</p>
</div>
</li>
</ul>
</body>
</html>
5. 버튼 아이콘을 만들어 지정된 이미지로 이동하기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll06.html</title>
<style type="text/css">
#view{position:relative; width:600px; height:400px;
margin:0 auto; border:1px dashed black; overflow:hidden;}
#imgs{position:absolute; width:4800px; height:400px;
left:0; top:0; border:1px dashed red; transition:0.3s;}
img{width:600px; height:400px;}
#remote{position:relative; width:200px; height:50px;
border:1px solid white; margin:0 auto; top:350px;
text-align: center;}
ul{list-style:none; padding:0; margin:0;
display:inline-block;}
ul li{float:left; width:14px; height:14px;
background:white; border-radius: 50%; margin:18px 4px;}
</style>
<script type="text/javascript">
// style의 left값을 이용해서 각 버튼에 맞는 이미지가 화면에
// 나타나도록 코딩
function move(x){
document.getElementById("imgs").style.left=(-1)*600*(x-1)+"px";
}
</script>
</head>
<body>
<div id="view">
<div id="imgs"><img src="images/Koala.jpg" id="img1"><img src="images/Chrysanthemum.jpg" id="img2"><img src="images/Desert.jpg" id="img3"><img src="images/Hydrangeas.jpg"><img src="images/Jellyfish.jpg"><img src="images/Lighthouse.jpg"><img src="images/Penguins.jpg"><img src="images/Tulips.jpg"></div>
<div id="remote">
<ul>
<li onclick="move(1)"></li>
<li onclick="move(2)"></li>
<li onclick="move(3)"></li>
<li onclick="move(4)"></li>
<li onclick="move(5)"></li>
<li onclick="move(6)"></li>
<li onclick="move(7)"></li>
<li onclick="move(8)"></li>
</ul>
</div>
</div>
</body>
</html>
6. 좌우 버튼을 생성하여 이미지 넘기기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll07.html</title>
<style type="text/css">
#view{position:relative; width:600px; height:400px;
margin:0 auto; border:1px dashed black; overflow: hidden;}
#imgs{position:absolute; width:4800px; height:400px;
left:0; top:0; border:1px dashed red; transition:0.3s;}
img{width:600px; height:400px;}
#lbutton{position:absolute; left:0; bottom:0; width:50px;
height:50px; border-radius:50%; overflow:hidden;
background-image:url("images/ico_movie_171115.png");
background-position:-60px -460px;}
#rbutton{position:absolute; right:0; bottom:0; width:50px;
height:50px; border-radius:50%; overflow:hidden;
background-image:url("images/ico_movie_171115.png");
background-position:0px -460px;}
</style>
<script type="text/javascript">
var imgNum=0;
function moveleft(){
if(imgNum==0) return; // end function
imgNum--;
document.getElementById("imgs").style.left=imgNum*(-1)*600+"px";
}
function moveright(){
if(imgNum==7) return; // end function
imgNum++;
document.getElementById("imgs").style.left=imgNum*(-1)*600+"px";
}
function move(x){
if(x==-1&&imgNum==0)return;
else if(x==1&&imgNum==7) return;
else if(x==-1&&imgNum>0) imgNum--;
else if(x==1&&imgNum<7) imgNum++;
document.getElementById("imgs").style.left=imgNum*-600+"px";
}
</script>
</head>
<body>
<div id="view">
<div id="imgs"><img src="images/Koala.jpg" id="img1"><img src="images/Chrysanthemum.jpg" id="img2"><img src="images/Desert.jpg" id="img3"><img src="images/Hydrangeas.jpg"><img src="images/Jellyfish.jpg"><img src="images/Lighthouse.jpg"><img src="images/Penguins.jpg"><img src="images/Tulips.jpg"></div>
<div id="lbutton" onclick="move(-1);"></div>
<div id="rbutton" onclick="move(1);"></div>
</div>
</body>
</html>
7. 시작/정지 버튼을 생성하여 이미지 넘기기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll08.html</title>
<style type="text/css">
#view{ position:relative; width:600px; height:400px;
margin:0 auto; border:1px dashed black; overflow: hidden;}
#imgs{ position:absolute; width:4800px; height:400px;
left:0px; top:0; border:1px dashed red; transition: 0.3s; }
img{ width:600px; height:400px; }
#remot{ position:relative; width:200px; height:50px;
border:1px solid white; margin:0 auto; top:350px;
text-align: center;}
#remot ul{ list-style:none; margin:0; padding:0;
display:inline-block;}
#remot ul li{ float:left; width:25px; height:25px;
background:white; border-radius: 50%;
margin:13px 10px; line-height:25px;
text-align:center; cursor: pointer;}
</style>
<script type="text/javascript">
// play : 이미지를 한장씩 1초 또는 2초마다 넘기며 보여줌
// 이미지의 끝(7번)에 다다르면 맨 처음 이미지로 이동.
// stop : 이미지 자동 rolling 을 멈춤.
// 이미지 롤링은 페이지 시작시 동작하면서 시작하게 작성
var imgNum=0;
var timer;
function play(){
timer = window.setInterval(function(){
imgNum++;
if(imgNum>7)imgNum=0;
var dist = -600*imgNum;
document.getElementById("imgs").style.left = dist + 'px';
}, 1500);
}
function stop(){
window.clearInterval(timer);
}
</script>
</head>
<body onload="play()">
<div id="view">
<div id="imgs"><img src="images/Koala.jpg"><img src="images/Chrysanthemum.jpg"><img src="images/Desert.jpg"><img src="images/Hydrangeas.jpg"><img src="images/Jellyfish.jpg"><img src="images/Lighthouse.jpg"><img src="images/Penguins.jpg"><img src="images/Tulips.jpg"></div>
<div id="remot">
<ul>
<li onClick="play()">▶</li>
<li onClick="stop()">■</li>
</ul>
</div>
</div>
</body>
</html>
8. 시작/정지 버튼 번갈아가며 나타나게 함
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>ImageControll09.html</title>
<style type="text/css">
#view{position:relative; width:600px; height:400px;
margin:0 auto; border:1px dashed black; overflow:hidden;}
#imgs{position:absolute; width:4800px; height:400px;
left:0; top:0; border:1px dashed red; transition:0.3s;}
img{width:600px; height:400px;}
#remote{position:relative; width:200px; height:50px;
border:1px solid white; margin:0 auto; top:350px; }
#remote div{position:relative; width:25px; height:25px;
background:white; border-radius: 50%;
line-height:25px; text-align: center;
cursor:pointer; margin:13px auto;}
</style>
<script type="text/javascript">
var imgNum=0;
var timer;
var state=false;
// 현재 플레이 상태인지, 멈춤상태인지 저장할 변수
// document.getElementById("btn").innerHTML='■';
// document.getElementById("btn").innerHTML='▶';
function play_stop(){
if(state==true){
// 현재 플레이중(버튼에 '■'가 표시되어 있는 중 버튼 클릭)
// -> 동작은 멈추고 버튼 표시는 '▶'로 전환
state=false;
window.clearInterval(timer);
document.getElementById("btn").innerHTML='▶';
} else{
// 현재 멈춰있는 중(버튼에 '▶'가 표시되어 있는 중 버튼 클릭)
// -> 동작은 멈추고 버튼 표시는 '■'로 전환
state=true;
document.getElementById("btn").innerHTML='■';
timer=window.setInterval(function(){
imgNum++;
if(imgNum>7) imgNum=0;
document.getElementById("imgs").style.left=imgNum*-600+"px";
},1000);
}
}
</script>
</head>
<body onload="play_stop()">
<div id="view">
<div id="imgs"><img src="images/Koala.jpg" id="img1"><img src="images/Chrysanthemum.jpg" id="img2"><img src="images/Desert.jpg" id="img3"><img src="images/Hydrangeas.jpg"><img src="images/Jellyfish.jpg"><img src="images/Lighthouse.jpg"><img src="images/Penguins.jpg"><img src="images/Tulips.jpg"></div>
<div id="remote">
<div id="btn" onclick="play_stop()">■</div>
</div>
</div>
</body>
</html>