Up Date to vintage

This commit is contained in:
mrkad@rpi
2026-01-18 02:27:05 +07:00
parent a64631865c
commit a5d76734fd
10 changed files with 597 additions and 432 deletions

View File

@@ -304,11 +304,12 @@ const retakePhoto = () => {
<template>
<div class="shooting-container">
<header class="header">
<!-- <header class="header">
<button @click="goBack" class="back-button"> กล</button>
<h1>ายภาพ</h1>
<span class="photo-counter">{{ currentPhotoIndex }}/{{ totalPhotos }}</span>
</header>
</header> -->
<section class="camera-section">
<div class="camera-container">
@@ -373,11 +374,14 @@ const retakePhoto = () => {
</template>
<style scoped>
@import url('https://fonts.googleapis.com/css2?family=Crete+Round&family=Old+Standard+TT&display=swap');
.shooting-container {
min-height: 100vh;
padding: 2rem;
background: #000;
color: white;
padding: 1.5rem; /* Adjusted padding */
background: #fdfaf6; /* Dark brown, vintage background */
color: #fdfaf6; /* Light vintage paper color for text */
font-family: 'Old Standard TT', serif;
display: flex;
flex-direction: column;
}
@@ -387,28 +391,46 @@ const retakePhoto = () => {
align-items: center;
justify-content: space-between;
margin-bottom: 2rem;
background: #5d4037; /* Darker vintage tone for header */
padding: 0.8rem 1.2rem;
border-radius: 8px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
border: 1px solid #4e342e;
}
.back-button {
background: rgba(255,255,255,0.2);
color: white;
border: 1px solid rgba(255,255,255,0.3);
padding: 0.5rem 1rem;
border-radius: 8px;
background: #8d6e63; /* Vintage brown */
color: #fdfaf6;
border: 1px solid #795548;
padding: 0.4rem 0.8rem;
border-radius: 5px;
cursor: pointer;
font-size: 1rem;
font-weight: bold;
box-shadow: 1px 1px 3px rgba(0,0,0,0.1);
transition: background 0.2s ease, transform 0.2s ease;
}
.back-button:hover {
background: #795548;
transform: translateY(-1px);
}
.header h1 {
margin: 0;
font-size: 2rem;
font-family: 'Crete Round', serif;
color: #fdfaf6;
text-shadow: 1px 1px 2px rgba(0,0,0,0.1);
}
.photo-counter {
background: rgba(255,255,255,0.2);
background: #a1887f; /* Muted brown */
padding: 0.5rem 1rem;
border-radius: 20px;
font-weight: bold;
color: #fdfaf6;
border: 1px solid #8d6e63;
}
.camera-section {
@@ -424,9 +446,11 @@ const retakePhoto = () => {
width: 100%;
max-width: 400px;
aspect-ratio: 3/4;
border-radius: 16px;
border-radius: 12px; /* Slightly softer radius */
overflow: hidden;
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
box-shadow: 0 5px 20px rgba(0,0,0,0.4); /* Darker, more prominent shadow */
border: 4px solid #4e342e; /* Frame-like border */
background: #2b1c18; /* Darker background inside frame */
}
.camera-video {
@@ -454,28 +478,30 @@ const retakePhoto = () => {
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.7);
background: rgba(43, 28, 24, 0.85); /* Darker, vintage transparent overlay */
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
animation: countdownFade 1s ease-in-out;
animation: none; /* Removed fade animation for countdown */
}
.countdown-info {
font-size: 1.5rem;
font-weight: bold;
color: white;
color: #fdfaf6; /* Light text */
margin-bottom: 1rem;
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
text-shadow: 1px 1px 2px rgba(0,0,0,0.5);
font-family: 'Crete Round', serif;
}
.countdown-number {
font-size: 8rem;
font-size: 7rem; /* Slightly smaller number */
font-weight: bold;
color: white;
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
color: #ff5e3a; /* Vintage orange-red for countdown */
text-shadow: 2px 2px 5px rgba(255, 94, 58, 0.7); /* Glowing effect */
animation: countdownPulse 1s ease-in-out;
font-family: 'Digital-7', monospace; /* Ideal for digital clock look, otherwise Courier New */
}
.capture-guide {
@@ -489,8 +515,8 @@ const retakePhoto = () => {
.guide-frame {
width: 80%;
height: 80%;
border: 3px solid rgba(255,255,255,0.5);
border-radius: 12px;
border: 2px dashed rgba(253,250,246,0.5); /* Dashed light border for guide */
border-radius: 8px;
}
.controls {
@@ -501,54 +527,72 @@ const retakePhoto = () => {
}
.capture-button {
background: #ff6b6b;
color: white;
border: none;
padding: 1rem 2rem;
font-size: 1.2rem;
background: #a1887f; /* Vintage brown */
color: #fdfaf6;
border: 2px solid #8d6e63;
padding: 1rem 2.5rem;
font-size: 1.3rem;
font-weight: bold;
border-radius: 50px;
border-radius: 8px; /* Softer border-radius */
cursor: pointer;
transition: all 0.3s ease;
min-width: 200px;
min-width: 220px;
box-shadow: 0 4px 10px rgba(0,0,0,0.2);
font-family: 'Crete Round', serif;
text-transform: uppercase;
letter-spacing: 1px;
}
.capture-button:hover:not(:disabled) {
background: #ff5252;
transform: scale(1.05);
background: #8d6e63;
transform: translateY(-2px);
box-shadow: 0 6px 15px rgba(0,0,0,0.3);
}
.capture-button:disabled {
opacity: 0.6;
opacity: 0.5;
cursor: not-allowed;
background: #a1887f; /* Keep base color */
border-color: #8d6e63;
box-shadow: none;
}
.capturing {
animation: pulse 0.5s ease-in-out;
animation: pulse 0.5s ease-in-out infinite alternate; /* Keep pulse but make it subtle */
}
.retake-button {
background: rgba(255,255,255,0.2);
color: white;
border: 1px solid rgba(255,255,255,0.3);
padding: 0.75rem 1.5rem;
border-radius: 25px;
background: #6d4c41; /* Muted brown */
color: #fdfaf6;
border: 1px solid #5d4037;
padding: 0.7rem 1.4rem;
border-radius: 5px;
cursor: pointer;
transition: all 0.3s ease;
font-weight: bold;
font-family: 'Old Standard TT', serif;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.retake-button:hover {
background: rgba(255,255,255,0.3);
background: #5d4037;
transform: translateY(-1px);
}
.preview-section {
margin-top: 2rem;
text-align: center;
background: #2b1c18; /* Dark background for preview section */
padding: 1.5rem;
border-radius: 10px;
box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
}
.preview-section h3 {
margin-bottom: 1rem;
color: #ccc;
color: #fdfaf6;
font-family: 'Crete Round', serif;
text-shadow: 1px 1px 2px rgba(0,0,0,0.05);
}
.photo-preview {
@@ -560,53 +604,48 @@ const retakePhoto = () => {
.preview-item {
position: relative;
width: 60px;
width: 70px; /* Slightly larger preview items */
aspect-ratio: 3/4;
border-radius: 8px;
border-radius: 4px; /* Sharper corners for printed photo look */
overflow: hidden;
border: 2px solid #bcaaa4; /* Frame-like border for previews */
box-shadow: 0 2px 5px rgba(0,0,0,0.15); /* Subtle shadow for depth */
}
.preview-item img {
width: 100%;
height: 100%;
object-fit: cover;
filter: sepia(0.1) brightness(0.95); /* Subtle sepia and brightness for vintage feel */
}
.photo-number {
position: absolute;
top: 4px;
right: 4px;
background: rgba(0,0,0,0.7);
color: white;
width: 20px;
height: 20px;
background: #8d6e63; /* Vintage brown for number badge */
color: #fdfaf6;
width: 22px; /* Slightly larger badge */
height: 22px;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-size: 0.8rem;
font-weight: bold;
box-shadow: 1px 1px 3px rgba(0,0,0,0.2);
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.1); }
100% { transform: scale(1); }
}
@keyframes countdownFade {
0% { opacity: 0; }
10% { opacity: 1; }
90% { opacity: 1; }
100% { opacity: 0; }
0% { transform: scale(1); box-shadow: 0 4px 10px rgba(0,0,0,0.2); }
50% { transform: scale(1.02); box-shadow: 0 6px 15px rgba(0,0,0,0.3); }
100% { transform: scale(1); box-shadow: 0 4px 10px rgba(0,0,0,0.2); }
}
@keyframes countdownPulse {
0% { transform: scale(0.8); opacity: 0; }
20% { transform: scale(1.2); opacity: 1; }
50% { transform: scale(1); }
80% { transform: scale(1.1); }
100% { transform: scale(1); opacity: 0; }
0% { transform: scale(0.8); opacity: 0.5; }
50% { transform: scale(1.1); opacity: 1; }
100% { transform: scale(1); opacity: 0.8; }
}
@media (max-width: 768px) {
@@ -620,7 +659,23 @@ const retakePhoto = () => {
.preview-item {
width: 60px;
height: 60px;
height: auto; /* Adjust height automatically with aspect-ratio */
}
.header h1 {
font-size: 1.8rem;
}
.countdown-number {
font-size: 5rem;
}
.capture-button {
font-size: 1.1rem;
padding: 0.8rem 2rem;
min-width: 180px;
}
.retake-button {
font-size: 0.9rem;
padding: 0.6rem 1.2rem;
}
}
</style>