MediaWiki:Common.css: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 13: | Line 13: | ||
} | } | ||
/* | /* MAIN IMAGE: Visible by default */ | ||
.hover-gallery .main-image { | |||
position: relative; | |||
z-index: 1; | |||
opacity: 1; | |||
transition: opacity 0.5s ease-in-out; | |||
} | |||
/* ALT IMAGES: Positioned above, hidden by default */ | |||
.hover-gallery .alt-image { | .hover-gallery .alt-image { | ||
position: absolute; | position: absolute; | ||
| Line 20: | Line 28: | ||
width: 100%; | width: 100%; | ||
opacity: 0; | opacity: 0; | ||
pointer-events: none; | |||
z-index: 2; | z-index: 2; | ||
transition: opacity 0.5s ease-in-out; | |||
animation-duration: 6s; | animation-duration: 6s; | ||
animation-iteration-count: infinite; | animation-iteration-count: infinite; | ||
animation-timing-function: ease-in-out; | animation-timing-function: ease-in-out; | ||
animation-fill-mode: both; | animation-fill-mode: both; | ||
} | } | ||
/* | /* On hover: hide main image and start animation */ | ||
.hover-gallery:hover .main-image { | |||
opacity: 0; | |||
} | |||
/* On hover: activate animation on alt images */ | |||
.hover-gallery:hover .alt-image { | .hover-gallery:hover .alt-image { | ||
animation-name: fadeCycle; | animation-name: fadeCycle; | ||
} | } | ||
/* | /* Apply staggered delays to alternate images */ | ||
.hover-gallery .alt-image:nth-of-type( | .hover-gallery .alt-image:nth-of-type(2) { animation-delay: 0s; } | ||
.hover-gallery .alt-image:nth-of-type(3) { animation-delay: 2s; } | |||
.hover-gallery .alt-image:nth-of-type(4) { animation-delay: 4s; } | |||
/* Keyframes: show each image for 1.5s, fade in and out cleanly */ | |||
@keyframes fadeCycle { | |||
0% { opacity: 1; } | |||
25% { opacity: 1; } | |||
33% { opacity: 0; } | |||
100% { opacity: 0; } | |||
} | } | ||
.hover-gallery .alt-image: | |||
/* ===== MOBILE FALLBACK: Always cycle alt images on mobile ===== */ | |||
@media (hover: none) and (pointer: coarse) { | |||
.hover-gallery .alt-image { | |||
animation-name: fadeCycle; | |||
} | |||
.hover-gallery .main-image { | |||
opacity: 0; | |||
} | |||
} | } | ||
. | |||
/* Custom Flexbox Gallery */ | |||
.gallery { | |||
display: flex; | |||
flex-wrap: wrap; | |||
gap: 1em; | |||
justify-content: flex-start; | |||
} | } | ||
.gallery > * { | |||
flex: 0 1 300px; /* or adjust to match your template width */ | |||
0 | |||
} | } | ||
Latest revision as of 12:25, 31 July 2025
/* CSS placed here will be applied to all skins */
.hover-gallery {
position: relative;
overflow: hidden;
display: inline-block;
}
.hover-gallery img {
width: 100%;
height: auto;
display: block;
}
/* MAIN IMAGE: Visible by default */
.hover-gallery .main-image {
position: relative;
z-index: 1;
opacity: 1;
transition: opacity 0.5s ease-in-out;
}
/* ALT IMAGES: Positioned above, hidden by default */
.hover-gallery .alt-image {
position: absolute;
top: 0;
left: 0;
width: 100%;
opacity: 0;
pointer-events: none;
z-index: 2;
transition: opacity 0.5s ease-in-out;
animation-duration: 6s;
animation-iteration-count: infinite;
animation-timing-function: ease-in-out;
animation-fill-mode: both;
}
/* On hover: hide main image and start animation */
.hover-gallery:hover .main-image {
opacity: 0;
}
/* On hover: activate animation on alt images */
.hover-gallery:hover .alt-image {
animation-name: fadeCycle;
}
/* Apply staggered delays to alternate images */
.hover-gallery .alt-image:nth-of-type(2) { animation-delay: 0s; }
.hover-gallery .alt-image:nth-of-type(3) { animation-delay: 2s; }
.hover-gallery .alt-image:nth-of-type(4) { animation-delay: 4s; }
/* Keyframes: show each image for 1.5s, fade in and out cleanly */
@keyframes fadeCycle {
0% { opacity: 1; }
25% { opacity: 1; }
33% { opacity: 0; }
100% { opacity: 0; }
}
/* ===== MOBILE FALLBACK: Always cycle alt images on mobile ===== */
@media (hover: none) and (pointer: coarse) {
.hover-gallery .alt-image {
animation-name: fadeCycle;
}
.hover-gallery .main-image {
opacity: 0;
}
}
/* Custom Flexbox Gallery */
.gallery {
display: flex;
flex-wrap: wrap;
gap: 1em;
justify-content: flex-start;
}
.gallery > * {
flex: 0 1 300px; /* or adjust to match your template width */
}