Feat: breakpoints CSS en @custom-media via postcss-custom-media
- postcss.config.js: plugin postcss-custom-media - variables.css: @custom-media --mobile / --tablet / --tablet-only - Remplacement de tous les max-width: 700px et 912px hardcodés par @media (--mobile), (--tablet), (--tablet-only) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d42217fd20
commit
66767f0136
10 changed files with 148 additions and 18 deletions
130
package-lock.json
generated
130
package-lock.json
generated
|
|
@ -16,7 +16,100 @@
|
||||||
"vite": "7.0.4"
|
"vite": "7.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"fs-extra": "^11.3.3"
|
"fs-extra": "^11.3.3",
|
||||||
|
"postcss": "^8.5.8",
|
||||||
|
"postcss-custom-media": "^12.0.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@csstools/cascade-layer-name-parser": {
|
||||||
|
"version": "3.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-3.0.0.tgz",
|
||||||
|
"integrity": "sha512-/3iksyevwRfSJx5yH0RkcrcYXwuhMQx3Juqf40t97PeEy2/Mz2TItZ/z/216qpe4GgOyFBP8MKIwVvytzHmfIQ==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/csstools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/csstools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.19.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@csstools/css-parser-algorithms": "^4.0.0",
|
||||||
|
"@csstools/css-tokenizer": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@csstools/css-parser-algorithms": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/csstools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/csstools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.19.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@csstools/css-tokenizer": "^4.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@csstools/css-tokenizer": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/csstools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/csstools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.19.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@csstools/media-query-list-parser": {
|
||||||
|
"version": "5.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-5.0.0.tgz",
|
||||||
|
"integrity": "sha512-T9lXmZOfnam3eMERPsszjY5NK0jX8RmThmmm99FZ8b7z8yMaFZWKwLWGZuTwdO3ddRY5fy13GmmEYZXB4I98Eg==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/csstools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/csstools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.19.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"@csstools/css-parser-algorithms": "^4.0.0",
|
||||||
|
"@csstools/css-tokenizer": "^4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@esbuild/aix-ppc64": {
|
"node_modules/@esbuild/aix-ppc64": {
|
||||||
|
|
@ -1161,9 +1254,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/postcss": {
|
"node_modules/postcss": {
|
||||||
"version": "8.5.6",
|
"version": "8.5.8",
|
||||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
|
"resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz",
|
||||||
"integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
|
"integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==",
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
"type": "opencollective",
|
"type": "opencollective",
|
||||||
|
|
@ -1188,6 +1281,35 @@
|
||||||
"node": "^10 || ^12 || >=14"
|
"node": "^10 || ^12 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/postcss-custom-media": {
|
||||||
|
"version": "12.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-12.0.1.tgz",
|
||||||
|
"integrity": "sha512-66syE14+VeqkUf0rRX0bvbTCbNRJF132jD+ceo8th1dap2YJEAqpdh5uG98CE3IbgHT7m9XM0GIlOazNWqQdeA==",
|
||||||
|
"dev": true,
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/csstools"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "opencollective",
|
||||||
|
"url": "https://opencollective.com/csstools"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@csstools/cascade-layer-name-parser": "^3.0.0",
|
||||||
|
"@csstools/css-parser-algorithms": "^4.0.0",
|
||||||
|
"@csstools/css-tokenizer": "^4.0.0",
|
||||||
|
"@csstools/media-query-list-parser": "^5.0.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=20.19.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"postcss": "^8.4"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/regexparam": {
|
"node_modules/regexparam": {
|
||||||
"version": "1.3.0",
|
"version": "1.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/regexparam/-/regexparam-1.3.0.tgz",
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@
|
||||||
"vite": "7.0.4"
|
"vite": "7.0.4"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"fs-extra": "^11.3.3"
|
"fs-extra": "^11.3.3",
|
||||||
|
"postcss": "^8.5.8",
|
||||||
|
"postcss-custom-media": "^12.0.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
postcss.config.js
Normal file
5
postcss.config.js
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
import customMedia from 'postcss-custom-media'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
plugins: [customMedia()]
|
||||||
|
}
|
||||||
|
|
@ -166,7 +166,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile — var(--breakpoint-mobile) = 700px */
|
/* Mobile — var(--breakpoint-mobile) = 700px */
|
||||||
@media screen and (max-width: 700px) {
|
@media (--mobile) {
|
||||||
.navbar {
|
.navbar {
|
||||||
min-height: 8vh;
|
min-height: 8vh;
|
||||||
padding: 10vh 0 1vh;
|
padding: 10vh 0 1vh;
|
||||||
|
|
@ -179,7 +179,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tablet — var(--breakpoint-tablet) = 912px */
|
/* Tablet — var(--breakpoint-tablet) = 912px */
|
||||||
@media screen and (min-width: 701px) and (max-width: 912px) {
|
@media (--tablet-only) {
|
||||||
.navbar-item {
|
.navbar-item {
|
||||||
font-size: var(--font-size-paragraph-tablet);
|
font-size: var(--font-size-paragraph-tablet);
|
||||||
padding: 1vmax 1.8vmax;
|
padding: 1vmax 1.8vmax;
|
||||||
|
|
|
||||||
|
|
@ -244,7 +244,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile — var(--breakpoint-mobile) = 700px */
|
/* Mobile — var(--breakpoint-mobile) = 700px */
|
||||||
@media screen and (max-width: 700px) {
|
@media (--mobile) {
|
||||||
.menu-list {
|
.menu-list {
|
||||||
font-size: var(--font-size-subtitle-mobile);
|
font-size: var(--font-size-subtitle-mobile);
|
||||||
grid-area: 6/4 / span 8 / span 8;
|
grid-area: 6/4 / span 8 / span 8;
|
||||||
|
|
@ -269,7 +269,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tablet — var(--breakpoint-tablet) = 912px */
|
/* Tablet — var(--breakpoint-tablet) = 912px */
|
||||||
@media screen and (min-width: 701px) and (max-width: 912px) {
|
@media (--tablet-only) {
|
||||||
.menu-list {
|
.menu-list {
|
||||||
font-size: var(--font-size-title-section-tablet);
|
font-size: var(--font-size-title-section-tablet);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,8 @@
|
||||||
|
/* Custom media queries — utilisables dans @media (--mobile) / @media (--tablet) */
|
||||||
|
@custom-media --mobile (max-width: 700px);
|
||||||
|
@custom-media --tablet (max-width: 912px);
|
||||||
|
@custom-media --tablet-only (min-width: 701px) and (max-width: 912px);
|
||||||
|
|
||||||
/* CSS Variables */
|
/* CSS Variables */
|
||||||
:root {
|
:root {
|
||||||
/* Colors */
|
/* Colors */
|
||||||
|
|
@ -6,10 +11,6 @@
|
||||||
--color-background: #000;
|
--color-background: #000;
|
||||||
--color-text: #fff;
|
--color-text: #fff;
|
||||||
|
|
||||||
/* BREAKPOINTS (référence — non utilisables directement dans @media)
|
|
||||||
* --breakpoint-mobile : 700px
|
|
||||||
* --breakpoint-tablet : 912px
|
|
||||||
*/
|
|
||||||
--breakpoint-mobile: 700px;
|
--breakpoint-mobile: 700px;
|
||||||
--breakpoint-tablet: 912px;
|
--breakpoint-tablet: 912px;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -363,7 +363,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile (≤ 700px) */
|
/* Mobile (≤ 700px) */
|
||||||
@media screen and (max-width: 700px) {
|
@media (--mobile) {
|
||||||
.expertise-title {
|
.expertise-title {
|
||||||
grid-area: 5/4 / span 1 / span 7;
|
grid-area: 5/4 / span 1 / span 7;
|
||||||
font-size: var(--font-size-title-main-mobile);
|
font-size: var(--font-size-title-main-mobile);
|
||||||
|
|
@ -379,7 +379,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tablet (701–912px) */
|
/* Tablet (701–912px) */
|
||||||
@media screen and (min-width: 701px) and (max-width: 912px) {
|
@media (--tablet-only) {
|
||||||
.expertise-title {
|
.expertise-title {
|
||||||
grid-area: 5/6 / span 4 / span 12;
|
grid-area: 5/6 / span 4 / span 12;
|
||||||
font-size: var(--font-size-title-main-tablet);
|
font-size: var(--font-size-title-main-tablet);
|
||||||
|
|
|
||||||
|
|
@ -175,7 +175,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@media screen and (min-width: 701px) and (max-width: 912px) {
|
@media (--tablet-only) {
|
||||||
.home-subtitle {
|
.home-subtitle {
|
||||||
font-size: var(--font-size-subtitle-tablet);
|
font-size: var(--font-size-subtitle-tablet);
|
||||||
width: 70%;
|
width: 70%;
|
||||||
|
|
|
||||||
|
|
@ -386,7 +386,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --- Mobile (≤ 700px) --- */
|
/* --- Mobile (≤ 700px) --- */
|
||||||
@media screen and (max-width: 700px) {
|
@media (--mobile) {
|
||||||
.game-preview {
|
.game-preview {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -291,7 +291,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Mobile (≤ 700px) */
|
/* Mobile (≤ 700px) */
|
||||||
@media screen and (max-width: 700px) {
|
@media (--mobile) {
|
||||||
.portfolio-gallery {
|
.portfolio-gallery {
|
||||||
grid-area: 1/1 / span 20 / span 20;
|
grid-area: 1/1 / span 20 / span 20;
|
||||||
opacity: 0.3;
|
opacity: 0.3;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue