swq2f / style.css
ssboost's picture
Update style.css
46df279 verified
body {
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
line-height: 1.6;
margin: 0;
padding: 0;
background-color: #f0f0f0;
color: #333;
}
.container {
max-width: 1200px; /* ํŽ˜์ด์ง€ ์ „์ฒด ์ปจํ…Œ์ด๋„ˆ ์ตœ๋Œ€ ๋„ˆ๋น„ */
margin: 20px auto;
padding: 20px;
background-color: white;
box-shadow: 0 0 10px rgba(0,0,0,0.1);
border-radius: 8px;
display: flex;
flex-direction: column;
}
h1, h2, h3 {
color: #2c3e50;
text-align: center;
}
p {
text-align: center;
margin-bottom: 20px;
}
.upload-container {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
margin-bottom: 20px;
gap: 20px;
}
.upload-box {
flex: 1;
min-width: 300px;
border: 2px dashed #3498db;
border-radius: 5px;
padding: 20px;
text-align: center;
transition: background-color 0.3s;
}
.upload-box:hover {
background-color: #ecf0f1;
}
.upload-label {
display: block;
font-weight: bold;
margin-bottom: 10px;
color: #2980b9;
}
.file-input {
display: none;
}
.upload-button {
display: inline-block;
background-color: #3498db;
color: white;
padding: 10px 20px;
border-radius: 5px;
cursor: pointer;
transition: background-color 0.3s;
}
.upload-button:hover {
background-color: #2980b9;
}
/* ์ž‘์—… ์˜์—ญ ๋ž˜ํผ */
.workspace-wrapper {
display: flex; /* ์บ”๋ฒ„์Šค+์ปจํŠธ๋กค ์˜์—ญ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์˜์—ญ์„ ๊ฐ€๋กœ๋กœ ๋ฐฐ์น˜ */
flex-wrap: wrap; /* ํ™”๋ฉด์ด ์ž‘์„ ๊ฒฝ์šฐ ์ค„๋ฐ”๊ฟˆ ํ—ˆ์šฉ */
gap: 20px;
margin-bottom: 20px;
}
/* ์บ”๋ฒ„์Šค์™€ ์ปจํŠธ๋กค ํŒจ๋„๋“ค์„ ๋ฌถ๋Š” ์˜์—ญ */
.canvas-and-controls {
flex: 3; /* ๊ฐ€๋กœ ๋ฐฐ์น˜ ์‹œ ๋น„์œจ (์บ”๋ฒ„์Šค ์˜์—ญ์ด ๋” ๋„“๊ฒŒ) */
display: flex;
flex-direction: column; /* ์บ”๋ฒ„์Šค ์•„๋ž˜์— ์ปจํŠธ๋กค ํŒจ๋„ ๋ฐฐ์น˜ (ํ•„์š”์‹œ ๊ตฌ์กฐ ๋ณ€๊ฒฝ) */
min-width: 0; /* flex item์˜ ๋‚ด์šฉ์ด ๋„˜์น  ๋•Œ ์ˆ˜์ถ•ํ•˜๋„๋ก ํ•จ */
}
.canvas-container {
position: relative;
width: 100%; /* ๋ถ€๋ชจ ๋„ˆ๋น„์— ๋งž์ถค */
/* max-width: 800px; /* ์บ”๋ฒ„์Šค ์ตœ๋Œ€ ๋„ˆ๋น„๋Š” JS์—์„œ ์„ค์ •๋œ CANVAS_WIDTH์— ๋”ฐ๋ฆ„ */
border: 2px solid #333;
border-radius: 4px;
overflow: hidden; /* ์บ”๋ฒ„์Šค๊ฐ€ ๋„˜์น˜์ง€ ์•Š๋„๋ก */
margin-bottom: 20px; /* ์ปจํŠธ๋กค ํŒจ๋„๊ณผ์˜ ๊ฐ„๊ฒฉ */
}
#canvas {
display: block; /* ํ•˜๋‹จ ์—ฌ๋ฐฑ ์ œ๊ฑฐ */
width: 100%; /* canvas-container์— ๊ฝ‰ ์ฐจ๊ฒŒ */
height: auto; /* ๋น„์œจ ์œ ์ง€ */
background-color: #ffffff;
cursor: default;
}
/* ์ปจํŠธ๋กค ํŒจ๋„๋“ค์„ ๋ชจ์•„๋‘๋Š” ์‚ฌ์ด๋“œ๋ฐ” ์—ญํ•  (๋˜๋Š” ์บ”๋ฒ„์Šค ์•„๋ž˜ ์˜์—ญ) */
.control-panel-sidebar {
display: flex;
flex-direction: column;
gap: 15px;
/* flex: 1; /* canvas-and-controls ๋‚ด์—์„œ ๋น„์œจ (ํ•„์š”์‹œ) */
}
.control-group {
display: flex;
flex-direction: column;
/* align-items: center; ํ•ญ๋ชฉ๋“ค์ด ์ค‘์•™ ์ •๋ ฌ๋˜์ง€ ์•Š๋„๋ก ์ œ๊ฑฐ ๋˜๋Š” ์ˆ˜์ • */
border: 1px solid #ddd;
padding: 15px;
border-radius: 5px;
background-color: #f9f9f9;
/* min-width: 250px; /* ์ตœ์†Œ ๋„ˆ๋น„๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ์กฐ์ • */
}
.control-group h3 {
margin: 0 0 15px 0;
font-size: 1rem;
text-align: center;
width: 100%;
}
.slider-container {
display: flex;
align-items: center;
gap: 10px;
margin: 8px 0;
width: 100%;
padding: 0 5px;
box-sizing: border-box;
}
.slider-container label {
font-weight: bold;
min-width: 50px; /* "ํšŒ์ „:" ๋“ฑ ๋ ˆ์ด๋ธ”์ด ์ž˜๋ฆฌ์ง€ ์•Š๋„๋ก ์ถฉ๋ถ„ํžˆ */
text-align: left;
flex-shrink: 0;
}
.slider-container input[type="range"] {
flex-grow: 1; /* ์Šฌ๋ผ์ด๋”๊ฐ€ ๋‚จ์€ ๊ณต๊ฐ„์„ ๋ชจ๋‘ ์ฐจ์ง€ */
width: auto; /* flex-grow๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก auto๋กœ ์„ค์ • */
margin: 0 5px; /* ์ขŒ์šฐ ์•ฝ๊ฐ„์˜ ์—ฌ๋ฐฑ */
}
.slider-container .value-display {
min-width: 40px; /* ๊ฐ’ ํ‘œ์‹œ ์˜์—ญ ๋„ˆ๋น„ */
text-align: right; /* ๊ฐ’์„ ์˜ค๋ฅธ์ชฝ์— ํ‘œ์‹œ */
flex-shrink: 0;
}
/* ์‚ญ์ œ ๋ฒ„ํŠผ ์Šคํƒ€์ผ */
.delete-button {
background-color: #e74c3c;
color: white;
border: none;
border-radius: 50%;
width: 22px;
height: 22px;
font-size: 14px;
line-height: 1;
cursor: pointer;
margin-left: 5px;
display: flex;
align-items: center;
justify-content: center;
transition: background-color 0.2s;
}
.delete-button:hover {
background-color: #c0392b;
}
.layer-option {
margin-bottom: 10px;
display: flex;
justify-content: space-between;
}
#delete-layer-btn {
width: 100%;
margin-bottom: 8px;
padding: 8px;
font-size: 14px;
}
.delete-button:disabled,
#delete-layer-btn:disabled {
background-color: #ccc;
cursor: not-allowed;
}
/* ๋ ˆ์ด์–ด ํ•ญ๋ชฉ ์Šคํƒ€์ผ ๊ฐœ์„  */
.layer-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 8px 10px;
border-bottom: 1px solid #eee;
cursor: pointer;
transition: background-color 0.2s;
}
.layer-item:hover {
background-color: #f5f5f5;
}
.layer-item.active {
background-color: #e3f2fd;
border-left: 3px solid #2196F3;
}
/* ๋ ˆ์ด์–ด ๋ชฉ๋ก ์Šคํƒ€์ผ */
.layers-list {
width: 100%;
max-height: 150px;
overflow-y: auto;
border: 1px solid #ddd;
border-radius: 4px;
}
.layer-item {
padding: 8px;
border-bottom: 1px solid #eee;
cursor: pointer;
display: flex;
justify-content: space-between;
align-items: center;
}
.layer-item:last-child { border-bottom: none; }
.layer-item:hover { background-color: #f5f5f5; }
.layer-item.active { background-color: #e3f2fd; font-weight: bold; }
.layer-name { flex-grow: 1; padding-left: 5px; }
.layer-controls { display: flex; gap: 5px; }
.layer-button {
background-color: #f0f0f0; border: 1px solid #ddd; border-radius: 3px;
padding: 2px 5px; cursor: pointer; font-size: 11px; color: #555;
transition: all 0.2s ease;
}
.layer-button:hover { background-color: #e0e0e0; }
/* ํ•„ํ„ฐ ํŒจ๋„ ์Šคํƒ€์ผ */
.filter-panel {
/* width: 100%; /* ๋ถ€๋ชจ(.control-panel-sidebar)์— ์˜ํ•ด ๋„ˆ๋น„ ๊ฒฐ์ • */
padding: 15px;
border: 1px solid #ddd;
border-radius: 5px;
background-color: #f9f9f9;
}
.filter-panel h3 { margin: 0 0 15px 0; text-align: center; }
.filter-sliders { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 15px; }
.filter-slider-container { display: flex; flex-direction: column; gap: 5px; width: 100%; padding: 0 5px; box-sizing: border-box; }
.filter-slider-container label { font-size: 14px; margin-bottom: 5px; text-align: left; }
.large-slider { width: 100%; height: 20px; /* ์Šฌ๋ผ์ด๋” ๋†’์ด ์กฐ์ • */ }
.filter-slider-container .value-display { text-align: right; font-weight: bold; }
.filter-buttons { display: flex; justify-content: center; margin-top: 15px; }
#reset-filter-btn { width: auto; padding: 8px 15px; flex-grow: 1; max-width: 200px; }
/* ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์„น์…˜ */
.preview-section {
flex: 2; /* ๊ฐ€๋กœ ๋ฐฐ์น˜ ์‹œ ๋น„์œจ (์บ”๋ฒ„์Šค ์˜์—ญ๋ณด๋‹ค ์ž‘๊ฒŒ) */
display: flex; /* ๋‚ด๋ถ€ ์ปจํ…Œ์ด๋„ˆ ์ •๋ ฌ ์œ„ํ•จ */
flex-direction: column;
align-items: center; /* ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ค‘์•™์— */
min-width: 0; /* flex item์˜ ๋‚ด์šฉ์ด ๋„˜์น  ๋•Œ ์ˆ˜์ถ•ํ•˜๋„๋ก ํ•จ */
}
.preview-container {
width: 100%; /* preview-section ๋„ˆ๋น„์— ๋งž์ถค */
margin-top: 0; /* workspace-wrapper์—์„œ gap์œผ๋กœ ์ฒ˜๋ฆฌ */
display: none; /* ์ดˆ๊ธฐ์—๋Š” ์ˆจ๊น€ (JS๋กœ ์ œ์–ด) */
flex-direction: column;
align-items: center;
padding: 10px;
border: 1px dashed #ccc;
border-radius: 4px;
background-color: #f9f9f9;
}
.preview-container h3 {
margin-bottom: 10px;
}
#preview-img {
max-width: 100%;
max-height: 400px; /* ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ด๋ฏธ์ง€ ์ตœ๋Œ€ ๋†’์ด ์ œํ•œ */
border: 2px solid #333;
border-radius: 4px;
object-fit: contain; /* ์ด๋ฏธ์ง€ ๋น„์œจ ์œ ์ง€ */
}
/* ํ•˜๋‹จ ๋ฒ„ํŠผ ์ปจํ…Œ์ด๋„ˆ */
.button-container {
display: flex;
justify-content: center;
gap: 15px;
margin-top: 20px; /* workspace-wrapper ์™€์˜ ๊ฐ„๊ฒฉ */
flex-wrap: wrap;
}
button {
padding: 10px 20px;
border: none;
border-radius: 5px;
cursor: pointer;
font-weight: bold;
transition: background-color 0.3s;
}
.primary-btn { background-color: #27ae60; color: white; }
.primary-btn:hover { background-color: #219653; }
.danger-btn { background-color: #e74c3c; color: white; }
.danger-btn:hover { background-color: #c0392b; }
.info-btn { background-color: #3498db; color: white; }
.info-btn:hover { background-color: #2980b9; }
/* ๋ชจ๋ฐ”์ผ ๋Œ€์‘ */
@media (max-width: 900px) { /* ์ข€ ๋” ๋„“์€ ํ™”๋ฉด์—์„œ๋ถ€ํ„ฐ ๋ ˆ์ด์•„์›ƒ ๋ณ€๊ฒฝ ๊ณ ๋ ค */
.workspace-wrapper {
flex-direction: column; /* ์ž‘์—… ์˜์—ญ๊ณผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ฅผ ์„ธ๋กœ๋กœ ๋ฐฐ์น˜ */
align-items: center; /* ์ค‘์•™ ์ •๋ ฌ */
}
.canvas-and-controls, .preview-section {
flex-basis: auto; /* flex ๋น„์œจ ์ดˆ๊ธฐํ™” */
width: 100%; /* ์ „์ฒด ๋„ˆ๋น„ ์‚ฌ์šฉ */
max-width: 600px; /* ๋ชจ๋ฐ”์ผ์—์„œ ๋„ˆ๋ฌด ๋„“์–ด์ง€์ง€ ์•Š๋„๋ก */
}
.control-panel-sidebar {
width: 100%; /* ์ „์ฒด ๋„ˆ๋น„ ์‚ฌ์šฉ */
}
.filter-sliders {
grid-template-columns: 1fr; /* ํ•„ํ„ฐ ์Šฌ๋ผ์ด๋” ํ•œ ์ค„๋กœ */
}
}
@media (max-width: 768px) {
.upload-container {
flex-direction: column;
}
.upload-box {
width: 100%;
margin-bottom: 10px;
}
}