orbithub-nexus / style.css
U2's picture
홈페이지를 하나 만드는데, 3차원으로 커다란 원형 형태로 된 빌딩이 있는데, 그 빌딩을 회전하면서 그 안에 입주된 방을 하나의 페이지 링크로 사용하는거지. 건물을 빙빙돌려가면 전면부에 각 방에 대해 말풍선 뜨든 그 방이 조금 확대되든 어떤 식으로든 표시를 해 줘야겠지. 그리고 새로운 페이지를 만들려면 빈 방을 클릭해서 URL을 링크를 걸면, 자동으로 그 URL의 대표이미지와 메타 정보를 가져와서 스냅샵처럼 보여주면 되겠다.
2c04447 verified
Raw
History Blame Contribute Delete
2.75 kB
/* Custom 3D Scene Styles */
:root {
--primary: #4f46e5;
--secondary: #0f172a;
--accent: #818cf8;
}
body {
margin: 0;
font-family: 'Inter', system-ui, -apple-system, sans-serif;
perspective: 1000px; /* Global perspective just in case */
}
.perspective-container {
perspective: 1200px;
}
.scene {
perspective: 1200px;
}
.carousel {
transform-style: preserve-3d;
transition: transform 0.5s cubic-bezier(0.25, 1, 0.5, 1);
}
/* Room Card Styling */
.room-card {
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
border-radius: 20px;
background: rgba(30, 41, 59, 0.7);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);
display: flex;
flex-direction: column;
overflow: hidden;
transform-style: preserve-3d;
transition: all 0.5s ease;
cursor: pointer;
}
.room-card:hover {
border-color: var(--accent);
box-shadow: 0 0 20px rgba(99, 102, 241, 0.4);
}
.room-card.active {
box-shadow: 0 0 30px rgba(99, 102, 241, 0.6);
border: 2px solid var(--primary);
}
.room-card::before {
content: '';
position: absolute;
inset: 0;
background: linear-gradient(180deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0) 100%);
pointer-events: none;
}
.room-image {
width: 100%;
height: 60%;
object-fit: cover;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.room-content {
padding: 1.5rem;
flex-grow: 1;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
transform: translateZ(20px); /* Pop out text */
}
/* Empty Room State */
.room-card.empty-state {
background: rgba(15, 23, 42, 0.6);
border: 2px dashed rgba(99, 102, 241, 0.3);
display: flex;
justify-content: center;
align-items: center;
}
.room-card.empty-state:hover {
background: rgba(99, 102, 241, 0.1);
border-color: var(--accent);
}
.plus-icon-large {
width: 64px;
height: 64px;
color: rgba(99, 102, 241, 0.5);
transition: transform 0.3s;
}
.room-card.empty-state:hover .plus-icon-large {
transform: scale(1.2) rotate(90deg);
color: var(--accent);
}
/* Animations */
@keyframes blob {
0% { transform: translate(0px, 0px) scale(1); }
33% { transform: translate(30px, -50px) scale(1.1); }
66% { transform: translate(-20px, 20px) scale(0.9); }
100% { transform: translate(0px, 0px) scale(1); }
}
.animate-blob {
animation: blob 7s infinite;
}
.animation-delay-2000 {
animation-delay: 2s;
}
.animation-delay-4000 {
animation-delay: 4s;
}
/* Scrollbar hide */
::-webkit-scrollbar {
display: none;
}