bb2 / index.html
yoon2566's picture
Update index.html
85e6734 verified
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>๋กœ๋งˆ์„œ 8์žฅ ์•”์†ก ๋„์šฐ๋ฏธ (๋ชจ๋“œ ์ „ํ™˜)</title>
<style>
/* ๊ธฐ๋ณธ ์Šคํƒ€์ผ */
body {
background-color: #000; /* ๊ฒ€์€ ๋ฐฐ๊ฒฝ */
color: #FFFFFF; /* ๊ธฐ๋ณธ ๊ธ€์ž์ƒ‰ (ํŒŒํŠธ ์ƒ‰์ƒ์œผ๋กœ ๋Œ€์ฒด๋˜๋ฏ€๋กœ ํฌ๊ฒŒ ์˜๋ฏธ ์—†์Œ) */
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
margin: 0;
padding: 20px;
line-height: 1.6;
overflow-y: auto; /* ๋‚ด์šฉ์ด ๊ธธ์–ด๋„ ์Šคํฌ๋กค ๊ฐ€๋Šฅํ•˜๊ฒŒ */
-webkit-overflow-scrolling: touch; /* ๋ชจ๋ฐ”์ผ ์Šคํฌ๋กค ๋ถ€๋“œ๋Ÿฝ๊ฒŒ */
word-break: keep-all; /* ๋‹จ์–ด ์ค‘๊ฐ„์— ์ค„๋ฐ”๊ฟˆ ๋ฐฉ์ง€ (ํ•œ๊ธ€์— ์ ํ•ฉ) */
}
h1 {
text-align: center;
margin-bottom: 15px; /* ์ปจํŠธ๋กค๊ณผ์˜ ๊ฐ„๊ฒฉ */
color: #FFFF00; /* ๋…ธ๋ž€์ƒ‰ ์ œ๋ชฉ */
font-size: 1.8em;
}
/* ์ ˆ ์ปจํ…Œ์ด๋„ˆ ์Šคํƒ€์ผ (ํ•˜๋‚˜์”ฉ๋งŒ ๋ณด์ด๋„๋ก) */
.verse {
display: none; /* ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์ˆจ๊น€ */
margin-top: 20px; /* ์ปจํŠธ๋กค๊ณผ์˜ ๊ฐ„๊ฒฉ */
margin-bottom: 30px;
}
.verse.active {
display: block; /* ํ™œ์„ฑํ™”๋œ ์ ˆ๋งŒ ๋ณด์ž„ */
}
.verse-number {
font-weight: bold;
margin-bottom: 15px;
display: block;
font-size: 1.2em;
color: #FFFF00; /* ์ ˆ ๋ฒˆํ˜ธ๋Š” ๋…ธ๋ž€์ƒ‰ */
text-align: center;
}
/* ํŒŒํŠธ ์ „์ฒด๋ฅผ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ (Flexbox๋กœ ์ค„๋ฐ”๊ฟˆ ์ฒ˜๋ฆฌ) */
.parts-container {
display: flex;
flex-wrap: wrap; /* ๋‚ด์šฉ์ด ๋„˜์น˜๋ฉด ์ž๋™์œผ๋กœ ๋‹ค์Œ ์ค„๋กœ ์ด๋™ */
gap: 10px; /* ํŒŒํŠธ ๊ฐ„ ๊ฐ„๊ฒฉ */
justify-content: center; /* ํŒŒํŠธ๋“ค์„ ์ค‘์•™ ์ •๋ ฌ */
}
/* ํŒŒํŠธ ๋ธ”๋ก ์Šคํƒ€์ผ */
.part {
background-color: #333; /* ์–ด๋‘์šด ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ */
padding: 12px 8px;
border-radius: 5px;
cursor: pointer; /* ํด๋ฆญ ๊ฐ€๋Šฅ ํ‘œ์‹œ */
text-align: center;
box-sizing: border-box; /* ํŒจ๋”ฉ๊ณผ ๋ณด๋”๋ฅผ ๋„ˆ๋น„์— ํฌํ•จ */
white-space: normal; /* ํ…์ŠคํŠธ ๊ธธ์ด์— ๋”ฐ๋ผ ์ค„๋ฐ”๊ฟˆ ํ—ˆ์šฉ */
/* ๋ชจ๋“  ํ™”๋ฉด ํฌ๊ธฐ์—์„œ 3๊ฐœ์”ฉ ํ•œ ์ค„์— ์˜ค๋„๋ก ๋„ˆ๋น„ ์„ค์ • */
flex: 0 0 calc(33.33% - 10px); /* 1/3 ๋„ˆ๋น„์—์„œ ๊ฐ„๊ฒฉ 10px์„ ๋บ€ ๊ฐ’ */
min-width: 50px; /* ๋„ˆ๋ฌด ์ž‘์•„์ง€๋Š” ๊ฒƒ ๋ฐฉ์ง€ */
transition: background-color 0.2s, color 0.2s, font-weight 0.1s; /* ์ƒ‰์ƒ, ๋ฐฐ๊ฒฝ, ๊ตต๊ธฐ ๋ณ€๊ฒฝ ์• ๋‹ˆ๋ฉ”์ด์…˜ */
}
/* ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ชจ๋“œ: ํด๋ฆญ ์ „ ๊ธ€์ž ์ƒ‰์ƒ (๋ฐฐ๊ฒฝ๋ณด๋‹ค ์•ฝ๊ฐ„ ๋ฐ๊ฒŒ) */
body.preview-mode .part {
color: #AAAAAA; /* ํฌ๋ฏธํ•œ ํšŒ์ƒ‰ */
}
/* ๊ฐ€๋ฆฌ๊ธฐ ๋ชจ๋“œ: ํด๋ฆญ ์ „ ๊ธ€์ž ์ƒ‰์ƒ (๋ฐฐ๊ฒฝ๊ณผ ๋™์ผํ•˜์—ฌ ์ˆจ๊น€) */
body.hide-mode .part {
color: #333; /* ์–ด๋‘์šด ํšŒ์ƒ‰ (๋ฐฐ๊ฒฝ๊ณผ ๋™์ผ) */
}
/* ํด๋ฆญ๋œ ํŒŒํŠธ ์Šคํƒ€์ผ (์–ด๋–ค ๋ชจ๋“œ์—์„œ๋„ ํ•ญ์ƒ ๋…ธ๋ž€์ƒ‰) */
.part.active {
color: #FFFF00 !important; /* ํด๋ฆญ๋œ ํŒŒํŠธ๋Š” ๋…ธ๋ž€์ƒ‰ (๋ชจ๋“œ ์ƒ‰์ƒ๋ณด๋‹ค ์šฐ์„ ) */
background-color: #555; /* ํด๋ฆญ ์‹œ ์•ฝ๊ฐ„ ๋ฐ์€ ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ */
font-weight: bold; /* ํด๋ฆญ๋œ ๋‹จ์–ด ๊ฐ•์กฐ */
}
/* ์ปจํŠธ๋กค ๋ฒ„ํŠผ ๋ฐ ์Šฌ๋ผ์ด๋” ์ปจํ…Œ์ด๋„ˆ ์Šคํƒ€์ผ */
.controls {
text-align: center;
margin-bottom: 20px; /* ์ ˆ ๋‚ด์šฉ๊ณผ์˜ ๊ฐ„๊ฒฉ */
/* ๋‚ด๋ถ€ ์š”์†Œ ์ •๋ ฌ์„ ์œ„ํ•ด flexbox ์‚ฌ์šฉ */
display: flex;
justify-content: center; /* ์ค‘์•™ ์ •๋ ฌ */
align-items: center; /* ์„ธ๋กœ ์ค‘์•™ ์ •๋ ฌ */
flex-wrap: wrap; /* ๊ณต๊ฐ„ ๋ถ€์กฑ ์‹œ ๋‹ค์Œ ์ค„๋กœ ์ด๋™ */
gap: 15px; /* ์ปจํŠธ๋กค ์š”์†Œ ๊ฐ„ ๊ฐ„๊ฒฉ */
}
/* ์Šฌ๋ผ์ด๋” ๋ฐ ๋ผ๋ฒจ ์Šคํƒ€์ผ */
.rate-control {
display: flex; /* ๋ผ๋ฒจ๊ณผ ์Šฌ๋ผ์ด๋”๋ฅผ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ */
align-items: center;
gap: 5px; /* ๋ผ๋ฒจ๊ณผ ์Šฌ๋ผ์ด๋” ๊ฐ„ ๊ฐ„๊ฒฉ */
color: #AAAAAA; /* ๋ผ๋ฒจ ์ƒ‰์ƒ */
font-size: 0.9em;
}
/* ์Šฌ๋ผ์ด๋” ์ž์ฒด ์Šคํƒ€์ผ (๋ธŒ๋ผ์šฐ์ €๋ณ„ ์Šคํƒ€์ผ ์žฌ์ •์˜ ํ•„์š”) */
input[type="range"] {
-webkit-appearance: none; /* ๊ธฐ๋ณธ ์Šคํƒ€์ผ ์ œ๊ฑฐ */
appearance: none;
width: 120px; /* ์Šฌ๋ผ์ด๋” ๋„ˆ๋น„ */
height: 5px; /* ์Šฌ๋ผ์ด๋” ํŠธ๋ž™ ๋†’์ด */
background: #555; /* ํŠธ๋ž™ ๋ฐฐ๊ฒฝ์ƒ‰ */
outline: none;
opacity: 0.7;
transition: opacity .2s;
border-radius: 5px;
}
input[type="range"]:hover {
opacity: 1;
}
/* ์Šฌ๋ผ์ด๋” ์ธ(thumb) ์Šคํƒ€์ผ */
input[type="range"]::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
width: 15px;
height: 15px;
background: #FFFF00; /* ๋…ธ๋ž€์ƒ‰ ์ธ */
cursor: pointer;
border-radius: 50%; /* ์›ํ˜• */
}
input[type="range"]::-moz-range-thumb {
width: 15px;
height: 15px;
background: #FFFF00; /* ๋…ธ๋ž€์ƒ‰ ์ธ */
cursor: pointer;
border-radius: 50%; /* ์›ํ˜• */
}
.controls button {
padding: 12px 20px; /* ๋ฒ„ํŠผ ํŒจ๋”ฉ ์กฐ์ • */
background-color: #555; /* ์–ด๋‘์šด ํšŒ์ƒ‰ ๋ฐฐ๊ฒฝ */
color: #FFFF00; /* ๋…ธ๋ž€ ๊ธ€์ž */
border: none;
border-radius: 5px;
cursor: pointer;
font-size: 0.9em; /* ๋ฒ„ํŠผ ๊ธ€์ž ํฌ๊ธฐ ์กฐ์ • */
transition: background-color 0.2s;
-webkit-appearance: none; /* ๋ชจ๋ฐ”์ผ ๊ธฐ๋ณธ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ์ œ๊ฑฐ */
appearance: none;
}
.controls button:hover:not(:disabled) {
background-color: #777; /* ํ˜ธ๋ฒ„ ์‹œ ์•ฝ๊ฐ„ ๋ฐ๊ฒŒ */
}
.controls button:disabled {
opacity: 0.5; /* ๋น„ํ™œ์„ฑํ™” ์‹œ ํ๋ฆฌ๊ฒŒ */
cursor: not-allowed;
}
/* ๋ชจ๋ฐ”์ผ ์ตœ์ ํ™” (3๊ฐœ ๋ธ”๋ก ๋ ˆ์ด์•„์›ƒ์€ CSS Flexbox์— ๋งก๊น€) */
@media (max-width: 768px) { /* ํƒœ๋ธ”๋ฆฟ ๋ฐ ๋ชจ๋ฐ”์ผ */
body { padding: 15px; }
h1 { font-size: 1.7em; margin-bottom: 10px; }
.verse-number { font-size: 1.1em; }
.controls {
gap: 10px; /* ์ปจํŠธ๋กค ์š”์†Œ ๊ฐ„ ๊ฐ„๊ฒฉ ์ค„์ž„ */
}
.controls button { padding: 10px 18px; font-size: 0.85em; }
input[type="range"] { width: 90px; } /* ์Šฌ๋ผ์ด๋” ๋„ˆ๋น„ ์กฐ์ • */
.part {
/* ๋ชจ๋ฐ”์ผ์—์„œ๋„ 3๊ฐœ์”ฉ ์œ ์ง€ */
flex: 0 0 calc(33.33% - 10px);
padding: 10px 6px;
min-width: 50px;
}
.parts-container { gap: 10px; }
}
@media (max-width: 480px) { /* ์ž‘์€ ๋ชจ๋ฐ”์ผ */
body { padding: 10px; }
h1 { font-size: 1.5em; margin-bottom: 8px; }
.verse-number { font-size: 1em; }
.controls {
flex-direction: column; /* ์„ธ๋กœ ์ •๋ ฌ */
gap: 8px;
}
.controls button { padding: 8px 15px; font-size: 0.8em; width: 80%;} /* ๋ฒ„ํŠผ ์„ธ๋กœ ์ •๋ ฌ ๋ฐ ๋„ˆ๋น„ ์กฐ์ • */
.rate-control {
width: 80%; /* ์Šฌ๋ผ์ด๋” ์˜์—ญ ๋„ˆ๋น„ ์กฐ์ • */
justify-content: space-between; /* ๋ผ๋ฒจ๊ณผ ์Šฌ๋ผ์ด๋” ์–‘ ๋ ์ •๋ ฌ */
}
input[type="range"] { width: 60%; } /* ์Šฌ๋ผ์ด๋” ๋„ˆ๋น„ ์กฐ์ • */
.part {
/* ๋” ์ž‘์€ ๋ชจ๋ฐ”์ผ์—์„œ๋„ 3๊ฐœ์”ฉ ์œ ์ง€ */
flex: 0 0 calc(33.33% - 8px); /* ๊ฐ„๊ฒฉ ์กฐ์ • */
padding: 8px 5px; /* ํŒจ๋”ฉ ์กฐ์ • */
min-width: 40px; /* ์ตœ์†Œ ๋„ˆ๋น„ ๋” ์ค„์ด๊ธฐ */
font-size: 0.85em; /* ๊ธ€์ž ํฌ๊ธฐ ์ค„์ด๊ธฐ */
}
.parts-container { gap: 8px; }
}
</style>
</head>
<!-- ๊ธฐ๋ณธ ๋ชจ๋“œ๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ์„ค์ • -->
<body class="preview-mode">
<h1>๋กœ๋งˆ์„œ 8์žฅ</h1>
<div class="controls">
<button id="prev-verse">์ด์ „ ์ ˆ</button>
<button id="toggle-mode">๊ธ€์ž ๊ฐ€๋ฆฌ๊ธฐ</button> <!-- ๋ชจ๋“œ ์ „ํ™˜ ๋ฒ„ํŠผ -->
<button id="next-verse">๋‹ค์Œ ์ ˆ</button>
<div class="rate-control">
<label for="rate-slider">์†๋„:</label>
<input type="range" id="rate-slider" min="0.5" max="2.0" step="0.1" value="1.0">
</div>
</div>
<div id="verse-display">
<!-- ์—ฌ๊ธฐ์— JavaScript๋กœ ์ ˆ ๋‚ด์šฉ์ด ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. -->
</div>
<script>
// ๋กœ๋งˆ์„œ 8์žฅ ์ „๋ฌธ (์ œ๊ณตํ•ด์ฃผ์‹  ์ตœ์‹  ํ…์ŠคํŠธ ์ ์šฉ)
const verses = [
"๊ทธ๋Ÿฌ๋ฏ€๋กœ ์ด์ œ ๊ทธ๋ฆฌ์Šค๋„ ์˜ˆ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ์ž์—๊ฒŒ๋Š” ๊ฒฐ์ฝ” ์ •์ฃ„ํ•จ์ด ์—†๋‚˜๋‹ˆ", // 1
"์ด๋Š” ๊ทธ๋ฆฌ์Šค๋„ ์˜ˆ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ์ƒ๋ช…์˜ ์„ฑ๋ น์˜ ๋ฒ•์ด ์ฃ„์™€ ์‚ฌ๋ง์˜ ๋ฒ•์—์„œ ๋„ˆ๋ฅผ ํ•ด๋ฐฉํ•˜์˜€์Œ์ด๋ผ", // 2
"์œจ๋ฒ•์ด ์œก์‹ ์œผ๋กœ ๋ง๋ฏธ์•”์•„ ์—ฐ์•ฝํ•˜์—ฌ ํ•  ์ˆ˜ ์—†๋Š” ๊ทธ๊ฒƒ์„ ํ•˜๋‚˜๋‹˜์€ ํ•˜์‹œ๋‚˜๋‹ˆ ๊ณง ์ฃ„๋กœ ๋ง๋ฏธ์•”์•„ ์ž๊ธฐ ์•„๋“ค์„ ์ฃ„ ์žˆ๋Š” ์œก์‹ ์˜ ๋ชจ์–‘์œผ๋กœ ๋ณด๋‚ด์–ด ์œก์‹ ์— ์ฃ„๋ฅผ ์ •ํ•˜์‚ฌ", // 3
"์œก์‹ ์„ ๋”ฐ๋ฅด์ง€ ์•Š๊ณ  ๊ทธ ์˜์„ ๋”ฐ๋ผ ํ–‰ํ•˜๋Š” ์šฐ๋ฆฌ์—๊ฒŒ ์œจ๋ฒ•์˜ ์š”๊ตฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ฒŒ ํ•˜๋ ค ํ•˜์‹ฌ์ด๋‹ˆ๋ผ", // 4
"์œก์‹ ์„ ๋”ฐ๋ฅด๋Š” ์ž๋Š” ์œก์‹ ์˜ ์ผ์„, ์˜์„ ๋”ฐ๋ฅด๋Š” ์ž๋Š” ์˜์˜ ์ผ์„ ์ƒ๊ฐํ•˜๋‚˜๋‹ˆ", // 5
"์œก์‹ ์˜ ์ƒ๊ฐ์€ ์‚ฌ๋ง์ด์š” ์˜์˜ ์ƒ๊ฐ์€ ์ƒ๋ช…๊ณผ ํ‰์•ˆ์ด๋‹ˆ๋ผ", // 6
"์œก์‹ ์˜ ์ƒ๊ฐ์€ ํ•˜๋‚˜๋‹˜๊ณผ ์›์ˆ˜๊ฐ€ ๋˜๋‚˜๋‹ˆ ์ด๋Š” ํ•˜๋‚˜๋‹˜์˜ ๋ฒ•์— ๊ตด๋ณตํ•˜์ง€ ์•„๋‹ˆํ•  ๋ฟ ์•„๋‹ˆ๋ผ ํ•  ์ˆ˜๋„ ์—†์Œ์ด๋ผ", // 7
"์œก์‹ ์— ์žˆ๋Š” ์ž๋“ค์€ ํ•˜๋‚˜๋‹˜์„ ๊ธฐ์˜์‹œ๊ฒŒ ํ•  ์ˆ˜ ์—†๋А๋‹ˆ๋ผ", // 8
"๋งŒ์ผ ๋„ˆํฌ ์†์— ํ•˜๋‚˜๋‹˜์˜ ์˜์ด ๊ฑฐํ•˜์‹œ๋ฉด ๋„ˆํฌ๊ฐ€ ์œก์‹ ์— ์žˆ์ง€ ์•„๋‹ˆํ•˜๊ณ  ์˜์— ์žˆ๋‚˜๋‹ˆ ๋ˆ„๊ตฌ๋“ ์ง€ ๊ทธ๋ฆฌ์Šค๋„์˜ ์˜์ด ์—†์œผ๋ฉด ๊ทธ๋ฆฌ์Šค๋„์˜ ์‚ฌ๋žŒ์ด ์•„๋‹ˆ๋ผ", // 9
"๋˜ ๊ทธ๋ฆฌ์Šค๋„๊ป˜์„œ ๋„ˆํฌ ์•ˆ์— ๊ณ„์‹œ๋ฉด ๋ชธ์€ ์ฃ„๋กœ ๋ง๋ฏธ์•”์•„ ์ฃฝ์€ ๊ฒƒ์ด๋‚˜ ์˜์€ ์˜๋กœ ๋ง๋ฏธ์•”์•„ ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ˆ๋ผ", // 10
"์˜ˆ์ˆ˜๋ฅผ ์ฃฝ์€ ์ž ๊ฐ€์šด๋ฐ์„œ ์‚ด๋ฆฌ์‹  ์ด์˜ ์˜์ด ๋„ˆํฌ ์•ˆ์— ๊ฑฐํ•˜์‹œ๋ฉด ๊ทธ๋ฆฌ์Šค๋„ ์˜ˆ์ˆ˜๋ฅผ ์ฃฝ์€ ์ž ๊ฐ€์šด๋ฐ์„œ ์‚ด๋ฆฌ์‹  ์ด๊ฐ€ ๋„ˆํฌ ์•ˆ์— ๊ฑฐํ•˜์‹œ๋Š” ๊ทธ์˜ ์˜์œผ๋กœ ๋ง๋ฏธ์•”์•„ ๋„ˆํฌ ์ฃฝ์„ ๋ชธ๋„ ์‚ด๋ฆฌ์‹œ๋ฆฌ๋ผ", // 11
"๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ˜•์ œ๋“ค์•„ ์šฐ๋ฆฌ๊ฐ€ ๋นš์ง„ ์ž๋กœ๋˜ ์œก์‹ ์—๊ฒŒ ์ ธ์„œ ์œก์‹ ๋Œ€๋กœ ์‚ด ๊ฒƒ์ด ์•„๋‹ˆ๋‹ˆ๋ผ", // 12
"๋„ˆํฌ๊ฐ€ ์œก์‹ ๋Œ€๋กœ ์‚ด๋ฉด ๋ฐ˜๋“œ์‹œ ์ฃฝ์„ ๊ฒƒ์ด๋กœ๋˜ ์˜์œผ๋กœ์จ ๋ชธ์˜ ํ–‰์‹ค์„ ์ฃฝ์ด๋ฉด ์‚ด๋ฆฌ๋‹ˆ", // 13
"๋ฌด๋ฆ‡ ํ•˜๋‚˜๋‹˜์˜ ์˜์œผ๋กœ ์ธ๋„ํ•จ์„ ๋ฐ›๋Š” ์‚ฌ๋žŒ์€ ๊ณง ํ•˜๋‚˜๋‹˜์˜ ์•„๋“ค์ด๋ผ", // 14
"๋„ˆํฌ๋Š” ๋‹ค์‹œ ๋ฌด์„œ์›Œํ•˜๋Š” ์ข…์˜ ์˜์„ ๋ฐ›์ง€ ์•„๋‹ˆํ•˜๊ณ  ์–‘์ž์˜ ์˜์„ ๋ฐ›์•˜์œผ๋ฏ€๋กœ ์šฐ๋ฆฌ๊ฐ€ ์•„๋น  ์•„๋ฒ„์ง€๋ผ๊ณ  ๋ถ€๋ฅด์ง–๋А๋‹ˆ๋ผ", // 15
"์„ฑ๋ น์ด ์นœํžˆ ์šฐ๋ฆฌ์˜ ์˜๊ณผ ๋”๋ถˆ์–ด ์šฐ๋ฆฌ๊ฐ€ ํ•˜๋‚˜๋‹˜์˜ ์ž๋…€์ธ ๊ฒƒ์„ ์ฆ์–ธํ•˜์‹œ๋‚˜๋‹ˆ", // 16
"์ž๋…€์ด๋ฉด ๋˜ํ•œ ์ƒ์†์ž ๊ณง ํ•˜๋‚˜๋‹˜์˜ ์ƒ์†์ž์š” ๊ทธ๋ฆฌ์Šค๋„์™€ ํ•จ๊ป˜ ํ•œ ์ƒ์†์ž๋‹ˆ ์šฐ๋ฆฌ๊ฐ€ ๊ทธ์™€ ํ•จ๊ป˜ ์˜๊ด‘์„ ๋ฐ›๊ธฐ ์œ„ํ•˜์—ฌ ๊ณ ๋‚œ๋„ ํ•จ๊ป˜ ๋ฐ›์•„์•ผ ํ•  ๊ฒƒ์ด๋‹ˆ๋ผ", // 17
"์ƒ๊ฐํ•˜๊ฑด๋Œ€ ํ˜„์žฌ์˜ ๊ณ ๋‚œ์€ ์žฅ์ฐจ ์šฐ๋ฆฌ์—๊ฒŒ ๋‚˜ํƒ€๋‚  ์˜๊ด‘๊ณผ ๋น„๊ตํ•  ์ˆ˜ ์—†๋„๋‹ค", // 18
"ํ”ผ์กฐ๋ฌผ์ด ๊ณ ๋Œ€ํ•˜๋Š” ๋ฐ”๋Š” ํ•˜๋‚˜๋‹˜์˜ ์•„๋“ค๋“ค์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฒƒ์ด๋‹ˆ", // 19
"ํ”ผ์กฐ๋ฌผ์ด ํ—ˆ๋ฌดํ•œ ๋ฐ ๊ตด๋ณตํ•˜๋Š” ๊ฒƒ์€ ์ž๊ธฐ ๋œป์ด ์•„๋‹ˆ์š” ์˜ค์ง ๊ตด๋ณตํ•˜๊ฒŒ ํ•˜์‹œ๋Š” ์ด๋กœ ๋ง๋ฏธ์•”์Œ์ด๋ผ", // 20
"๊ทธ ๋ฐ”๋ผ๋Š” ๊ฒƒ์€ ํ”ผ์กฐ๋ฌผ๋„ ์ฉ์–ด์ง์˜ ์ข… ๋…ธ๋ฆ‡ ํ•œ ๋ฐ์„œ ํ•ด๋ฐฉ๋˜์–ด ํ•˜๋‚˜๋‹˜์˜ ์ž๋…€๋“ค์˜ ์˜๊ด‘์˜ ์ž์œ ์— ์ด๋ฅด๋Š” ๊ฒƒ์ด๋‹ˆ๋ผ", // 21
"ํ”ผ์กฐ๋ฌผ์ด ๋‹ค ์ด์ œ๊นŒ์ง€ ํ•จ๊ป˜ ํƒ„์‹ํ•˜๋ฉฐ ํ•จ๊ป˜ ๊ณ ํ†ต์„ ๊ฒช๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ์šฐ๋ฆฌ๊ฐ€ ์•„๋А๋‹ˆ๋ผ", // 22
"๊ทธ๋ฟ ์•„๋‹ˆ๋ผ ๋˜ํ•œ ์šฐ๋ฆฌ ๊ณง ์„ฑ๋ น์˜ ์ฒ˜์Œ ์ต์€ ์—ด๋งค๋ฅผ ๋ฐ›์€ ์šฐ๋ฆฌ๊นŒ์ง€๋„ ์†์œผ๋กœ ํƒ„์‹ํ•˜์—ฌ ์–‘์ž ๋  ๊ฒƒ ๊ณง ์šฐ๋ฆฌ ๋ชธ์˜ ์†๋Ÿ‰์„ ๊ธฐ๋‹ค๋ฆฌ๋А๋‹ˆ๋ผ", // 23
"์šฐ๋ฆฌ๊ฐ€ ์†Œ๋ง์œผ๋กœ ๊ตฌ์›์„ ์–ป์—ˆ์œผ๋งค ๋ณด์ด๋Š” ์†Œ๋ง์ด ์†Œ๋ง์ด ์•„๋‹ˆ๋‹ˆ ๋ณด๋Š” ๊ฒƒ์„ ๋ˆ„๊ฐ€ ๋ฐ”๋ผ๋ฆฌ์š”", // 24
"๋งŒ์ผ ์šฐ๋ฆฌ๊ฐ€ ๋ณด์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ๋ฐ”๋ผ๋ฉด ์ฐธ์Œ์œผ๋กœ ๊ธฐ๋‹ค๋ฆด์ง€๋‹ˆ๋ผ", // 25
"์ด์™€ ๊ฐ™์ด ์„ฑ๋ น๋„ ์šฐ๋ฆฌ์˜ ์—ฐ์•ฝํ•จ์„ ๋„์šฐ์‹œ๋‚˜๋‹ˆ ์šฐ๋ฆฌ๋Š” ๋งˆ๋•…ํžˆ ๊ธฐ๋„ํ•  ๋ฐ”๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋‚˜ ์˜ค์ง ์„ฑ๋ น์ด ๋งํ•  ์ˆ˜ ์—†๋Š” ํƒ„์‹์œผ๋กœ ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•˜์—ฌ ์นœํžˆ ๊ฐ„๊ตฌํ•˜์‹œ๋А๋‹ˆ๋ผ", // 26
"๋งˆ์Œ์„ ์‚ดํ”ผ์‹œ๋Š” ์ด๊ฐ€ ์„ฑ๋ น์˜ ์ƒ๊ฐ์„ ์•„์‹œ๋‚˜๋‹ˆ ์ด๋Š” ์„ฑ๋ น์ด ํ•˜๋‚˜๋‹˜์˜ ๋œป๋Œ€๋กœ ์„ฑ๋„๋ฅผ ์œ„ํ•˜์—ฌ ๊ฐ„๊ตฌํ•˜์‹ฌ์ด๋‹ˆ๋ผ", // 27
"์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ฑฐ๋‹ˆ์™€ ํ•˜๋‚˜๋‹˜์„ ์‚ฌ๋ž‘ํ•˜๋Š” ์ž ๊ณง ๊ทธ์˜ ๋œป๋Œ€๋กœ ๋ถ€๋ฅด์‹ฌ์„ ์ž…์€ ์ž๋“ค์—๊ฒŒ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ํ•ฉ๋ ฅํ•˜์—ฌ ์„ ์„ ์ด๋ฃจ๋А๋‹ˆ๋ผ", // 28
"ํ•˜๋‚˜๋‹˜์ด ๋ฏธ๋ฆฌ ์•„์‹  ์ž๋“ค์„ ๋˜ํ•œ ๊ทธ ์•„๋“ค์˜ ํ˜•์ƒ์„ ๋ณธ๋ฐ›๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋ฏธ๋ฆฌ ์ •ํ•˜์…จ์œผ๋‹ˆ ์ด๋Š” ๊ทธ๋กœ ๋งŽ์€ ํ˜•์ œ ์ค‘์—์„œ ๋ง์•„๋“ค์ด ๋˜๊ฒŒ ํ•˜๋ ค ํ•˜์‹ฌ์ด๋‹ˆ๋ผ", // 29
"๋˜ ๋ฏธ๋ฆฌ ์ •ํ•˜์‹  ๊ทธ๋“ค์„ ๋˜ํ•œ ๋ถ€๋ฅด์‹œ๊ณ  ๋ถ€๋ฅด์‹  ๊ทธ๋“ค์„ ๋˜ํ•œ ์˜๋กญ๋‹ค ํ•˜์‹œ๊ณ  ์˜๋กญ๋‹ค ํ•˜์‹  ๊ทธ๋“ค์„ ๋˜ํ•œ ์˜ํ™”๋กญ๊ฒŒ ํ•˜์…จ๋А๋‹ˆ๋ผ", // 30
"๊ทธ๋Ÿฐ์ฆ‰ ์ด ์ผ์— ๋Œ€ํ•˜์—ฌ ์šฐ๋ฆฌ๊ฐ€ ๋ฌด์Šจ ๋ง ํ•˜๋ฆฌ์š” ๋งŒ์ผ ํ•˜๋‚˜๋‹˜์ด ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•˜์‹œ๋ฉด ๋ˆ„๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๋Œ€์ ํ•˜๋ฆฌ์š”", // 31
"์ž๊ธฐ ์•„๋“ค์„ ์•„๋ผ์ง€ ์•„๋‹ˆํ•˜์‹œ๊ณ  ์šฐ๋ฆฌ ๋ชจ๋“  ์‚ฌ๋žŒ์„ ์œ„ํ•˜์—ฌ ๋‚ด์ฃผ์‹  ์ด๊ฐ€ ์–ด์ฐŒ ๊ทธ ์•„๋“ค๊ณผ ํ•จ๊ป˜ ๋ชจ๋“  ๊ฒƒ์„ ์šฐ๋ฆฌ์—๊ฒŒ ์ฃผ์‹œ์ง€ ์•„๋‹ˆํ•˜๊ฒ ๋А๋ƒ", // 32
"๋ˆ„๊ฐ€ ๋Šฅํžˆ ํ•˜๋‚˜๋‹˜๊ป˜์„œ ํƒํ•˜์‹  ์ž๋“ค์„ ๊ณ ๋ฐœํ•˜๋ฆฌ์š” ์˜๋กญ๋‹ค ํ•˜์‹  ์ด๋Š” ํ•˜๋‚˜๋‹˜์ด์‹œ๋‹ˆ", // 33
"๋ˆ„๊ฐ€ ์ •์ฃ„ํ•˜๋ฆฌ์š” ์ฃฝ์œผ์‹ค ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค์‹œ ์‚ด์•„๋‚˜์‹  ์ด๋Š” ๊ทธ๋ฆฌ์Šค๋„ ์˜ˆ์ˆ˜์‹œ๋‹ˆ ๊ทธ๋Š” ํ•˜๋‚˜๋‹˜ ์šฐํŽธ์— ๊ณ„์‹  ์ž์š” ์šฐ๋ฆฌ๋ฅผ ์œ„ํ•˜์—ฌ ๊ฐ„๊ตฌํ•˜์‹œ๋Š” ์ž์‹œ๋‹ˆ๋ผ", // 34
"๋ˆ„๊ฐ€ ์šฐ๋ฆฌ๋ฅผ ๊ทธ๋ฆฌ์Šค๋„์˜ ์‚ฌ๋ž‘์—์„œ ๋Š์œผ๋ฆฌ์š” ํ™˜๋‚œ์ด๋‚˜ ๊ณค๊ณ ๋‚˜ ๋ฐ•ํ•ด๋‚˜ ๊ธฐ๊ทผ์ด๋‚˜ ์ ์‹ ์ด๋‚˜ ์œ„ํ—˜์ด๋‚˜ ์นผ์ด๋žด", // 35
"๊ธฐ๋ก๋œ ๋ฐ” ใ„ฑ)์šฐ๋ฆฌ๊ฐ€ ์ข…์ผ ์ฃผ๋ฅผ ์œ„ํ•˜์—ฌ ์ฃฝ์ž„์„ ๋‹นํ•˜๊ฒŒ ๋˜๋ฉฐ ๋„์‚ด ๋‹นํ•  ์–‘ ๊ฐ™์ด ์—ฌ๊น€์„ ๋ฐ›์•˜๋‚˜์ด๋‹ค ํ•จ๊ณผ ๊ฐ™์œผ๋‹ˆ๋ผ", // 36
"๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ชจ๋“  ์ผ์— ์šฐ๋ฆฌ๋ฅผ ์‚ฌ๋ž‘ํ•˜์‹œ๋Š” ์ด๋กœ ๋ง๋ฏธ์•”์•„ ์šฐ๋ฆฌ๊ฐ€ ๋„‰๋„‰ํžˆ ์ด๊ธฐ๋А๋‹ˆ๋ผ", // 37
"๋‚ด๊ฐ€ ํ™•์‹ ํ•˜๋…ธ๋‹ˆ ์‚ฌ๋ง์ด๋‚˜ ์ƒ๋ช…์ด๋‚˜ ์ฒœ์‚ฌ๋“ค์ด๋‚˜ ๊ถŒ์„ธ์ž๋“ค์ด๋‚˜ ํ˜„์žฌ ์ผ์ด๋‚˜ ์žฅ๋ž˜ ์ผ์ด๋‚˜ ๋Šฅ๋ ฅ์ด๋‚˜", // 38
"๋†’์Œ์ด๋‚˜ ๊นŠ์Œ์ด๋‚˜ ๋‹ค๋ฅธ ์–ด๋–ค ํ”ผ์กฐ๋ฌผ์ด๋ผ๋„ ์šฐ๋ฆฌ๋ฅผ ์šฐ๋ฆฌ ์ฃผ ๊ทธ๋ฆฌ์Šค๋„ ์˜ˆ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ํ•˜๋‚˜๋‹˜์˜ ์‚ฌ๋ž‘์—์„œ ๋Š์„ ์ˆ˜ ์—†์œผ๋ฆฌ๋ผ" // 39
];
const body = document.body; // body ์š”์†Œ ์ฐธ์กฐ
const verseDisplay = document.getElementById('verse-display');
const prevButton = document.getElementById('prev-verse');
const nextButton = document.getElementById('next-verse');
const rateSlider = document.getElementById('rate-slider'); // ์†๋„ ์กฐ์ ˆ ์Šฌ๋ผ์ด๋”
const toggleModeButton = document.getElementById('toggle-mode'); // ๋ชจ๋“œ ์ „ํ™˜ ๋ฒ„ํŠผ
let currentVerseIndex = 0; // ํ˜„์žฌ ๋ณด์—ฌ์ฃผ๋Š” ์ ˆ์˜ ์ธ๋ฑ์Šค (0๋ถ€ํ„ฐ ์‹œ์ž‘)
// ํŠน์ • ์ ˆ์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ํ•จ์ˆ˜
function displayVerse(index) {
// ์ธ๋ฑ์Šค ๋ฒ”์œ„ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
if (index < 0 || index >= verses.length) {
return;
}
currentVerseIndex = index; // ํ˜„์žฌ ์ ˆ ์ธ๋ฑ์Šค ์—…๋ฐ์ดํŠธ
// ๊ธฐ์กด ์ ˆ ๋‚ด์šฉ ์ง€์šฐ๊ธฐ
verseDisplay.innerHTML = '';
// ์ƒˆ ์ ˆ ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ ๋ฐ ํ™œ์„ฑํ™” ํด๋ž˜์Šค ์ถ”๊ฐ€
const verseDiv = document.createElement('div');
verseDiv.classList.add('verse', 'active');
// ์ ˆ ๋ฒˆํ˜ธ ์ถ”๊ฐ€
const verseNumberSpan = document.createElement('span');
verseNumberSpan.classList.add('verse-number');
verseNumberSpan.textContent = `๋กœ๋งˆ์„œ 8์žฅ ${currentVerseIndex + 1}์ ˆ`;
verseDiv.appendChild(verseNumberSpan);
// ์ ˆ ํ…์ŠคํŠธ๋ฅผ ๋„์–ด์“ฐ๊ธฐ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 
const parts = verses[currentVerseIndex].split(' ');
// ํŒŒํŠธ ์ „์ฒด๋ฅผ ๋‹ด๋Š” ์ปจํ…Œ์ด๋„ˆ ์ƒ์„ฑ (Flexbox๋กœ ์ค„๋ฐ”๊ฟˆ ๋‹ด๋‹น)
const partsContainer = document.createElement('div');
partsContainer.classList.add('parts-container');
// ๊ฐ ํŒŒํŠธ๋ณ„ ๋ธ”๋ก ์ƒ์„ฑ ๋ฐ partsContainer์— ์ถ”๊ฐ€
parts.forEach(partText => {
// ๋นˆ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ ๊ฒฝ์šฐ์—๋งŒ ํŒŒํŠธ ์ƒ์„ฑ
if (partText.trim() !== '') {
const partDiv = document.createElement('div');
partDiv.classList.add('part');
// ํ…์ŠคํŠธ ๋‚ด์šฉ ์„ค์ • ์‹œ ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
partDiv.textContent = partText.trim();
// ํด๋ฆญ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€
partDiv.addEventListener('click', function() {
// --- ํด๋ฆญ๋œ ํŒŒํŠธ ํ•˜์ด๋ผ์ดํŠธ (ํ•ญ์ƒ ๋…ธ๋ž€์ƒ‰) ---
// ํ˜„์žฌ ์ ˆ์˜ ๋ชจ๋“  ํŒŒํŠธ ๋ธ”๋ก ๊ฐ€์ ธ์˜ค๊ธฐ (partsContainer ๋‚ด์—์„œ ์ฐพ์Œ)
const allPartsInVerse = partsContainer.querySelectorAll('.part');
// ๋ชจ๋“  ํŒŒํŠธ์˜ active ํด๋ž˜์Šค ์ œ๊ฑฐ (ํด๋ฆญ ์•ˆ ๋œ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆผ)
allPartsInVerse.forEach(p => {
p.classList.remove('active');
});
// ํด๋ฆญ๋œ ํŒŒํŠธ์— active ํด๋ž˜์Šค ์ถ”๊ฐ€ (๋…ธ๋ž€์ƒ‰์œผ๋กœ ๋ณ€๊ฒฝ)
this.classList.add('active');
// --- ํด๋ฆญ๋œ ํŒŒํŠธ ํ•˜์ด๋ผ์ดํŠธ ๋ ---
// --- TTS ๋กœ์ง ---
const textToSpeak = this.textContent; // ํด๋ฆญ๋œ ํŒŒํŠธ์˜ ํ…์ŠคํŠธ ๊ฐ€์ ธ์˜ค๊ธฐ
// ๋นˆ ๋ฌธ์ž์—ด์ด๊ฑฐ๋‚˜ TTS ์ง€์› ์•ˆ ํ•˜๋ฉด ์‹คํ–‰ ์•ˆ ํ•จ
if (textToSpeak && 'speechSynthesis' in window) {
// ํ˜„์žฌ ์žฌ์ƒ ์ค‘์ธ ์Œ์„ฑ์ด ์žˆ๋‹ค๋ฉด ์ค‘์ง€
window.speechSynthesis.cancel();
// ์Œ์„ฑ ํ•ฉ์„ฑ ๊ฐ์ฒด ์ƒ์„ฑ
const utterance = new SpeechSynthesisUtterance(textToSpeak);
// ์–ธ์–ด ์„ค์ • (ํ•œ๊ตญ์–ด)
utterance.lang = 'ko-KR';
// ์Šฌ๋ผ์ด๋” ๊ฐ’์œผ๋กœ ์†๋„ ์„ค์ •
utterance.rate = parseFloat(rateSlider.value);
// ํ…์ŠคํŠธ ์ฝ๊ธฐ ์‹œ์ž‘
window.speechSynthesis.speak(utterance);
} else if (!('speechSynthesis' in window)) {
console.warn("Text-to-speech is not supported in this browser.");
}
// --- TTS ๋กœ์ง ๋ ---
});
// partsContainer์— ํŒŒํŠธ ๋ธ”๋ก ์ถ”๊ฐ€
partsContainer.appendChild(partDiv);
}
});
// ์ ˆ ์ปจํ…Œ์ด๋„ˆ์— partsContainer ์ถ”๊ฐ€
verseDiv.appendChild(partsContainer);
// ํ™”๋ฉด์— ์ ˆ ์ปจํ…Œ์ด๋„ˆ ์ถ”๊ฐ€
verseDisplay.appendChild(verseDiv);
// ๋„ค๋น„๊ฒŒ์ด์…˜ ๋ฒ„ํŠผ ์ƒํƒœ ์—…๋ฐ์ดํŠธ
prevButton.disabled = currentVerseIndex === 0; // ์ฒซ ์ ˆ์ด๋ฉด ์ด์ „ ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™”
nextButton.disabled = currentVerseIndex === verses.length - 1; // ๋งˆ์ง€๋ง‰ ์ ˆ์ด๋ฉด ๋‹ค์Œ ๋ฒ„ํŠผ ๋น„ํ™œ์„ฑํ™”
// TTS ์žฌ์ƒ ์ค‘์ง€ (์ ˆ ์ „ํ™˜ ์‹œ ๋ถˆํ•„์š”ํ•œ ์†Œ๋ฆฌ ๋ฐฉ์ง€)
if ('speechSynthesis' in window) {
window.speechSynthesis.cancel();
}
}
// ์ด์ „ ์ ˆ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
prevButton.addEventListener('click', () => {
displayVerse(currentVerseIndex - 1);
});
// ๋‹ค์Œ ์ ˆ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
nextButton.addEventListener('click', () => {
displayVerse(currentVerseIndex + 1);
});
// ๋ชจ๋“œ ์ „ํ™˜ ๋ฒ„ํŠผ ํด๋ฆญ ์ด๋ฒคํŠธ
toggleModeButton.addEventListener('click', () => {
// body์— ํ˜„์žฌ ๋ชจ๋“œ ํด๋ž˜์Šค๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์ƒํƒœ ํ† ๊ธ€
const isPreviewMode = body.classList.contains('preview-mode');
if (isPreviewMode) {
// ๋ฏธ๋ฆฌ๋ณด๊ธฐ -> ๊ฐ€๋ฆฌ๊ธฐ ๋ชจ๋“œ๋กœ ์ „ํ™˜
body.classList.remove('preview-mode');
body.classList.add('hide-mode');
toggleModeButton.textContent = "๊ธ€์ž ๋ฏธ๋ฆฌ๋ณด๊ธฐ";
} else {
// ๊ฐ€๋ฆฌ๊ธฐ -> ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ชจ๋“œ๋กœ ์ „ํ™˜
body.classList.remove('hide-mode');
body.classList.add('preview-mode');
toggleModeButton.textContent = "๊ธ€์ž ๊ฐ€๋ฆฌ๊ธฐ";
}
// TTS ์žฌ์ƒ ์ค‘์ง€ (๋ชจ๋“œ ์ „ํ™˜ ์‹œ ๋ถˆํ•„์š”ํ•œ ์†Œ๋ฆฌ ๋ฐฉ์ง€)
if ('speechSynthesis' in window) {
window.speechSynthesis.cancel();
}
// ๋ชจ๋“  ํŒŒํŠธ์˜ active ์ƒํƒœ ํ•ด์ œ (๋ชจ๋“œ ๋ณ€๊ฒฝ ์‹œ ์ด์ „ ํด๋ฆญ ์ƒํƒœ ์ดˆ๊ธฐํ™”)
const allPartsInVerse = verseDisplay.querySelectorAll('.part');
allPartsInVerse.forEach(p => p.classList.remove('active'));
});
// ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ์ฒซ ๋ฒˆ์งธ ์ ˆ ํ‘œ์‹œ
document.addEventListener('DOMContentLoaded', () => {
displayVerse(currentVerseIndex);
});
</script>
</body>
</html>