Responsive images
@@ -2,9 +2,9 @@
|
|||||||
import type IImage from '$lib/interfaces/IImage';
|
import type IImage from '$lib/interfaces/IImage';
|
||||||
|
|
||||||
let images: IImage[] = [
|
let images: IImage[] = [
|
||||||
{ url: 'IMG_5613.jpeg', alt: 'Kevin at beach' },
|
{ name: 'fish', alt: 'Kevin fishing' },
|
||||||
{ url: 'IMG_4551.jpeg', alt: 'Kevin fishing' },
|
{ name: 'boat', alt: 'Kevin in a boat with dog' },
|
||||||
{ url: 'IMG_1925.jpeg', alt: 'Kevin in a boat with dog' }
|
{ name: 'sand', alt: 'Kevin at beach' }
|
||||||
];
|
];
|
||||||
|
|
||||||
function cycle() {
|
function cycle() {
|
||||||
@@ -20,8 +20,13 @@
|
|||||||
role="button"
|
role="button"
|
||||||
tabindex="0"
|
tabindex="0"
|
||||||
>
|
>
|
||||||
{#each images as image (image.url)}
|
{#each images as image (image.name)}
|
||||||
<img src="/images/{image.url}" alt={image.alt} />
|
<picture>
|
||||||
|
<source media="(max-width: 420px)" srcset="/images/{image.name}-300w.jpeg" />
|
||||||
|
<source media="(max-width: 1800px)" srcset="/images/{image.name}-620w.jpeg" />
|
||||||
|
<source media="(min-width: 1801px)" srcset="/images/{image.name}-900w.jpeg" />
|
||||||
|
<img src="/images/{image.name}-300w.jpeg" alt={image.alt} />
|
||||||
|
</picture>
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -33,18 +38,28 @@
|
|||||||
-webkit-user-select: none;
|
-webkit-user-select: none;
|
||||||
margin-left: 40px;
|
margin-left: 40px;
|
||||||
|
|
||||||
img {
|
picture {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
margin-top: 10vh;
|
margin-top: 10vh;
|
||||||
max-height: 80vh;
|
|
||||||
transition: all 0.51s ease;
|
transition: all 0.51s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 42vw;
|
||||||
|
}
|
||||||
|
|
||||||
@for $i from 0 through 4 {
|
@for $i from 0 through 4 {
|
||||||
img:nth-of-type(#{$i}) {
|
picture:nth-of-type(#{$i}) {
|
||||||
left: calc(-10px * $i);
|
left: calc(-10px * $i);
|
||||||
top: calc(-10px * $i);
|
top: calc(-10px * $i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 500px) {
|
||||||
|
div.images img {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
max-width: 80vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
interface IImage {
|
interface IImage {
|
||||||
url: string;
|
name: string;
|
||||||
alt: string;
|
alt: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type { IImage };
|
export default IImage;
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 524 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
|
Before Width: | Height: | Size: 2.0 MiB |
BIN
static/images/boat-300w.jpeg
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
static/images/boat-620w.jpeg
Normal file
|
After Width: | Height: | Size: 171 KiB |
BIN
static/images/boat-900w.jpeg
Normal file
|
After Width: | Height: | Size: 283 KiB |
BIN
static/images/fish-300w.jpeg
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
static/images/fish-620w.jpeg
Normal file
|
After Width: | Height: | Size: 147 KiB |
BIN
static/images/fish-900w.jpeg
Normal file
|
After Width: | Height: | Size: 246 KiB |
BIN
static/images/sand-300w.jpeg
Normal file
|
After Width: | Height: | Size: 60 KiB |
BIN
static/images/sand-620w.jpeg
Normal file
|
After Width: | Height: | Size: 122 KiB |
BIN
static/images/sand-900w.jpeg
Normal file
|
After Width: | Height: | Size: 198 KiB |