bottomBar responsive
All checks were successful
Deploy / Deploy to Production (push) Successful in 12s

This commit is contained in:
Julie Blanc 2026-02-23 15:55:20 +01:00
parent 99ccc15ba9
commit f24b296ff7
15 changed files with 445 additions and 303 deletions

View file

@ -18,6 +18,7 @@
--max-w-content: 700px;
--max-w-cards: 940px;
--max-w-site: 1600px;
--z-header: 2000;
--panel-w: 310px;

View file

@ -16,10 +16,6 @@
transition: bottom var(--transition-scroll);
// border-top: 2px solid var(--grey-800);
.progress-container{
position: absolute;
top: 0;
@ -90,4 +86,21 @@
}
@media #{$small} {
display: flex;
align-items: center;
justify-content: center;
.bottom-bar__inner{
height: calc(var(--header-h)*0.5);
justify-content: center;
align-items: center;
}
.title-group, .btn--download, .btn--back-to-top{ display: none; }
}
}

View file

@ -3,65 +3,82 @@
display: flex;
justify-content: space-between;
align-items: center;
max-width: 400px;
max-width: 350px;
a{
display: flex;
align-items: center;
text-decoration: none;
}
li{
--size-icon: 20px;
}
li[data-socials="youtube"]{
--size-icon: 26px;
}
.icon{
width: 20px;
height: 20px;
width: var(--size-icon);
height: var(--size-icon);
position: relative;
top: -2px;
}
svg{
display: flex;
align-items: center;
width: 20px;
height: 20px;
width: var(--size-icon);
height: var(--size-icon);
fill: var(--color-txt);
}
.text{ display: none; }
a:hover{
svg{
fill: var(--color-txt-light);
}
}
}
// with text
@media #{$small-up}{
.footer__socials .list-socials{
// @media #{$small-up}{
// .footer__socials .list-socials{
display: block;
// display: block;
li{
margin-bottom: calc(var(--spacing)*0.25);
break-inside: avoid;
font-size: var(--fs-small);
// li{
// margin-bottom: calc(var(--spacing)*0.25);
// break-inside: avoid;
// font-size: var(--fs-small);
}
// }
a{
gap: 1ch;
// a{
// gap: 1ch;
height: calc(var(--spacing)*1);
&::after{
content: '';
color: var(--grey-300);
}
// height: calc(var(--spacing)*1);
// &::after{
// content: '';
// color: var(--grey-300);
// }
&:hover{
color: var(--color-accent);
&::after{
color: var(--color-accent);
opacity: 0.5;
}
}
}
.text{
display: block;
line-height: 1;
}
}
}
// &:hover{
// color: var(--color-accent);
// &::after{
// color: var(--color-accent);
// opacity: 0.5;
// }
// }
// }
// .text{
// display: block;
// line-height: 1;
// }
// }
// }

View file

@ -0,0 +1,63 @@
#support-bar {
height: var(--header-h);
background-color: var(--color-accent);
color: var(--color-bg);
padding: 0 var(--padding-body);
.support-bar__container {
max-width: var(--max-w-cards);
margin: 0 auto;
height: 100%;
display: flex;
@media #{$small-up} {
align-items: center;
justify-content: space-between;
gap: 2ch;
}
@media #{$small} {
flex-direction: column;
font-size: var(--fs-small);
line-height: 1.1;
align-items: flex-start;
justify-content: center;
}
}
.baseline {
text-transform: uppercase;
font-weight: 500;
}
.btn {
text-transform: uppercase;
color: var(--color-bg);
font-weight: 500;
text-decoration: underline;
text-underline-offset: 2px;
word-wrap: nowrap;
white-space: nowrap;
&:hover {
opacity: 0.7;
}
}
@media #{$small} {
height: auto;
padding: calc(var(--spacing)*0.75) var(--padding-body);
.btn{
margin-top: calc(var(--spacing)*0.75);
}
}
}

View file

@ -12,7 +12,7 @@ body{
flex-grow: 1;
padding: 0 var(--padding-body);
padding-top: var(--header-h);
padding-bottom: calc(var(--spacing)*2);
padding-bottom: calc(var(--spacing)*6);
min-height: 100dvh;
min-height: 100vh;

View file

@ -1,116 +1,144 @@
#site-footer{
#site-footer {
background-color: var(--dark);
padding: calc(var(--padding-body)*2) var(--padding-body);
z-index: 500;
background-color: var(--dark);
padding: calc(var(--spacing)*2) var(--padding-body);
z-index: 500;
.site-footer__container{
.site-footer__container {
max-width: var(--max-w-cards);
margin: 0 auto;
padding: 0 var(--padding-body);
font-size: var(--fs-small);
}
.logo {
margin-top: calc(var(--spacing)*0.25);
margin-bottom: calc(var(--spacing)*1);
svg{
.logo {
// margin-top: calc(var(--spacing)*0.25);
margin-bottom: calc(var(--spacing)*0.5);
svg {
width: 100px;
}
}
p{
margin: calc(var(--spacing)*0.5) 0;
font-size: var(--fs-small);
a{
text-decoration: none;
&:hover{
text-decoration: underline;
color: currentColor;
}
}
}
.p__small{
font-size: var(--fs-xsmall);
color: var(--grey-600);
}
.baseline{
max-width: 40ch;
}
.footer__mentions{
p{
font-size: var(--fs-xsmall);
color: var(--color-txt)
.list-links {
ul {
list-style: none;
li {
margin-bottom: calc(var(--spacing)*0.5);
}
a {
text-decoration: none;
}
li:hover a {
text-decoration: underline;
}
}
.hightlight {
text-transform: uppercase;
font-weight: 500;
}
}
.footer__socials > p{
font-weight: 500;
}
@media #{$small}{
.footer__socials{
margin-top: calc(var(--spacing)*0.75);
padding-top: calc(var(--spacing)*0.25);
border-top: var(--border-light);
.list-socials{
margin-top: calc(var(--spacing)*0.5);
margin-bottom: calc(var(--spacing)*0.75);
// @media #{$medium} {
// }
@media #{$small-up} {
.site-footer__container {
display: grid;
grid-template-columns: 1fr 350px;
column-gap: calc(var(--padding-inner)*2);
.logo{ grid-column: span 2;}
.baseline{
grid-column: 1;
grid-row: 2;
}
.list-links{
grid-column: 2;
grid-row: 2;
max-width: 350px;
margin-bottom: calc(var(--spacing)*1);
display: flex;
justify-content: space-between;
gap: var(--padding-inner);
li {
// margin-bottom: calc(var(--spacing)*1);
}
}
.socials{
grid-column: 2;
grid-row: 3;
}
.credits {
font-size: var(--fs-xsmall);
grid-column: 1;
grid-row: 3;
}
}
}
.footer__mentions{
border-top: var(--border-light);
padding-top: calc(var(--spacing)*0.25);
p{
font-size: 12px;
text-align: center;
@media #{$small} {
.list-links {
margin-top: calc(var(--spacing)*1);
li {
margin-bottom: calc(var(--spacing)*0.5);
}
.hightlight {
margin-top: calc(var(--spacing)*1.5);
}
}
.socials {
margin-top: calc(var(--spacing)*2);
}
.p__small{
font-size: 12px;
}
}
@media #{$small-up}{
.site-footer__container{
display: grid;
grid-template-columns: 3fr 2fr;
column-gap: calc(var(--spacing)*2);
}
.footer__newsletter{
grid-column: 1;
grid-row: 2;
}
.footer__socials{
grid-column: 2;
grid-row: 2;
}
.footer__socials .socials{
columns: 2;
margin-top: calc(var(--spacing)*1);
}
.footer__mentions{
grid-column: span 2;
p{
.credits {
margin-top: calc(var(--spacing)*1);
}
}
}
@media #{$x-small} {
.credits {
text-align: center;
}
}
}

View file

@ -11,6 +11,7 @@
--fs-button-bold: 22px;
--max-w-content: 700px;
--max-w-cards: 940px;
--max-w-site: 1600px;
--z-header: 2000;
--panel-w: 310px;
}
@ -932,59 +933,36 @@ button.sort[data-sort-type=up] .arrow {
display: flex;
justify-content: space-between;
align-items: center;
max-width: 400px;
max-width: 350px;
}
.list-socials a {
display: flex;
align-items: center;
text-decoration: none;
}
.list-socials li {
--size-icon: 20px;
}
.list-socials li[data-socials=youtube] {
--size-icon: 26px;
}
.list-socials .icon {
width: 20px;
height: 20px;
width: var(--size-icon);
height: var(--size-icon);
position: relative;
top: -2px;
}
.list-socials svg {
display: flex;
align-items: center;
width: 20px;
height: 20px;
width: var(--size-icon);
height: var(--size-icon);
fill: var(--color-txt);
}
.list-socials .text {
display: none;
.list-socials a:hover svg {
fill: var(--color-txt-light);
}
@media screen and (min-width: 768px) {
.footer__socials .list-socials {
display: block;
}
.footer__socials .list-socials li {
margin-bottom: calc(var(--spacing) * 0.25);
-moz-column-break-inside: avoid;
break-inside: avoid;
font-size: var(--fs-small);
}
.footer__socials .list-socials a {
gap: 1ch;
height: calc(var(--spacing) * 1);
}
.footer__socials .list-socials a::after {
content: "↗";
color: var(--grey-300);
}
.footer__socials .list-socials a:hover {
color: var(--color-accent);
}
.footer__socials .list-socials a:hover::after {
color: var(--color-accent);
opacity: 0.5;
}
.footer__socials .list-socials .text {
display: block;
line-height: 1;
}
}
.modal--share {
width: 240px;
padding-bottom: var(--padding-inner);
@ -2155,6 +2133,75 @@ button.sort[data-sort-type=up] .arrow {
padding-left: 1ch;
padding-right: 1ch;
}
@media screen and (max-width: 768px) {
#bottom-bar {
display: flex;
align-items: center;
justify-content: center;
}
#bottom-bar .bottom-bar__inner {
height: calc(var(--header-h) * 0.5);
justify-content: center;
align-items: center;
}
#bottom-bar .title-group, #bottom-bar .btn--download, #bottom-bar .btn--back-to-top {
display: none;
}
}
#support-bar {
height: var(--header-h);
background-color: var(--color-accent);
color: var(--color-bg);
padding: 0 var(--padding-body);
}
#support-bar .support-bar__container {
max-width: var(--max-w-cards);
margin: 0 auto;
height: 100%;
display: flex;
}
@media screen and (min-width: 768px) {
#support-bar .support-bar__container {
align-items: center;
justify-content: space-between;
gap: 2ch;
}
}
@media screen and (max-width: 768px) {
#support-bar .support-bar__container {
flex-direction: column;
font-size: var(--fs-small);
line-height: 1.1;
align-items: flex-start;
justify-content: center;
}
}
#support-bar .baseline {
text-transform: uppercase;
font-weight: 500;
}
#support-bar .btn {
text-transform: uppercase;
color: var(--color-bg);
font-weight: 500;
text-decoration: underline;
text-underline-offset: 2px;
word-wrap: nowrap;
white-space: nowrap;
}
#support-bar .btn:hover {
opacity: 0.7;
}
@media screen and (max-width: 768px) {
#support-bar {
height: auto;
padding: calc(var(--spacing) * 0.75) var(--padding-body);
}
#support-bar .btn {
margin-top: calc(var(--spacing) * 0.75);
}
}
#site-header {
z-index: var(--z-header);
@ -2360,92 +2407,94 @@ body.menu-open #menu-toggle .close {
#site-footer {
background-color: var(--dark);
padding: calc(var(--padding-body) * 2) var(--padding-body);
padding: calc(var(--spacing) * 2) var(--padding-body);
z-index: 500;
}
#site-footer .site-footer__container {
max-width: var(--max-w-cards);
margin: 0 auto;
padding: 0 var(--padding-body);
font-size: var(--fs-small);
}
#site-footer .logo {
margin-top: calc(var(--spacing) * 0.25);
margin-bottom: calc(var(--spacing) * 1);
margin-bottom: calc(var(--spacing) * 0.5);
}
#site-footer .logo svg {
width: 100px;
}
#site-footer p {
margin: calc(var(--spacing) * 0.5) 0;
font-size: var(--fs-small);
#site-footer .baseline {
max-width: 40ch;
}
#site-footer p a {
#site-footer .list-links ul {
list-style: none;
}
#site-footer .list-links ul li {
margin-bottom: calc(var(--spacing) * 0.5);
}
#site-footer .list-links ul a {
text-decoration: none;
}
#site-footer p a:hover {
#site-footer .list-links ul li:hover a {
text-decoration: underline;
color: currentColor;
}
#site-footer .p__small {
font-size: var(--fs-xsmall);
color: var(--grey-600);
}
#site-footer .footer__mentions p {
font-size: var(--fs-xsmall);
color: var(--color-txt);
}
#site-footer .footer__socials > p {
#site-footer .list-links .hightlight {
text-transform: uppercase;
font-weight: 500;
}
@media screen and (max-width: 768px) {
#site-footer .footer__socials {
margin-top: calc(var(--spacing) * 0.75);
padding-top: calc(var(--spacing) * 0.25);
border-top: var(--border-light);
}
#site-footer .footer__socials .list-socials {
margin-top: calc(var(--spacing) * 0.5);
margin-bottom: calc(var(--spacing) * 0.75);
}
#site-footer .footer__mentions {
border-top: var(--border-light);
padding-top: calc(var(--spacing) * 0.25);
}
#site-footer .footer__mentions p {
font-size: 12px;
text-align: center;
}
#site-footer .p__small {
font-size: 12px;
}
}
@media screen and (min-width: 768px) {
#site-footer .site-footer__container {
display: grid;
grid-template-columns: 3fr 2fr;
-moz-column-gap: calc(var(--spacing) * 2);
column-gap: calc(var(--spacing) * 2);
grid-template-columns: 1fr 350px;
-moz-column-gap: calc(var(--padding-inner) * 2);
column-gap: calc(var(--padding-inner) * 2);
}
#site-footer .footer__newsletter {
#site-footer .site-footer__container .logo {
grid-column: span 2;
}
#site-footer .site-footer__container .baseline {
grid-column: 1;
grid-row: 2;
}
#site-footer .footer__socials {
#site-footer .site-footer__container .list-links {
grid-column: 2;
grid-row: 2;
max-width: 350px;
margin-bottom: calc(var(--spacing) * 1);
display: flex;
justify-content: space-between;
gap: var(--padding-inner);
}
#site-footer .footer__socials .socials {
-moz-columns: 2;
columns: 2;
#site-footer .site-footer__container .socials {
grid-column: 2;
grid-row: 3;
}
#site-footer .site-footer__container .credits {
font-size: var(--fs-xsmall);
grid-column: 1;
grid-row: 3;
}
}
@media screen and (max-width: 768px) {
#site-footer .list-links {
margin-top: calc(var(--spacing) * 1);
}
#site-footer .footer__mentions {
grid-column: span 2;
#site-footer .list-links li {
margin-bottom: calc(var(--spacing) * 0.5);
}
#site-footer .footer__mentions p {
#site-footer .list-links .hightlight {
margin-top: calc(var(--spacing) * 1.5);
}
#site-footer .socials {
margin-top: calc(var(--spacing) * 2);
}
#site-footer .credits {
margin-top: calc(var(--spacing) * 1);
}
}
@media screen and (max-width: 560px) {
#site-footer .credits {
text-align: center;
}
}
body {
min-height: 100dvh;
@ -2459,7 +2508,7 @@ body main {
flex-grow: 1;
padding: 0 var(--padding-body);
padding-top: var(--header-h);
padding-bottom: calc(var(--spacing) * 2);
padding-bottom: calc(var(--spacing) * 6);
min-height: 100dvh;
min-height: 100vh;
}

File diff suppressed because one or more lines are too long

View file

@ -30,6 +30,7 @@
@import "components/swiper";
@import "components/slider-before-after";
@import "components/bottom-bar";
@import "components/support-bar";
@import "partials/site-header";
@import "partials/site-menu";

View file

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 375 375" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="-0" y="0" width="375" height="375" style="fill:none;"/><path d="M213.542,291.667c0,7.194 -5.827,13.021 -13.021,13.021l-78.125,0c-7.194,0 -13.021,-5.827 -13.021,-13.021c0,-7.194 5.827,-13.021 13.021,-13.021l78.125,0c7.194,0 13.021,5.827 13.021,13.021Zm39.062,-65.104l-130.208,0c-7.194,0 -13.021,5.827 -13.021,13.021c0,7.194 5.827,13.021 13.021,13.021l130.208,0c7.194,0 13.021,-5.827 13.021,-13.021c0,-7.194 -5.827,-13.021 -13.021,-13.021Zm78.125,-117.187l0,221.354c0,21.533 -17.529,39.062 -39.062,39.062l-208.333,0c-21.533,0 -39.062,-17.529 -39.062,-39.062l0,-286.458c0,-21.533 17.529,-39.062 39.062,-39.062l143.229,0c3.45,0 6.771,1.367 9.212,3.809l91.146,91.146c2.441,2.441 3.809,5.762 3.809,9.212l0,0Zm-104.167,-13.021c0,7.178 5.843,13.021 13.021,13.021l59.717,0l-72.737,-72.737l0,59.717Zm78.125,39.062l-65.104,0c-21.533,0 -39.062,-17.529 -39.062,-39.062l0,-65.104l-117.187,0c-7.178,0 -13.021,5.843 -13.021,13.021l0,286.458c0,7.178 5.843,13.021 13.021,13.021l208.333,0c7.178,0 13.021,-5.843 13.021,-13.021l0,-195.312Zm-195.312,52.083c-0,7.194 5.827,13.021 13.021,13.021l130.208,0c7.194,0 13.021,-5.827 13.021,-13.021c0,-7.194 -5.827,-13.021 -13.021,-13.021l-130.208,0c-7.194,0 -13.021,5.827 -13.021,13.021Z" style="fill-rule:nonzero;"/></svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free v7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path d="M371.8 82.4C359.8 87.4 352 99 352 112L352 192L240 192C142.8 192 64 270.8 64 368C64 481.3 145.5 531.9 164.2 542.1C166.7 543.5 169.5 544 172.3 544C183.2 544 192 535.1 192 524.3C192 516.8 187.7 509.9 182.2 504.8C172.8 496 160 478.4 160 448.1C160 395.1 203 352.1 256 352.1L352 352.1L352 432.1C352 445 359.8 456.7 371.8 461.7C383.8 466.7 397.5 463.9 406.7 454.8L566.7 294.8C579.2 282.3 579.2 262 566.7 249.5L406.7 89.5C397.5 80.3 383.8 77.6 371.8 82.6z"/></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 338 350" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><rect id="Artboard1" x="0" y="0" width="337.5" height="350" style="fill:none;"/><g><path d="M206.452,92.421l-82.875,46.517c-11.725,-17.346 -31.575,-28.758 -54.067,-28.758c-35.987,0 -65.204,29.217 -65.204,65.204c0,35.987 29.217,65.204 65.204,65.204c21.5,0 40.583,-10.429 52.467,-26.5l83.408,46.817c-1.692,5.804 -2.6,11.933 -2.6,18.275c0,35.987 29.217,65.204 65.204,65.204c35.988,0 65.204,-29.217 65.204,-65.204c0,-35.988 -29.217,-65.204 -65.204,-65.204c-20.317,0 -38.479,9.312 -50.438,23.896l-84.575,-47.471c1.138,-4.821 1.738,-9.85 1.738,-15.017c0,-4.167 -0.392,-8.246 -1.138,-12.196l86.262,-48.417c11.925,13.058 29.088,21.258 48.15,21.258c35.988,0 65.204,-29.221 65.204,-65.208c0,-35.988 -29.217,-65.204 -65.204,-65.204c-35.988,-0 -65.204,29.217 -65.204,65.204c0,7.571 1.292,14.838 3.667,21.6Zm61.538,147.596c21.617,0 39.163,17.546 39.163,39.163c0,21.612 -17.546,39.162 -39.163,39.162c-21.613,0 -39.163,-17.55 -39.163,-39.162c0,-21.617 17.55,-39.163 39.163,-39.163Zm-198.479,-103.796c21.617,0 39.163,17.546 39.163,39.162c0,21.612 -17.546,39.162 -39.163,39.162c-21.612,0 -39.162,-17.55 -39.162,-39.162c0,-21.617 17.55,-39.162 39.162,-39.162Zm198.479,-104.562c21.617,-0 39.163,17.55 39.163,39.162c0,21.617 -17.546,39.167 -39.163,39.167c-21.613,0 -39.163,-17.55 -39.163,-39.167c0,-21.613 17.55,-39.162 39.163,-39.162Z"/></g></svg>

Before

Width:  |  Height:  |  Size: 679 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

View file

@ -62,23 +62,12 @@ export function scrollBack(){
const bottomBar = document.getElementById('bottom-bar');
const navInvestigation = document.getElementById('nav-investigation');
const header = document.getElementById('site-header');
const footerEl = document.getElementById('support-bar') || document.getElementById('site-footer');
let lastY = window.scrollY;
let peakY = window.scrollY;
let visible = false;
const show = () => {
visible = true;
if (bottomBar) bottomBar.classList.add('is-visible');
if (navInvestigation && header) header.classList.add('has-nav-investigation');
};
const hide = () => {
visible = false;
if (bottomBar) bottomBar.classList.remove('is-visible');
if (navInvestigation && header) header.classList.remove('has-nav-investigation');
};
window.addEventListener('scroll', () => {
const currentY = window.scrollY;
@ -87,14 +76,23 @@ export function scrollBack(){
header.classList.toggle('has-nav-investigation', currentY >= 160);
}
// bottom-bar : show au scroll bas > 280px, hide après 200px de scroll haut
if (currentY > lastY) {
// zone footer : bottom-bar masquée et verrouillée
const inFooterZone = footerEl && (currentY + window.innerHeight >= footerEl.offsetTop);
if (inFooterZone) {
if (visible) {
visible = false;
if (bottomBar) bottomBar.classList.remove('is-visible');
}
} else if (currentY > lastY) {
// scroll bas
peakY = currentY;
if (!visible && currentY > 280) {
visible = true;
if (bottomBar) bottomBar.classList.add('is-visible');
}
} else {
// scroll haut : hide après 200px remontés
if (visible && peakY - currentY >= 200) {
visible = false;
if (bottomBar) bottomBar.classList.remove('is-visible');