728x90
반응형
1. 이벤트
1.1 mousemove
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css">
<title>jquery</title>
<style>
#position{
width: 250px;
height: 60px;
background-color: lightgrey;
}
#position>span{
background-color: lightpink;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on('mousemove',function(e){
$("#page-x>b").text(e.pageX) //page-x아이디의 자식 b에 접근해라.
$("#page-y>b").text(e.pageY)
})
})
</script>
</head>
<body>
<div id="position">
<span id ="page-x">pageX: <b>0</b>px</span>
<span id ="page-y">pageY: <b>0</b>px</span>
</div>
</body>
</html>
- mousemove 이벤트는 마우스 커서의 위치를 표시해준다.
- text로 값을 반환한다.
- 매개변수 e를 넣어 e.pageX는 마우스의 X좌표, e.pageY는 마우스의 Y좌표를 보여준다.
1.2 mouseup, mousedown
<head>
~
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on({
"mouseup":function(e){
console.log("mouseup!")
},
"mousedown":function(e){
console.log("mousedown!")
}
})
})
</script>
</head>
- mouseup은 좌클릭 하고난 후 클릭을 떼어낼 때 콘솔창에 mouseup!을 표시한다.
- mousedown은 좌클릭 했을 때 콘솔창에 mousedown!을 표시한다.
<head>
~
<style>
#my-div{
width: 200px;
height: 60px;
background-color: antiquewhite;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on({
"mouseup":function(e){
$("#my-div>span>b").text(e.type)
},
"mousedown":function(e){
$("#my-div>span>b").text(e.type)
}
})
})
</script>
</head>
<body>
<div id="my-div"><span>status: <b>0</b></span></div>
</body>
- 마우스 클릭 상태를 웹 브라우저에 직접 출력하기 위해선 매개변수 e를 넣고 text 타입으로 e.type을 반환받으면 클릭의 상태를 표시해준다.
2. 애니메이션
2.1 버튼으로 show(), hide() 애니메이션 예제
<head>
~
<style>
#my-div{
width: 100px;
height: 100px;
background-color: aquamarine;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#hide-btn").on('click',function(){
$("#my-div").hide(2000)
});
$("#show-btn").on('click',function(){
$("#my-div").show(2000)
});
})
</script>
</head>
<body>
<button id="hide-btn">hide</button>
<button id="show-btn">show</button>
<div id="my-div"></div>
</body>
2.2 토글 버튼으로 show(), hide() 애니메이션 예제
<head>
~
<style>
#my-div{
width: 100px;
height: 100px;
background-color: aquamarine;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#toggle-btn").on('click', function(){
$("#my-div").toggle(2000) //toggle은 클릭할때 마다 두가지 기능을 갖도록 되어있다. 무옵션이면 hide, show 메소드가 실행된다.
})
})
</script>
</head>
<body>
<button id="toggle-btn">toggle</button>
<div id="my-div"></div>
</body>
2.3 버튼으로 slideDown(),slideUp() 애니메이션 예제
<head>
~
<style>
#my-div{
width: 100px;
height: 100px;
background-color: aquamarine;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#slide-up-btn").on('click', function(){
$("#my-div").slideUp(2000,function(){
alert('slideUp완료!')
})
});
$("#slide-down-btn").on('click', function(){
$("#my-div").slideDown(2000, function(){
alert('slideDown완료!')
})
});
})
</script>
</head>
<body>
<button id="slide-up-btn">slideUp</button>
<button id="slide-down-btn">slideDown</button>
<div id="my-div"></div>
</body>
2.4 버튼으로 fadeToggle(), fadeIn(), fadeOut() 애니메이션 예제
<head>
~
<style>
#my-div{
width: 100px;
height: 100px;
background-color: aquamarine;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#fade-toggle-btn").on('click', function(){
$("#my-div").fadeToggle(2000, function(){
alert("fade-toggle 성공!")
})
});
})
</script>
</head>
<body>
<button id="fade-toggle-btn">fadeToggle</button>
<div id="my-div"></div>
</body>
<head>
~
<script>
$(document).ready(function(){
$("#fade-to-btn1").on('click', function(){
$("#my-div").fadeTo(2000, 0.2) //2000ms동안 20% 선명도를 갖게 애니메이션.
});
$("#fade-to-btn2").on('click', function(){
$("#my-div").fadeTo(400, 0.9) //2000ms동안 90% 선명도를 갖게 애니메이션.
});
})
</script>
</head>
<body>
<button id="fade-in-btn">fadeIn</button>
<button id="fade-out-btn">fadeOut</button>
<div id="my-div"></div>
</body>
2.5 버튼으로 animate() 애니메이션 예제
<head>
~
<style>
#my-div{
position: relative;
width: 100px;
height: 100px;
background-color:limegreen;
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$("#animate-btn").on('click', function(){
$("#my-div").animate({"left":"+=100px"}) //div가 position:static;이면 left해도 위치가 변하지 않는다.
})
})
</script>
</head>
<body>
<button id="animate-btn">animate</button>
<div id="my-div"></div>
</body>
- animate() 매개변수에 중괄호와 쌍따옴표, 콜론을 이용해 입력해야된다. 오타 주의하기!
- jquery문이기 때문에 "+=100px" 같은 수식을 문자열 안에 넣을 수 있다.
2.6 keyDown()으로 animate() 예제
<head>
~
<style>
#my-div{
position: relative;
width: 100px;
height: 100px;
background: url("https://e7.pngegg.com/pngimages/242/320/png-clipart-face-smiley-wiki-kiss-smiley-people-desktop-wallpaper.png");
background-size: cover;
left: 0; /* 초기 위치 설정 */
top: 0; /* 초기 위치 설정 */
}
</style>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).on('keydown',function(e){
switch(e.keyCode){
case 37: // Left arrow
$("#my-div").animate({"left": "-=100px"},100, 'swing'); // 왼쪽으로 이동, 100ms만에 이동, 'swing' 방식으로 animate
break;
case 38: // Up arrow
$("#my-div").animate({"top": "-=100px"},100, 'swing'); // 위로 이동
break;
case 39: // Right arrow
$("#my-div").animate({"left": "+=100px"},100, 'swing'); // 오른쪽으로 이동
break;
case 40: // Down arrow
$("#my-div").animate({"top": "+=100px"},100, 'swing'); // 아래로 이동
break;
}
$("#my-div-status").val(e.key);
});
});
</script>
</head>
<body>
<div id="my-div"></div>
<input id="my-div-status" type="text" readonly>
</body>
- animate()에는 다양한 동작 효과를 줄 수 있다.
- 어떤 효과들이 있는지 궁금하다면 jQuery공작소 홈페이지를 참고하자. 링크: https://superkts.com/jquery/animate
3. slidedown() 애니메이션을 이용한 메롱 만들기 예제
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Character Animation</title>
<style>
.character-container {
position: relative;
width: 200px; /* 이미지 크기에 맞게 조정 */
height: 200px; /* 이미지 크기에 맞게 조정 */
}
.character-image {
width: 100%;
height: auto;
display: block;
}
.tongue {
width: 90px;
height: 60px;
background-color: pink;
border-radius: 100px 100px 0 0;
position: absolute;
bottom: 23px; /* 입 위치에 맞게 조정 */
left: 47%; /* 중앙 정렬 */
transform: translateX(-50%);
display: none;
}
</style>
</head>
<body>
<div class="character-container">
<img src="https://e7.pngegg.com/pngimages/242/320/png-clipart-face-smiley-wiki-kiss-smiley-people-desktop-wallpaper.png" class="character-image" alt="Character">
<div class="tongue"></div>
</div>
<button id="toggle-btn">Toggle</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script> <!-- jQuery 추가 -->
<script>
$(document).ready(function(){
$("#toggle-btn").on('click', function(){
$(".tongue").slideDown(2000),
$(".tongue").slideUp(2000)
});
})
</script>
</body>
</html>
- 조금 어색하지만 작동은 한다!
4. 웹 디자인 기능사 연습
$(document).ready(function(){
menu()
tab()
slide()
popup()
})
function menu(){
$(".gnb>li").on({
"mouseenter":function(){
$(".lnb").stop().slideDown()
//stop은 지금 동작하는 애니메이션 멈춤
//그러면 애니메이션 큐에 애니메이션 안쌓인다
//그게 결국엔 애니메이션 자연스럽게하는 기능
},
"mouseleave":function(){
$(".lnb").stop().slideUp()
}
})
}
function tab(){
$(".tab_btn>a").eq(0).on('click',function(){ //eq(0) 첫번째 자식요소
// alert('공지사항 버튼 클릭!')
$(".tab_contents>div").eq(1).hide()
$(".tab_contents>div").eq(0).show()
}),
$(".tab_btn>a").eq(1).on('click',function(){ //eq(1) 두번째 자식요소
// alert('갤러리 버튼 클릭!')
$(".tab_contents>div").eq(0).hide()
$(".tab_contents>div").eq(1).show()
})
}
function slide(){
setInterval(slideMove, 3000)
}
var curTop=0
function slideMove(){
curTop-=300
if(curTop < -600){
curTop=0
}
$("#slide_contents").animate({"top":curTop})
//0, -300, -600, 0, -300, -600
}
function popup(){
$(".pop").on('click',function(){
$("#popup").show()
})
$("#closeBtn").on('click',function(){
$("#popup").hide()
})
}
- menu창 마우스를 올려 놓으면 슬라이드 다운으로 세부메뉴 보이기
- tab 버튼 클릭하면 해당 탭 show(), hide()로 원하는 탭만 보이기
- slide를 setInterval로 몇초마다 이동 시킬지 정하기, animate({"top":"-=300px"})로 이동시키기
- popup창 클릭하면 show하고 close버튼 누르면 hide하기
댓글