바운싱 DVD 로고 화면 보호기
Wikiprompt, 무료 프롬프트 백과사전에서
바운싱 DVD 로고 화면 보호기 DVD 로고 화면 보호기 애니메이션을 색상이 변하는 바운스 효과와 함께 웹 기술로 제작하기 위한 프롬프트입니다.
프롬프트 내용저장
🌐
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DVD 로고 바운스</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
background-color: #111;
min-height: 100vh;
display: flex;
justify-content: center;
align-items: center;
font-family: 'Arial', sans-serif;
overflow: hidden;
}
#stage {
position: relative;
width: 90vw;
height: 90vh;
background-color: #000;
border: 2px solid #333;
border-radius: 12px;
box-shadow: 0 0 30px rgba(0, 0, 0, 0.8);
overflow: hidden;
}
#dvd-logo {
position: absolute;
top: 0;
left: 0;
width: 120px;
height: 60px;
background-color: #ff0000; /* 초기 색상 */
color: white;
font-weight: bold;
font-size: 1.8rem;
display: flex;
justify-content: center;
align-items: center;
border-radius: 8px;
letter-spacing: 2px;
text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
box-shadow: 0 4px 15px rgba(255, 255, 255, 0.2);
user-select: none;
will-change: transform, background-color;
transition: background-color 0.1s ease;
/* 텍스트가 로고 안에 꽉 차게 */
font-family: 'Impact', 'Arial Black', sans-serif;
text-transform: uppercase;
}
/* 작은 화면에서도 보이도록 */
@media (max-width: 600px) {
#dvd-logo {
width: 90px;
height: 45px;
font-size: 1.2rem;
}
}
</style>
</head>
<body>
<div id="stage">
<div id="dvd-logo">DVD</div>
</div>
<script>
(function() {
const logo = document.getElementById('dvd-logo');
const stage = document.getElementById('stage');
// 초기 위치 (중앙에서 시작)
let posX = stage.clientWidth / 2 - logo.offsetWidth / 2;
let posY = stage.clientHeight / 2 - logo.offsetHeight / 2;
// 이동 속도 (픽셀/프레임)
const speed = 3;
let velX = speed;
let velY = speed;
// 색상 팔레트 (DVD 로고 느낌의 선명한 색)
const colors = [
'#ff0000', // 빨강
'#ff8800', // 주황
'#ffff00', // 노랑
'#00cc00', // 초록
'#0088ff', // 파랑
'#8800ff', // 보라
'#ff00cc', // 핑크
'#00cccc', // 시안
'#ff4444', // 연한 빨강
'#44ff44' // 연한 초록
];
let colorIndex = 0;
// 초기 위치 설정
logo.style.left = posX + 'px';
logo.style.top = posY + 'px';
logo.style.backgroundColor = colors[0];
// 리사이즈 대응 (스테이지 크기 변경 시 로고가 경계 밖으로 나가지 않도록)
window.addEventListener('resize', () => {
// 현재 위치를 기준으로 경계 안으로 조정
const maxX = stage.clientWidth - logo.offsetWidth;
const maxY = stage.clientHeight - logo.offsetHeight;
if (posX > maxX) posX = maxX;
if (posY > maxY) posY = maxY;
if (posX < 0) posX = 0;
if (posY < 0) posY = 0;
logo.style.left = posX + 'px';
logo.style.top = posY + 'px';
});
// 애니메이션 루프
function animate() {
// 현재 위치 업데이트
posX += velX;
posY += velY;
// 스테이지 경계값 계산
const maxX = stage.clientWidth - logo.offsetWidth;
const maxY = stage.clientHeight - logo.offsetHeight;
// 경계 충돌 감지 및 반사 + 색상 변경
let bounced = false;
// 오른쪽 벽
if (posX >= maxX) {
posX = maxX; // 경계에 고정
velX = -Math.abs(velX); // 왼쪽으로 반사
bounced = true;
}
// 왼쪽 벽
else if (posX <= 0) {
posX = 0;
velX = Math.abs(velX); // 오른쪽으로 반사
bounced = true;
}
// 아래쪽 벽
if (posY >= maxY) {
posY = maxY;
velY = -Math.abs(velY); // 위로 반사
bounced = true;
}
// 위쪽 벽
else if (posY <= 0) {
posY = 0;
velY = Math.abs(velY); // 아래로 반사
bounced = true;
}
// 만약 벽에 부딪혔다면 색상 변경
if (bounced) {
colorIndex = (colorIndex + 1) % colors.length;
logo.style.backgroundColor = colors[colorIndex];
}
// 로고 위치 적용
logo.style.left = posX + 'px';
logo.style.top = posY + 'px';
// 다음 프레임 요청
requestAnimationFrame(animate);
}
// 초기 시작 (약간의 지연 후 시작하여 레이아웃 안정화)
setTimeout(() => {
// 스테이지 크기에 맞게 초기 위치 재조정 (혹시 모를 상황)
posX = Math.min(posX, stage.clientWidth - logo.offsetWidth);
posY = Math.min(posY, stage.clientHeight - logo.offsetHeight);
posX = Math.max(0, posX);
posY = Math.max(0, posY);
logo.style.left = posX + 'px';
logo.style.top = posY + 'px';
animate();
}, 100);
// 추가: 로고를 클릭하면 색상 수동 변경 (재미 요소)
logo.addEventListener('click', () => {
colorIndex = (colorIndex + 1) % colors.length;
logo.style.backgroundColor = colors[colorIndex];
});
})();
</script>
</body>
</html>
전체 프롬프트를 보려면 로그인하세요
Continue with:
By logging in, you agree to our Terms of Use and Privacy Policy
사용법
이 프롬프트는 coding와 함께 사용하도록 설계되었습니다. 위의 프롬프트 내용을 복사하여 원하는 AI 도구에 붙여넣으세요.
최상의 결과를 얻으려면 자리 표시자(대괄호 또는 대문자로 표시)를 특정 요구 사항으로 사용자 지정할 수 있습니다.
토론
댓글 0개