Template:3DCube/style.css: Difference between revisions
From SNCApedia, the shit nobody cares about encyclopedia
Jump to navigationJump to search
SomebodyRum (talk | contribs) No edit summary |
SomebodyRum (talk | contribs) No edit summary |
||
| Line 1: | Line 1: | ||
/* Template:3DCube/ | /* Template:3DCube/styles.css | ||
2D matrix simulation of a | Hardware-accelerated 2D matrix simulation of a 3D cube. | ||
Fully compatible with MediaWiki CSS sanitizers. */ | |||
.scene { | .mw-3dcube-scene { | ||
width: 200px; | width: 200px; | ||
height: 200px; | height: 200px; | ||
position: relative; | position: relative; | ||
/* Scaling is handled inline by the template */ | |||
} | } | ||
. | .mw-3dcube { | ||
width: 100%; | width: 100%; | ||
height: 100%; | height: 100%; | ||
| Line 16: | Line 16: | ||
} | } | ||
. | .mw-3dcube-face { | ||
position: absolute; | position: absolute; | ||
width: 200px; | width: 200px; | ||
| Line 24: | Line 24: | ||
transform-origin: 50% 50%; | transform-origin: 50% 50%; | ||
overflow: hidden; | overflow: hidden; | ||
background: transparent; | background-color: transparent; | ||
} | } | ||
/* Force images to fill | /* Force inner images to perfectly fill the face */ | ||
. | .mw-3dcube-face img { | ||
display: block; | display: block; | ||
width: | width: 100% !important; | ||
height: | height: 100% !important; | ||
border: none !important; | border: none !important; | ||
object-fit: cover; | |||
} | } | ||
/* z-index | /* Base animations */ | ||
.mw-3dcube-front { animation: mw-3dcube-front 8s linear infinite; } | |||
.mw-3dcube-right { animation: mw-3dcube-right 8s linear infinite; } | |||
.mw-3dcube-back { animation: mw-3dcube-back 8s linear infinite; } | |||
.mw-3dcube-left { animation: mw-3dcube-left 8s linear infinite; } | |||
.mw-3dcube-top { animation: mw-3dcube-top 8s linear infinite; z-index: 4; } | |||
.mw-3dcube-bottom { animation: mw-3dcube-bottom 8s linear infinite; z-index: 0; } | |||
/* Optional: pause rotation on hover */ | |||
. | .mw-3dcube-scene:hover .mw-3dcube-face { animation-play-state: paused; } | ||
. | |||
@keyframes | /* --- Orthographic 2D Matrix Keyframes --- */ | ||
0% { transform: matrix(1, | @keyframes mw-3dcube-front { | ||
12.5% { transform: matrix(0.707, -0.354, 0, 0.866, | 0% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; } | ||
25% { transform: matrix(0, | 12.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; } | ||
37.5% { transform: matrix(-0.707,-0.354, 0, 0.866, | 25% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; } | ||
50% { transform: matrix(-1, | 37.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; } | ||
62.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7,-35.4); z-index: 2; } | 50% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; } | ||
75% { transform: matrix(0, | 62.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; } | ||
87.5% { transform: matrix(0.707, | 75% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; } | ||
100% { transform: matrix(1, | 87.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; } | ||
100% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; } | |||
} | } | ||
@keyframes | @keyframes mw-3dcube-right { | ||
0% { transform: matrix(0, | 0% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; } | ||
12.5% { transform: matrix(-0.707,-0.354,0, 0.866, | 12.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; } | ||
25% { transform: matrix(-1, | 25% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; } | ||
37.5% { transform: matrix(-0.707,0.354, 0, 0.866, | 37.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; } | ||
50% { transform: matrix(0, | 50% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; } | ||
62.5% { transform: matrix(0.707, 0.354, 0, 0.866, | 62.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; } | ||
75% { transform: matrix(1, | 75% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; } | ||
87.5% { transform: matrix(0.707,-0.354, 0, 0.866, | 87.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; } | ||
100% { transform: matrix(0, | 100% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; } | ||
} | } | ||
@keyframes | @keyframes mw-3dcube-back { | ||
0% { transform: matrix(-1, | 0% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; } | ||
12.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7,-35.4); z-index: 2; } | 12.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; } | ||
25% { transform: matrix(0, | 25% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; } | ||
37.5% { transform: matrix(0.707, | 37.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; } | ||
50% { transform: matrix(1, | 50% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; } | ||
62.5% { transform: matrix(0.707, -0.354, 0, 0.866, | 62.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; } | ||
75% { transform: matrix(0, | 75% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; } | ||
87.5% { transform: matrix(-0.707,-0.354, 0, 0.866, | 87.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; } | ||
100% { transform: matrix(-1, | 100% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; } | ||
} | } | ||
@keyframes | @keyframes mw-3dcube-left { | ||
0% { transform: matrix(0, | 0% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; } | ||
12.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; } | 12.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; } | ||
25% { transform: matrix(1, | 25% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; } | ||
37.5% { transform: matrix(0.707,-0.354, 0, 0.866, | 37.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; } | ||
50% { transform: matrix(0, | 50% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; } | ||
62.5% { transform: matrix(-0.707,-0.354,0, 0.866, | 62.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; } | ||
75% { transform: matrix(-1, | 75% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; } | ||
87.5% { transform: matrix(-0.707,0.354, 0, 0.866, -70.7,-35.4); z-index: 2; } | 87.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; } | ||
100% { transform: matrix(0, | 100% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; } | ||
} | } | ||
@keyframes | @keyframes mw-3dcube-top { | ||
0% { transform: matrix(1, | 0% { transform: matrix(1, 0, 0.707, 0.354, 0, -86.6); } | ||
12.5% { transform: matrix(0.707,-0.354, | 12.5% { transform: matrix(0.707, -0.354, 0.707, 0.354, 0, -86.6); } | ||
25% { transform: matrix(0, | 25% { transform: matrix(0, -0.5, 1, 0, 0, -86.6); } | ||
37.5% { transform: matrix(-0.707,-0.354, 0.707,-0.354, | 37.5% { transform: matrix(-0.707, -0.354, 0.707, -0.354, 0, -86.6); } | ||
50% { transform: matrix(-1, | 50% { transform: matrix(-1, 0, 0, -0.5, 0, -86.6); } | ||
62.5% { transform: matrix(-0.707,0.354, -0.707,-0.354, | 62.5% { transform: matrix(-0.707, 0.354, -0.707, -0.354, 0, -86.6); } | ||
75% { transform: matrix(0, | 75% { transform: matrix(0, 0.5, -1, 0, 0, -86.6); } | ||
87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, | 87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, 0, -86.6); } | ||
100% { transform: matrix(1, | 100% { transform: matrix(1, 0, 0.707, 0.354, 0, -86.6); } | ||
} | } | ||
@keyframes | @keyframes mw-3dcube-bottom { | ||
0% { transform: matrix(1, | 0% { transform: matrix(1, 0, 0.707, 0.354, 0, 86.6); } | ||
12.5% { transform: matrix(0.707,-0.354, | 12.5% { transform: matrix(0.707, -0.354, 0.707, 0.354, 0, 86.6); } | ||
25% { transform: matrix(0, | 25% { transform: matrix(0, -0.5, 1, 0, 0, 86.6); } | ||
37.5% { transform: matrix(-0.707,-0.354, 0.707,-0.354, | 37.5% { transform: matrix(-0.707, -0.354, 0.707, -0.354, 0, 86.6); } | ||
50% { transform: matrix(-1, | 50% { transform: matrix(-1, 0, 0, -0.5, 0, 86.6); } | ||
62.5% { transform: matrix(-0.707,0.354, -0.707,-0.354, | 62.5% { transform: matrix(-0.707, 0.354, -0.707, -0.354, 0, 86.6); } | ||
75% { transform: matrix(0, | 75% { transform: matrix(0, 0.5, -1, 0, 0, 86.6); } | ||
87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, | 87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, 0, 86.6); } | ||
100% { transform: matrix(1, | 100% { transform: matrix(1, 0, 0.707, 0.354, 0, 86.6); } | ||
} | } | ||
Revision as of 16:01, 12 April 2026
/* Template:3DCube/styles.css
Hardware-accelerated 2D matrix simulation of a 3D cube.
Fully compatible with MediaWiki CSS sanitizers. */
.mw-3dcube-scene {
width: 200px;
height: 200px;
position: relative;
/* Scaling is handled inline by the template */
}
.mw-3dcube {
width: 100%;
height: 100%;
position: relative;
}
.mw-3dcube-face {
position: absolute;
width: 200px;
height: 200px;
top: 0;
left: 0;
transform-origin: 50% 50%;
overflow: hidden;
background-color: transparent;
}
/* Force inner images to perfectly fill the face */
.mw-3dcube-face img {
display: block;
width: 100% !important;
height: 100% !important;
border: none !important;
object-fit: cover;
}
/* Base animations */
.mw-3dcube-front { animation: mw-3dcube-front 8s linear infinite; }
.mw-3dcube-right { animation: mw-3dcube-right 8s linear infinite; }
.mw-3dcube-back { animation: mw-3dcube-back 8s linear infinite; }
.mw-3dcube-left { animation: mw-3dcube-left 8s linear infinite; }
.mw-3dcube-top { animation: mw-3dcube-top 8s linear infinite; z-index: 4; }
.mw-3dcube-bottom { animation: mw-3dcube-bottom 8s linear infinite; z-index: 0; }
/* Optional: pause rotation on hover */
.mw-3dcube-scene:hover .mw-3dcube-face { animation-play-state: paused; }
/* --- Orthographic 2D Matrix Keyframes --- */
@keyframes mw-3dcube-front {
0% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; }
12.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; }
25% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; }
37.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; }
50% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; }
62.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; }
75% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; }
87.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; }
100% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; }
}
@keyframes mw-3dcube-right {
0% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; }
12.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; }
25% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; }
37.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; }
50% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; }
62.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; }
75% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; }
87.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; }
100% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; }
}
@keyframes mw-3dcube-back {
0% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; }
12.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; }
25% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; }
37.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; }
50% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; }
62.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; }
75% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; }
87.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; }
100% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; }
}
@keyframes mw-3dcube-left {
0% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; }
12.5% { transform: matrix(0.707, 0.354, 0, 0.866, -70.7, 35.4); z-index: 5; }
25% { transform: matrix(1, 0, 0, 0.866, 0, 50); z-index: 6; }
37.5% { transform: matrix(0.707, -0.354, 0, 0.866, 70.7, 35.4); z-index: 5; }
50% { transform: matrix(0, -0.5, 0, 0.866, 100, 0); z-index: 3; }
62.5% { transform: matrix(-0.707, -0.354, 0, 0.866, 70.7, -35.4); z-index: 2; }
75% { transform: matrix(-1, 0, 0, 0.866, 0, -50); z-index: 1; }
87.5% { transform: matrix(-0.707, 0.354, 0, 0.866, -70.7, -35.4); z-index: 2; }
100% { transform: matrix(0, 0.5, 0, 0.866, -100, 0); z-index: 3; }
}
@keyframes mw-3dcube-top {
0% { transform: matrix(1, 0, 0.707, 0.354, 0, -86.6); }
12.5% { transform: matrix(0.707, -0.354, 0.707, 0.354, 0, -86.6); }
25% { transform: matrix(0, -0.5, 1, 0, 0, -86.6); }
37.5% { transform: matrix(-0.707, -0.354, 0.707, -0.354, 0, -86.6); }
50% { transform: matrix(-1, 0, 0, -0.5, 0, -86.6); }
62.5% { transform: matrix(-0.707, 0.354, -0.707, -0.354, 0, -86.6); }
75% { transform: matrix(0, 0.5, -1, 0, 0, -86.6); }
87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, 0, -86.6); }
100% { transform: matrix(1, 0, 0.707, 0.354, 0, -86.6); }
}
@keyframes mw-3dcube-bottom {
0% { transform: matrix(1, 0, 0.707, 0.354, 0, 86.6); }
12.5% { transform: matrix(0.707, -0.354, 0.707, 0.354, 0, 86.6); }
25% { transform: matrix(0, -0.5, 1, 0, 0, 86.6); }
37.5% { transform: matrix(-0.707, -0.354, 0.707, -0.354, 0, 86.6); }
50% { transform: matrix(-1, 0, 0, -0.5, 0, 86.6); }
62.5% { transform: matrix(-0.707, 0.354, -0.707, -0.354, 0, 86.6); }
75% { transform: matrix(0, 0.5, -1, 0, 0, 86.6); }
87.5% { transform: matrix(0.707, 0.354, -0.707, 0.354, 0, 86.6); }
100% { transform: matrix(1, 0, 0.707, 0.354, 0, 86.6); }
}