Readapt the misuse of BEM, Code organization
- -- is only for a modifier, not a child "child". Use master__child without the parent__ in it to make it more readable. https://www.smashingmagazine.com/2016/06/battling-bem-extended-edition-common-problems-and-how-to-avoid-them/ - Redefine atom design components
This commit is contained in:
@@ -33,7 +33,7 @@
|
|||||||
onMount(() => {
|
onMount(() => {
|
||||||
// Parallax on photo when the image has been loaded
|
// Parallax on photo when the image has been loaded
|
||||||
const parallaxNumber = basicScroll.default.create({
|
const parallaxNumber = basicScroll.default.create({
|
||||||
elem: photoElement.querySelector('.photo__image--number'),
|
elem: photoElement.querySelector('.photo__number'),
|
||||||
direct: photoElement,
|
direct: photoElement,
|
||||||
from: 'top-bottom',
|
from: 'top-bottom',
|
||||||
to: 'bottom-top',
|
to: 'bottom-top',
|
||||||
@@ -64,7 +64,7 @@
|
|||||||
<div class="photo__image wrap">
|
<div class="photo__image wrap">
|
||||||
<div class="align">
|
<div class="align">
|
||||||
<a href={photoHref}>
|
<a href={photoHref}>
|
||||||
<picture class="photo__image--img">
|
<picture class="photo__picture">
|
||||||
{#if layout === 'list'}
|
{#if layout === 'list'}
|
||||||
<source media="(min-width: 992px)" data-srcset={fn.getThumbnail(photo.image.private_hash, 1300)}>
|
<source media="(min-width: 992px)" data-srcset={fn.getThumbnail(photo.image.private_hash, 1300)}>
|
||||||
<source media="(min-width: 768px)" data-srcset={fn.getThumbnail(photo.image.private_hash, 992)}>
|
<source media="(min-width: 768px)" data-srcset={fn.getThumbnail(photo.image.private_hash, 992)}>
|
||||||
@@ -86,10 +86,10 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</picture>
|
</picture>
|
||||||
</a>
|
</a>
|
||||||
<time class="photo__image--date" datetime={dayjs(photo.date).format('YYYY-MM-DDThh:mm:ss')}>
|
<time class="photo__date" datetime={dayjs(photo.date).format('YYYY-MM-DDThh:mm:ss')}>
|
||||||
{dayjs(photo.date).format('MMM Do, YYYY')}
|
{dayjs(photo.date).format('MMM Do, YYYY')}
|
||||||
</time>
|
</time>
|
||||||
<span class="photo__image--number">{(index < 10 ? '0': '') + index}</span>
|
<span class="photo__number">{(index < 10 ? '0': '') + index}</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -49,14 +49,3 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- <div class="switcher switcher--side">
|
|
||||||
<p class="switcher__location">
|
|
||||||
<a href="/">Houses <span class="caps">{locationOf}</span></a> <br>
|
|
||||||
<strong class="name">{locationName}</strong>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<a href="/choose" class="switcher__icon icon is-medium has-text-danger">
|
|
||||||
<i class="fas fa-exchange-alt fa-lg"></i>
|
|
||||||
</a>
|
|
||||||
</div> -->
|
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
// Hover function
|
// Hover function
|
||||||
hover = event => {
|
hover = event => {
|
||||||
const button = event.currentTarget.querySelector('button')
|
const button = event.currentTarget.querySelector('button')
|
||||||
const photoActive = document.querySelector('.gallery__images .active')
|
const photoActive = document.querySelector('.gallery__photo--active')
|
||||||
|
|
||||||
let photoToHover
|
let photoToHover
|
||||||
if (event.currentTarget.dataset.to === 'prev') {
|
if (event.currentTarget.dataset.to === 'prev') {
|
||||||
@@ -122,10 +122,10 @@
|
|||||||
<div class="gallery">
|
<div class="gallery">
|
||||||
<div class="gallery__images">
|
<div class="gallery__images">
|
||||||
{#each photos as photo, index}
|
{#each photos as photo, index}
|
||||||
<picture class="gallery__images--photo"
|
<picture class="gallery__photo"
|
||||||
class:prev={photo === prevPhoto}
|
class:gallery__photo--prev={photo === prevPhoto}
|
||||||
class:active={photo === currentPhoto}
|
class:gallery__photo--active={photo === currentPhoto}
|
||||||
class:next={photo === nextPhoto}
|
class:gallery__photo--next={photo === nextPhoto}
|
||||||
>
|
>
|
||||||
<source media="(min-width: 968px)" srcset={fn.getThumbnail(photo.image.private_hash, 1400)}>
|
<source media="(min-width: 968px)" srcset={fn.getThumbnail(photo.image.private_hash, 1400)}>
|
||||||
<source media="(min-width: 800px)" srcset={fn.getThumbnail(photo.image.private_hash, 900)}>
|
<source media="(min-width: 800px)" srcset={fn.getThumbnail(photo.image.private_hash, 900)}>
|
||||||
@@ -137,14 +137,14 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="carousel__controls">
|
<div class="carousel__controls">
|
||||||
<div class="carousel__controls--area prev" data-to="prev" on:mouseenter={hover} on:mouseleave={hover} on:click={goToPrev}>
|
<div class="carousel__area carousel__area--prev" data-to="prev" on:mouseenter={hover} on:mouseleave={hover} on:click={goToPrev}>
|
||||||
<button class="button-control button-control--white dir-left" aria-label="Previous">
|
<button class="button-control button-control--white dir-left" aria-label="Previous">
|
||||||
<IconArrow direction="left" color="#ff6c89" class="icon" />
|
<IconArrow direction="left" color="#ff6c89" class="icon" />
|
||||||
<IconArrow direction="left" color="#fff" class="icon" hidden="true" />
|
<IconArrow direction="left" color="#fff" class="icon" hidden="true" />
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="carousel__controls--area next" data-to="next" on:mouseenter={hover} on:mouseleave={hover} on:click={goToNext}>
|
<div class="carousel__area carousel__area--next" data-to="next" on:mouseenter={hover} on:mouseleave={hover} on:click={goToNext}>
|
||||||
<button class="button-control button-control--white dir-right" aria-label="Next">
|
<button class="button-control button-control--white dir-right" aria-label="Next">
|
||||||
<IconArrow direction="right" color="#ff6c89" class="icon" />
|
<IconArrow direction="right" color="#ff6c89" class="icon" />
|
||||||
<IconArrow direction="right" color="#fff" class="icon" hidden="true" />
|
<IconArrow direction="right" color="#fff" class="icon" hidden="true" />
|
||||||
@@ -160,12 +160,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="carousel__infos">
|
<div class="carousel__infos">
|
||||||
<div class="carousel__infos--locations">
|
<div class="carousel__locations">
|
||||||
{#each photos as photo, index}
|
{#each photos as photo, index}
|
||||||
<div class="carousel__infos--location style-location"
|
<div class="carousel__location style-location"
|
||||||
class:prev={photo === prevPhoto}
|
class:carousel__location--prev={photo === prevPhoto}
|
||||||
class:active={photo === currentPhoto}
|
class:carousel__location--active={photo === currentPhoto}
|
||||||
class:next={photo === nextPhoto}
|
class:carousel__location--next={photo === nextPhoto}
|
||||||
>
|
>
|
||||||
<p class="street">{photo.name}</p>
|
<p class="street">{photo.name}</p>
|
||||||
<p class="state style-caps style-caps--transparent">
|
<p class="state style-caps style-caps--transparent">
|
||||||
@@ -175,7 +175,7 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
{#if viewer}
|
{#if viewer}
|
||||||
<p class="carousel__infos--date">{dayjs(currentPhoto.created_on).format('MMM Do, YYYY')}</p>
|
<p class="carousel__date">{dayjs(currentPhoto.created_on).format('MMM Do, YYYY')}</p>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -48,7 +48,7 @@
|
|||||||
|
|
||||||
<div class="page__list">
|
<div class="page__list">
|
||||||
{#each credits as category}
|
{#each credits as category}
|
||||||
<div class="page__list--category">
|
<div class="page__category">
|
||||||
<h2 class="title-category">{category.name}</h2>
|
<h2 class="title-category">{category.name}</h2>
|
||||||
{#each category.credits as person}
|
{#each category.credits as person}
|
||||||
<dl>
|
<dl>
|
||||||
|
|||||||
@@ -129,7 +129,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="place__description--wrap wrap">
|
<div class="place__wrap wrap">
|
||||||
<div class="place__description">
|
<div class="place__description">
|
||||||
<div class="wrapper">
|
<div class="wrapper">
|
||||||
<p>{$site.description}</p>
|
<p>{$site.description}</p>
|
||||||
@@ -158,9 +158,10 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="photos photos--{layoutSetting || 'list'}">
|
<section class="photos photos--{layoutSetting || 'list'}">
|
||||||
<div class="photos__side--wrap wrap">
|
<div class="photos__sidewrap wrap">
|
||||||
<aside class="photos__side">
|
<aside class="photos__side">
|
||||||
<Switcher type="switcher--side" />
|
<Switcher type="switcher--side" />
|
||||||
|
|
||||||
<p class="updated style-caps">
|
<p class="updated style-caps">
|
||||||
<strong>Updated</strong>
|
<strong>Updated</strong>
|
||||||
<time datetime={dateUpdatedDatetime} title={dateUpdatedFull}>{lastUpdated}</time>
|
<time datetime={dateUpdatedDatetime} title={dateUpdatedFull}>{lastUpdated}</time>
|
||||||
@@ -186,8 +187,8 @@
|
|||||||
on:mouseenter={() => pageTranslate = pageTranslate - ((100 / pagesTotal) * 0.666)}
|
on:mouseenter={() => pageTranslate = pageTranslate - ((100 / pagesTotal) * 0.666)}
|
||||||
on:mouseleave={() => pageTranslate = pageTranslate + ((100 / pagesTotal) * 0.666)}
|
on:mouseleave={() => pageTranslate = pageTranslate + ((100 / pagesTotal) * 0.666)}
|
||||||
>
|
>
|
||||||
<div class="pagination__page--info">page</div>
|
<div class="pagination__info">page</div>
|
||||||
<div class="pagination__page--numbers">
|
<div class="pagination__numbers">
|
||||||
<div class="scroll" style="transform: translateY(-{pageTranslate}%);">
|
<div class="scroll" style="transform: translateY(-{pageTranslate}%);">
|
||||||
{#each pages as page}
|
{#each pages as page}
|
||||||
<span>{page}</span>
|
<span>{page}</span>
|
||||||
|
|||||||
@@ -67,6 +67,8 @@
|
|||||||
|
|
||||||
// Link with animated letters
|
// Link with animated letters
|
||||||
.link-translate {
|
.link-translate {
|
||||||
|
display: inline-block;
|
||||||
|
|
||||||
.text {
|
.text {
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|||||||
85
src/style/molecules/_location.scss
Normal file
85
src/style/molecules/_location.scss
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
// Location
|
||||||
|
.location {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 48px;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
margin-left: pxVW(72);
|
||||||
|
margin-right: pxVW(72);
|
||||||
|
}
|
||||||
|
@include breakpoint (xl) {
|
||||||
|
margin-left: 72px;
|
||||||
|
margin-right: 72px;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
position: relative;
|
||||||
|
z-index: 2;
|
||||||
|
display: flex;
|
||||||
|
flex-flow: column;
|
||||||
|
align-items: center;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Flag image
|
||||||
|
img {
|
||||||
|
display: block;
|
||||||
|
width: 32px;
|
||||||
|
height: auto;
|
||||||
|
margin: 0 auto;
|
||||||
|
border-radius: 50vh;
|
||||||
|
}
|
||||||
|
|
||||||
|
// City
|
||||||
|
&__city {
|
||||||
|
font-family: $font-serif;
|
||||||
|
font-size: rem(32px);
|
||||||
|
color: $color-secondary;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
font-size: rem(48px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mask-city {
|
||||||
|
height: 40px;
|
||||||
|
margin: 24px 0 16px;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
height: 64px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.mask-country {
|
||||||
|
height: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hover
|
||||||
|
&:hover {
|
||||||
|
.location__city {
|
||||||
|
color: $color-tertiary;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:after {
|
||||||
|
opacity: 1;
|
||||||
|
transform: translate(-50%, -50%) scale(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Shape on hover
|
||||||
|
&:after {
|
||||||
|
content: "";
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: 0;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%) scale(0.94);
|
||||||
|
display: block;
|
||||||
|
width: 216px;
|
||||||
|
height: 216px;
|
||||||
|
background: rgba($color-lightpurple, 0.3);
|
||||||
|
border-radius: 50vh;
|
||||||
|
transition: all 85ms ease-in-out;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -48,45 +48,45 @@
|
|||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Image container
|
// Image itself
|
||||||
&--img {
|
&__picture {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 0;
|
||||||
|
background-color: #fff;
|
||||||
|
box-shadow: 0 8px 18px rgba(#715E4E, 0.2);
|
||||||
|
user-select: none;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
border-radius: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-radius: 0;
|
height: auto;
|
||||||
background-color: #fff;
|
}
|
||||||
box-shadow: 0 8px 18px rgba(#715E4E, 0.2);
|
|
||||||
user-select: none;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
// Overlay
|
||||||
border-radius: 8px;
|
&:after {
|
||||||
}
|
content: "";
|
||||||
|
position: absolute;
|
||||||
img {
|
z-index: 2;
|
||||||
display: block;
|
opacity: 0;
|
||||||
width: 100%;
|
pointer-events: none;
|
||||||
height: auto;
|
top: 0;
|
||||||
}
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
// Overlay
|
right: 0;
|
||||||
&:after {
|
background-color: $color-primary;
|
||||||
content: "";
|
display: block;
|
||||||
position: absolute;
|
z-index: 3;
|
||||||
z-index: 2;
|
transition: opacity 150ms $ease-inout;
|
||||||
opacity: 0;
|
|
||||||
pointer-events: none;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
bottom: 0;
|
|
||||||
right: 0;
|
|
||||||
background-color: $color-primary;
|
|
||||||
display: block;
|
|
||||||
z-index: 3;
|
|
||||||
transition: opacity 150ms $ease-inout;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@@ -103,49 +103,49 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Date (on the side)
|
// Date (on the side)
|
||||||
&--date {
|
&__date {
|
||||||
display: block;
|
display: block;
|
||||||
margin-top: 16px;
|
margin-top: 16px;
|
||||||
padding: 0 pxVW(128);
|
padding: 0 pxVW(128);
|
||||||
font-size: rem(14px);
|
font-size: rem(14px);
|
||||||
color: $color-lightgray;
|
color: $color-lightgray;
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
@include breakpoint (sm) {
|
||||||
position: absolute;
|
|
||||||
z-index: 3;
|
|
||||||
left: calc(100% + 30px);
|
|
||||||
bottom: 0;
|
|
||||||
transform: rotate(270deg);
|
|
||||||
transform-origin: 0 0;
|
|
||||||
white-space: nowrap;
|
|
||||||
line-height: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Photo number
|
|
||||||
&--number {
|
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: -80px;
|
z-index: 3;
|
||||||
right: 24px;
|
left: calc(100% + 30px);
|
||||||
font-family: $font-serif-extra;
|
bottom: 0;
|
||||||
color: rgba($color-tertiary, 0.5);
|
transform: rotate(270deg);
|
||||||
font-size: rem(124px);
|
transform-origin: 0 0;
|
||||||
pointer-events: none;
|
white-space: nowrap;
|
||||||
user-select: none;
|
line-height: 0;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
// Photo number
|
||||||
font-size: pxVW(300);
|
&__number {
|
||||||
left: 92%;
|
position: absolute;
|
||||||
top: 50%;
|
bottom: -80px;
|
||||||
z-index: 1;
|
right: 24px;
|
||||||
transform: translate(-50%, -50%);
|
font-family: $font-serif-extra;
|
||||||
}
|
color: rgba($color-tertiary, 0.5);
|
||||||
@include breakpoint (xxl) {
|
font-size: rem(124px);
|
||||||
font-size: rem(300px);
|
pointer-events: none;
|
||||||
}
|
user-select: none;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
font-size: pxVW(300);
|
||||||
|
left: 92%;
|
||||||
|
top: 50%;
|
||||||
|
z-index: 1;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
@include breakpoint (xxl) {
|
||||||
|
font-size: rem(300px);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,54 +41,54 @@
|
|||||||
height: 0;
|
height: 0;
|
||||||
padding-bottom: calc(100% / 1.5); // Ratio 3.2
|
padding-bottom: calc(100% / 1.5); // Ratio 3.2
|
||||||
user-select: none;
|
user-select: none;
|
||||||
|
}
|
||||||
|
|
||||||
// Photo
|
// Photo
|
||||||
&--photo {
|
&__photo {
|
||||||
$duration: 0.9s;
|
$duration: 0.9s;
|
||||||
|
|
||||||
|
opacity: 0;
|
||||||
|
overflow: hidden;
|
||||||
|
position: absolute;
|
||||||
|
z-index: -1;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
transform: scale($scale);
|
||||||
|
box-shadow: 0 pxVW(15) pxVW(60) rgba(#000, 0.3);
|
||||||
|
transition: transform $duration $ease-quart, opacity $duration $ease-quart;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
border-radius: $radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
img {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
overflow: hidden;
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Overlay
|
||||||
|
&:before {
|
||||||
|
opacity: 0;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
z-index: -1;
|
z-index: 2;
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
width: 100%;
|
right: 0;
|
||||||
height: 100%;
|
bottom: 0;
|
||||||
transform: scale($scale);
|
background-color: $color-primary;
|
||||||
box-shadow: 0 pxVW(15) pxVW(60) rgba(#000, 0.3);
|
|
||||||
transition: transform $duration $ease-quart, opacity $duration $ease-quart;
|
|
||||||
will-change: transform, opacity;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
border-radius: $radius;
|
|
||||||
}
|
|
||||||
|
|
||||||
img {
|
|
||||||
opacity: 0;
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Overlay
|
|
||||||
&:before {
|
|
||||||
opacity: 0;
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 2;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
background-color: $color-primary;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Active photo
|
// Active photo
|
||||||
.active {
|
&--active {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
z-index: 10;
|
z-index: 10;
|
||||||
transform: scale(1);
|
transform: scale(1);
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Previous & next photo
|
// Previous & next photo
|
||||||
.prev, .next {
|
&--prev, &--next {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Previous photo
|
// Previous photo
|
||||||
.prev {
|
&--prev {
|
||||||
z-index: 8;
|
z-index: 8;
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
@include breakpoint (sm) {
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Next photo
|
// Next photo
|
||||||
.next {
|
&--next {
|
||||||
z-index: 9;
|
z-index: 9;
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
@include breakpoint (sm) {
|
||||||
@@ -159,28 +159,28 @@
|
|||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hover and clicking area
|
|
||||||
&--area {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
width: 12%;
|
|
||||||
height: 100%;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&.prev {
|
|
||||||
margin-left: -6%;
|
|
||||||
}
|
|
||||||
&.next {
|
|
||||||
margin-right: -6%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
button {
|
||||||
box-shadow: 0 2px 20px rgba(#000, 0.15);
|
box-shadow: 0 2px 20px rgba(#000, 0.15);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hover and clicking area
|
||||||
|
&__area {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 12%;
|
||||||
|
height: 100%;
|
||||||
|
cursor: pointer;
|
||||||
|
|
||||||
|
&--prev {
|
||||||
|
margin-left: -6%;
|
||||||
|
}
|
||||||
|
&--next {
|
||||||
|
margin-right: -6%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Information
|
** Information
|
||||||
@@ -188,49 +188,50 @@
|
|||||||
&__infos {
|
&__infos {
|
||||||
position: relative;
|
position: relative;
|
||||||
z-index: 3;
|
z-index: 3;
|
||||||
|
}
|
||||||
|
|
||||||
// Locations
|
// Locations
|
||||||
&--locations {
|
&__locations {
|
||||||
position: relative;
|
position: relative;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
min-height: 128px;
|
min-height: 128px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Location
|
||||||
|
&__location {
|
||||||
|
$distance: 40%;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
width: 100%;
|
||||||
|
opacity: 0;
|
||||||
|
text-align: center;
|
||||||
|
transition: transform 0.9s $ease-quart, opacity 0.9s $ease-quart;
|
||||||
|
will-change: transform, opacity;
|
||||||
|
margin-top: 32px;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
margin-top: pxVW(80);
|
||||||
|
}
|
||||||
|
@include breakpoint (xl) {
|
||||||
|
margin-top: 72px;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Location
|
// States
|
||||||
&--location {
|
&--prev {
|
||||||
$distance: 40%;
|
transform: translateY(-$distance);
|
||||||
position: absolute;
|
}
|
||||||
top: 0;
|
&--active {
|
||||||
left: 0;
|
transform: translateY(0);
|
||||||
width: 100%;
|
opacity: 1;
|
||||||
opacity: 0;
|
}
|
||||||
text-align: center;
|
&--next {
|
||||||
transition: transform 0.9s $ease-quart, opacity 0.9s $ease-quart;
|
transform: translateY($distance);
|
||||||
will-change: transform, opacity;
|
}
|
||||||
margin-top: 32px;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
// State
|
||||||
margin-top: pxVW(80);
|
.state {
|
||||||
}
|
margin-top: 6px;
|
||||||
@include breakpoint (xl) {
|
|
||||||
margin-top: 72px;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.prev {
|
|
||||||
transform: translateY(-$distance);
|
|
||||||
}
|
|
||||||
&.active {
|
|
||||||
transform: translateY(0);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
&.next {
|
|
||||||
transform: translateY($distance);
|
|
||||||
}
|
|
||||||
|
|
||||||
// State
|
|
||||||
.state {
|
|
||||||
margin-top: 6px;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
li {
|
li {
|
||||||
display: block;
|
display: block;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
& > ul {
|
& > ul {
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -57,6 +58,10 @@
|
|||||||
li {
|
li {
|
||||||
margin: 0 20px;
|
margin: 0 20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -84,7 +89,7 @@
|
|||||||
justify-content: center;
|
justify-content: center;
|
||||||
}
|
}
|
||||||
img {
|
img {
|
||||||
display: inline-block;
|
display: block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,8 +104,8 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
img {
|
img {
|
||||||
display: inline-block;
|
display: block;
|
||||||
margin: 8px 0 0 12px;
|
margin: 3px 0 0 12px;
|
||||||
transition: transform 400ms $ease-quart;
|
transition: transform 400ms $ease-quart;
|
||||||
will-change: transform;
|
will-change: transform;
|
||||||
|
|
||||||
@@ -111,7 +116,7 @@
|
|||||||
|
|
||||||
// Hover
|
// Hover
|
||||||
a:hover img {
|
a:hover img {
|
||||||
transform: scale(1.025);
|
transform: scale(1.04);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -53,88 +53,4 @@
|
|||||||
margin-bottom: 232px;
|
margin-bottom: 232px;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Location
|
|
||||||
.location {
|
|
||||||
position: relative;
|
|
||||||
margin-bottom: 48px;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
margin-left: pxVW(72);
|
|
||||||
margin-right: pxVW(72);
|
|
||||||
}
|
|
||||||
@include breakpoint (xl) {
|
|
||||||
margin-left: 72px;
|
|
||||||
margin-right: 72px;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {
|
|
||||||
position: relative;
|
|
||||||
z-index: 2;
|
|
||||||
display: flex;
|
|
||||||
flex-flow: column;
|
|
||||||
align-items: center;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Flag image
|
|
||||||
img {
|
|
||||||
display: block;
|
|
||||||
width: 32px;
|
|
||||||
height: auto;
|
|
||||||
margin: 0 auto;
|
|
||||||
border-radius: 50vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
// City
|
|
||||||
&__city {
|
|
||||||
font-family: $font-serif;
|
|
||||||
font-size: rem(32px);
|
|
||||||
color: $color-secondary;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
font-size: rem(48px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mask-city {
|
|
||||||
height: 40px;
|
|
||||||
margin: 24px 0 16px;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
height: 64px;
|
|
||||||
margin-bottom: 24px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.mask-country {
|
|
||||||
height: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Shape on hover
|
|
||||||
&:after {
|
|
||||||
content: "";
|
|
||||||
pointer-events: none;
|
|
||||||
opacity: 0;
|
|
||||||
position: absolute;
|
|
||||||
z-index: 1;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -50%) scale(0.94);
|
|
||||||
display: block;
|
|
||||||
width: 216px;
|
|
||||||
height: 216px;
|
|
||||||
background: rgba($color-lightpurple, 0.3);
|
|
||||||
border-radius: 50vh;
|
|
||||||
transition: all 85ms ease-in-out;
|
|
||||||
}
|
|
||||||
&:hover {
|
|
||||||
.location__city {
|
|
||||||
color: $color-tertiary;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translate(-50%, -50%) scale(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -30,48 +30,48 @@
|
|||||||
font-size: rem(160px);
|
font-size: rem(160px);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Numbers
|
|
||||||
&--numbers {
|
|
||||||
overflow: hidden;
|
|
||||||
height: 62px;
|
|
||||||
margin-right: 4px;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
height: 136px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.scroll {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
transform: translate(0, 0);
|
|
||||||
text-align: right;
|
|
||||||
line-height: 0.85;
|
|
||||||
transition: transform 325ms $ease-cubic;
|
|
||||||
will-change: transform;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Info
|
|
||||||
&--info {
|
|
||||||
position: absolute;
|
|
||||||
top: 50%;
|
|
||||||
left: 50%;
|
|
||||||
transform: translate(-50%, -72%);
|
|
||||||
font-family: $font-serif;
|
|
||||||
font-size: 18px;
|
|
||||||
color: $color-secondary-bright;
|
|
||||||
|
|
||||||
@include breakpoint (sm) {
|
|
||||||
font-size: rem(40px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Hover
|
// Hover
|
||||||
&:hover {
|
&:hover {
|
||||||
color: rgba($color-text, 0.25);
|
color: rgba($color-text, 0.25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Numbers
|
||||||
|
&__numbers {
|
||||||
|
overflow: hidden;
|
||||||
|
height: 62px;
|
||||||
|
margin-right: 4px;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
height: 136px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
transform: translate(0, 0);
|
||||||
|
text-align: right;
|
||||||
|
line-height: 0.85;
|
||||||
|
transition: transform 325ms $ease-cubic;
|
||||||
|
will-change: transform;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Info
|
||||||
|
&__info {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -72%);
|
||||||
|
font-family: $font-serif;
|
||||||
|
font-size: 18px;
|
||||||
|
color: $color-secondary-bright;
|
||||||
|
|
||||||
|
@include breakpoint (sm) {
|
||||||
|
font-size: rem(40px);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Caption
|
// Caption
|
||||||
&__caption {
|
&__caption {
|
||||||
max-width: 420px;
|
max-width: 420px;
|
||||||
@@ -26,16 +26,6 @@
|
|||||||
transform: rotate(-90deg) translateX(-100%);
|
transform: rotate(-90deg) translateX(-100%);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Container
|
|
||||||
&--wrap {
|
|
||||||
@include breakpoint (md) {
|
|
||||||
position: sticky;
|
|
||||||
z-index: 10;
|
|
||||||
top: 32px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: rem(12px);
|
font-size: rem(12px);
|
||||||
color: $color-lightgray;
|
color: $color-lightgray;
|
||||||
@@ -49,6 +39,16 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Container
|
||||||
|
&__sidewrap {
|
||||||
|
@include breakpoint (md) {
|
||||||
|
position: sticky;
|
||||||
|
z-index: 10;
|
||||||
|
top: 32px;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Each photo
|
// Each photo
|
||||||
.photo {
|
.photo {
|
||||||
position: relative;
|
position: relative;
|
||||||
@@ -87,14 +87,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Image
|
// Image
|
||||||
.photo__image {
|
.photo {
|
||||||
justify-content: flex-end;
|
&__image {
|
||||||
|
justify-content: flex-end;
|
||||||
&--date {
|
}
|
||||||
|
&__date {
|
||||||
right: 100%;
|
right: 100%;
|
||||||
left: -30px;
|
left: -30px;
|
||||||
}
|
}
|
||||||
&--number {
|
&__number {
|
||||||
right: 77%;
|
right: 77%;
|
||||||
left: auto;
|
left: auto;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
@@ -104,7 +105,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Number
|
// Number
|
||||||
&__image--number {
|
&__number {
|
||||||
@include breakpoint (sm) {
|
@include breakpoint (sm) {
|
||||||
transform: translate(-50%, var(--translate));
|
transform: translate(-50%, var(--translate));
|
||||||
will-change: transform;
|
will-change: transform;
|
||||||
@@ -185,23 +186,21 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Image
|
// Image informations
|
||||||
&__image {
|
&__img {
|
||||||
&--img {
|
border-radius: 8px;
|
||||||
border-radius: 8px;
|
}
|
||||||
}
|
&__number {
|
||||||
&--number {
|
font-size: rem(96px);
|
||||||
font-size: rem(96px);
|
bottom: -88px;
|
||||||
bottom: -88px;
|
right: 24px;
|
||||||
right: 24px;
|
z-index: 1;
|
||||||
z-index: 1;
|
transform: none;
|
||||||
transform: none;
|
top: auto;
|
||||||
top: auto;
|
left: auto;
|
||||||
left: auto;
|
}
|
||||||
}
|
&__date {
|
||||||
&--date {
|
display: none;
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Photos
|
// Photos
|
||||||
.gallery__images--photo {
|
.gallery__photo {
|
||||||
&:before {
|
&:before {
|
||||||
background-color: $color-secondary;
|
background-color: $color-secondary;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,26 +40,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// List
|
// Category
|
||||||
&__list {
|
&__category {
|
||||||
// Category
|
margin-bottom: 96px;
|
||||||
&--category {
|
text-align: center;
|
||||||
margin-bottom: 96px;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
&:last-child {
|
&:last-child {
|
||||||
margin-bottom: 0;
|
margin-bottom: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
margin-bottom: 56px;
|
margin-bottom: 56px;
|
||||||
}
|
}
|
||||||
dl {
|
dl {
|
||||||
margin-bottom: 40px;
|
margin-bottom: 40px;
|
||||||
}
|
}
|
||||||
dt {
|
dt {
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,14 +124,14 @@
|
|||||||
height: 100%;
|
height: 100%;
|
||||||
background-color: $color-tertiary;
|
background-color: $color-tertiary;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Wrap
|
// Wrap
|
||||||
&--wrap {
|
&__wrap {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
|
|
||||||
@include breakpoint (md) {
|
@include breakpoint (md) {
|
||||||
padding-left: 128px;
|
padding-left: 128px;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,15 +22,16 @@
|
|||||||
@import "atoms/switcher";
|
@import "atoms/switcher";
|
||||||
|
|
||||||
// Molecules
|
// Molecules
|
||||||
|
@import "molecules/location";
|
||||||
@import "molecules/photo";
|
@import "molecules/photo";
|
||||||
@import "molecules/pagination";
|
|
||||||
@import "molecules/globe";
|
@import "molecules/globe";
|
||||||
@import "molecules/footer";
|
|
||||||
|
|
||||||
// Organisms
|
// Organisms
|
||||||
@import "organisms/locations";
|
|
||||||
@import "organisms/carousel";
|
@import "organisms/carousel";
|
||||||
@import "organisms/photos";
|
@import "organisms/photos";
|
||||||
|
@import "organisms/locations";
|
||||||
|
@import "organisms/pagination";
|
||||||
|
@import "organisms/footer";
|
||||||
|
|
||||||
// Layouts
|
// Layouts
|
||||||
@import "layouts/explore";
|
@import "layouts/explore";
|
||||||
|
|||||||
Reference in New Issue
Block a user