De plus en plus de banques recourent à des questionnaires et des solutions de cyber rating pour quantifier la maturité cyber de leurs clients.
La réconciliation financière faite entre un trading desk et un éditeur de presse français a aussi montré que la plateforme la plus chère est celle qui a délivré les meilleurs résultats pour une campagne de branding.
L'IA a transformé chaque cybercriminel en attaquant de masse. Pour 2026, l'observabilité en temps réel n'est plus une option mais une nécessité stratégique.
Alors que de nombreuses fintech multiplient les solutions tout-en-un, Spendesk reste fidèle à sa spécialité : la gestion optimisée des dépenses. Son CEO, Axel Demazy, revient sur ce choix stratégique.
Saturation des canaux, hausse des coûts, IA généralisée : l'intuition ne suffit plus. Comment structurer un pilotage marketing réellement data-driven.
Build a scroll-driven, infinitely looping 3D image tube in React Three Fiber powered by shaders, inertia, and a unified motion system.
– Article invité, rédigé par Vincent Lautier , contient des liens affiliés Amazon –
UGREEN nous a envoyé en test sa WebCam haut de gamme FineCam Pro 4K , une webcam équipée d'un capteur CMOS 1/2 pouce de 8 mégapixels, bien plus grand que ce qu'on trouve habituellement à ce prix. Avec un autofocus PDAF, des contrôles gestuels et un tarif correct, c’est un produit franchement sympa pour ceux qui veulent améliorer leur image en visio sans se ruiner.
Lorsque l’on parle de vitesse sur la route, nous pensons immédiatement en kilomètres par heure (km/h). Pourtant, dès que l’on quitte la terre ferme pour la mer ou les airs, cette logique change. Pourquoi les marins s’obstinent-ils à utiliser les « nœuds » ? Est-ce une simple tradition nostalgique ou une nécessité scientifique ? Plongeons dans l’histoire de la navigation pour comprendre comment une simple corde à nœuds est devenue l’unité de mesure standard mondiale. 1. Une origine historique ingénieuse : La ligne de loch L’utilisation du terme « nœud » n’est pas une métaphore, mais une référence littérale à une méthode de mesure ...
Vous avez déjà remarqué comment le volume varie d'une vidéo à l'autre sur YouTube, ou pire, comment certaines pubs sont 10 fois plus fortes que le contenu ? Bah c'est parce que tout le monde n'utilise pas la même norme de volume. Et si vous produisez du contenu audio/vidéo, c'est le genre de détail qui fait la différence entre un truc amateur et un rendu pro.
La bonne nouvelle, c'est que FFmpeg intègre déjà un filtre qui s'appelle loudnorm et qui gère tout ça automatiquement. La norme utilisée, c'est le LUFS (Loudness Units Full Scale), qui est devenue le standard de l'industrie, et YouTube, Spotify, les TV... tout le monde utilise ça maintenant pour mesurer et normaliser le volume audio.
Au cours des 3 dernières années, l’IA générative a été racontée comme une histoire de texte, composée de chatbots, d’assistants, le tout fournissant des réponses. Un progrès spectaculaire, mais circonscrit à un terrain où la machine peut s’entraîner sur des volumes massifs de données déjà disponibles, et où l’environnement et le langage offrent une forme …
L’article Arthur Mensch : l’IA à l’heure de l’intégration industrielle est apparu en premier sur FW.MEDIA.
Le rapport "AI Performance" dans Bing Webmaster Tools donne des indications précieuses pour évaluer la présence de son site dans les résultats IA. Voyez comment aller encore plus loin pour votre GEO.
Parce que les phénomènes d’addiction aux médias sociaux ne sont pas apparus spontanément mais ont savamment été mis en place par les GAFAM, et qu’il faudrait sans doute que ça se sache un peu plus… Attention à l’économie de l’attention … Lire la suite
La gestion de la portée des styles est un défi historique en CSS. Des méthodologies comme BEM aux solutions techniques comme le Shadow DOM ou les CSS Modules, nous avons toujours cherché à éviter que le style d'un composant ne se propage sur ses voisins. L'arrivée de la règle @scope change la donne en offrant une solution native, flexible et puissante.
@scopeLa règle @scope permet de cibler des éléments dans un fragment spécifique du DOM.
Dans cet exemple simple, seuls les <h2> à l'intérieur des éléments portant la classe .card seront colorés en hotpink. Les styles n'affecteront pas les autres <h2> de la page :
@scope (.card) {
/* Cible les h2 uniquement dans .card */
h2 {
color: hotpink;
}
}
Dans cet autre exemple sont ciblés uniquement les <h2> à l'intérieur des éléments portant la classe .card contenant un élément .title :
@scope (.card:has(.title)) {
/* Cible les h2 uniquement dans .card qui contient .title */
h2 {
color: hotpink;
}
}
Voici le tableau de compatibilité de @scope, que vous pouvez également consulter sur Caniuse.com :
:scope et l'esperluette &À l'intérieur d'un bloc @scope, le navigateur a besoin d'un moyen de désigner l'élément racine lui-même (celui qui porte la classe ou l'attribut de départ). Il existe deux façons de procéder :
:scope : Une pseudo-classe qui référence logiquement l'élément racine. C'est le cœur technique du dispositif.& (Esperluette) : Comme dans le nesting classique, elle permet de coller des états à la racine (ex: &:hover).Dans la plupart des cas, l'usage du & pour les états interactifs est recommandé pour sa simplicité.
Par exemple, si on souhaite que son composant .card ait un fond gris, mais que ses éléments internes aient leurs propres styles, on va se servir de :scope :
@scope (.card) {
/* Cible l'élément .card lui-même */
:scope {
background: var(--surface);
border: 1px solid var(--border-light);
}
}
Pour les éléments hautement réutilisables comme les boutons, :scope associé à & (esperluette) permettent de centraliser la logique interactive (hover, focus, active) en utilisant les variables CSS.
@scope (.btn) {
:scope {
/* Variables par défaut */
--button-background-color: var(--form-background, Field);
--button-text-color: var(--on-form, ButtonText);
background-color: var(--button-background-color);
color: var(--button-text-color);
transition: all var(--transition-duration);
}
/* Logique interactive unique pour toutes les variantes */
&:hover, &:focus-visible {
background-color: oklch(from var(--button-background-color) calc(l * 0.9) c h);
}
&:disabled {
opacity: 0.8;
cursor: not-allowed;
}
/* Variantes : On ne change que les valeurs, pas la logique */
&.btn-primary {
--button-background-color: var(--primary);
--button-text-color: var(--on-primary);
}
}
.card .title ou .card > .title ?C'est bien vrai ça, on pourrait croire que @scope ne sert qu'à nous compliquer la vie. Alors que… pas du tout !
@scope, c'est la racine la plus proche de l'élément dans le DOM qui l'emporte. C'est idéal pour les thèmes imbriqués..card .title a une spécificité de (0,2,0). À l'intérieur d'un @scope, le sélecteur .title reste à (0,1,0), facilitant les surcharges sans utiliser !important.>) est fragile. Si on ajoute une div intermédiaire pour du layout, le style casse. @scope tolère n'importe quelle profondeur tant que la limite n'est pas franchie.En outre, grâce à la priorité par proximité, @scope permet d'imbriquer des thèmes sans conflit, peu importe l'ordre des CSS.
@scope (.theme-dark) {
:scope { background: #1a1a1a; color: white; }
.title { color: var(--color-pink-300); }
}
@scope (.theme-light) {
:scope { background: white; color: #1a1a1a; }
.title { color: var(--color-blue-600); }
}
Contrairement aux sélecteurs descendants classiques, @scope introduit deux concepts majeurs :
Dans l'exemple suivant, le navigateur cherche .card pour y colorer les h2 en rose. Cependant, dès qu'il rencontre un élément .content, il cesse d'appliquer les styles à ses descendants :
@scope (.card) to (.content) {
/* Cible les .title dans .card mais s'arrête à .content */
.title {
color: hotpink;
}
}
C'est l'atout majeur de @scope : la capacité de définir un périmètre d'exclusion via la clause to. Cela permet de protéger des zones de contenu riche (WYSIWYG, slots) ou des composants imbriqués qui ne doivent pas être affectés par les styles du parent.
BEM est une convention efficace mais verbeuse, et elle repose entièrement sur votre discipline de nommage et nécessite des noms de classes uniques (.card__title, .hero__title--alternate).
Avec @scope, vous pouvez garder des noms plus simples et réutilisables, tout en garantissant que les styles restent confinés à leur contexte : le HTML est épuré des préfixes répétitifs et grâce au to (.content), un titre de card situé dans un élément .content sera jamais affecté par le style de la carte, car il est "hors limite".
L'adoption de @scope marque une étape vers la fin de l'ère "tout BEM" au profit d'une approche plus sémantique et structurelle.
Dans un projet concret, BEM, @layer et @scope peuvent cependant coexister :
On ne va pas se mentir : l'intégration de @scope dans un projet utilisant déjà un framework utilitaire comme Tailwind peut sembler redondante au premier abord.
Il existe cependant quelques cas d'usage où @scope peut apporter une valeur ajoutée significative, notamment pour les composants complexes et les zones de contenu dynamique qui ne sont pas facilement gérables avec les classes utilitaires seules.
Par exemple, dans Tailwind, styler du HTML brut (venant d'un CMS) nécessite souvent l'utilisation du plugin @tailwindcss/typography (classe .prose). Cependant, ce plugin est parfois trop rigide. Avec @scope, on peut créer des "bulles" de styles spécifiques pour son contenu sans polluer le reste du site et sans créer de classes complexes :
@layer components {
@scope (.prose-custom) to (.content) {
/* On style les balises nues uniquement dans ce contexte */
h2 { @apply text-2xl font-bold mb-4 text-primary; }
p { @apply leading-relaxed mb-6; }
/* Les limites protègent les composants Tailwind imbriqués */
}
}
Si l'on devait résumer les avantages de @scope en quelques points clés :
.card-header__title. On utilise des classes simples (.title, .media, .header, .content) et faciles à retenir.to pour définir une limite haute et basse et garantir que les utilitaires appliqués à un composant enfant ne seront jamais écrasés par les styles du parent.@scope apparaît clairement, permettant de voir immédiatement quelle racine applique le style, plutôt que de chercher l'origine dans une pile de sélecteurs descendants complexes..card .btn) qui augmentent la spécificité, @scope maintient une spécificité faible. Cela permet à ses classes utilitaires (ex: p-4) de rester prioritaires et faciles à surcharger si besoin.Si l'on ne devait en retenir qu'un seul, il s'agirait sans aucun doute de Conflits de nommage réduits. En effet, des noms de classes génériques comme .title peuvent être utilisées dans plusieurs scopes sans risque de conflit, car elles ne s'appliquent qu'à leur propre scope. Et tout le monde sait que nommer les choses c'est… compliqué.
@scope ne remplace pas les outils actuels, il complète avantageusement l'outillage natif déjà mis en place par CSS (cascade, @layer, :where(), etc.).
Totalement inadapté pour les styles globaux (reset, typographie de base, utilitaires) qui doivent se propager partout, il devient en revanche un allié précieux pour les styles de composants et les zones de contenu dynamique.
Utilisons-le dans notre @layer(components) pour isoler nos "organismes" (cartes, headers, modales). C'est la fin du "CSS qui bave" et le début d'une architecture plus proche de la structure réelle de vos pages.
Note : Le support navigateur est désormais excellent dans les versions récentes de Firefox, Chrome, Edge et Safari. Pour les projets nécessitant un support legacy, une stratégie de Progressive Enhancement via @supports (scope: html) est préconisée.
La gestion de la portée des styles est un défi historique en CSS. Des méthodologies comme BEM aux solutions techniques comme le Shadow DOM ou les CSS Modules, nous avons toujours cherché à éviter que le style d'un composant ne se propage sur ses voisins. L'arrivée de la règle @scope change la donne en offrant une solution native, flexible et puissante.
@scopeLa règle @scope permet de cibler des éléments dans un fragment spécifique du DOM.
Dans cet exemple simple, seuls les <h2> à l'intérieur des éléments portant la classe .card seront colorés en hotpink. Les styles n'affecteront pas les autres <h2> de la page :
@scope (.card) {
/* Cible les h2 uniquement dans .card */
h2 {
color: hotpink;
}
}
Dans cet autre exemple sont ciblés uniquement les <h2> à l'intérieur des éléments portant la classe .card contenant un élément .title :
@scope (.card:has(.title)) {
/* Cible les h2 uniquement dans .card qui contient .title */
h2 {
color: hotpink;
}
}
Voici le tableau de compatibilité de @scope, que vous pouvez également consulter sur Caniuse.com :
:scope et l'esperluette &À l'intérieur d'un bloc @scope, le navigateur a besoin d'un moyen de désigner l'élément racine lui-même (celui qui porte la classe ou l'attribut de départ). Il existe deux façons de procéder :
:scope : Une pseudo-classe qui référence logiquement l'élément racine. C'est le cœur technique du dispositif.& (Esperluette) : Comme dans le nesting classique, elle permet de coller des états à la racine (ex: &:hover).Dans la plupart des cas, l'usage du & pour les états interactifs est recommandé pour sa simplicité.
Par exemple, si on souhaite que son composant .card ait un fond gris, mais que ses éléments internes aient leurs propres styles, on va se servir de :scope :
@scope (.card) {
/* Cible l'élément .card lui-même */
:scope {
background: var(--surface);
border: 1px solid var(--border-light);
}
}
Pour les éléments hautement réutilisables comme les boutons, :scope associé à & (esperluette) permettent de centraliser la logique interactive (hover, focus, active) en utilisant les variables CSS.
@scope (.btn) {
:scope {
/* Variables par défaut */
--button-background-color: var(--form-background, Field);
--button-text-color: var(--on-form, ButtonText);
background-color: var(--button-background-color);
color: var(--button-text-color);
transition: all var(--transition-duration);
}
/* Logique interactive unique pour toutes les variantes */
&:hover, &:focus-visible {
background-color: oklch(from var(--button-background-color) calc(l * 0.9) c h);
}
&:disabled {
opacity: 0.8;
cursor: not-allowed;
}
/* Variantes : On ne change que les valeurs, pas la logique */
&.btn-primary {
--button-background-color: var(--primary);
--button-text-color: var(--on-primary);
}
}
.card .title ou .card > .title ?C'est bien vrai ça, on pourrait croire que @scope ne sert qu'à nous compliquer la vie. Alors que… pas du tout !
@scope, c'est la racine la plus proche de l'élément dans le DOM qui l'emporte. C'est idéal pour les thèmes imbriqués..card .title a une spécificité de (0,2,0). À l'intérieur d'un @scope, le sélecteur .title reste à (0,1,0), facilitant les surcharges sans utiliser !important.>) est fragile. Si on ajoute une div intermédiaire pour du layout, le style casse. @scope tolère n'importe quelle profondeur tant que la limite n'est pas franchie.En outre, grâce à la priorité par proximité, @scope permet d'imbriquer des thèmes sans conflit, peu importe l'ordre des CSS.
@scope (.theme-dark) {
:scope { background: #1a1a1a; color: white; }
.title { color: var(--color-pink-300); }
}
@scope (.theme-light) {
:scope { background: white; color: #1a1a1a; }
.title { color: var(--color-blue-600); }
}
Contrairement aux sélecteurs descendants classiques, @scope introduit deux concepts majeurs :
Dans l'exemple suivant, le navigateur cherche .card pour y colorer les h2 en rose. Cependant, dès qu'il rencontre un élément .content, il cesse d'appliquer les styles à ses descendants :
@scope (.card) to (.content) {
/* Cible les .title dans .card mais s'arrête à .content */
.title {
color: hotpink;
}
}
C'est l'atout majeur de @scope : la capacité de définir un périmètre d'exclusion via la clause to. Cela permet de protéger des zones de contenu riche (WYSIWYG, slots) ou des composants imbriqués qui ne doivent pas être affectés par les styles du parent.
BEM est une convention efficace mais verbeuse, et elle repose entièrement sur votre discipline de nommage et nécessite des noms de classes uniques (.card__title, .hero__title--alternate).
Avec @scope, vous pouvez garder des noms plus simples et réutilisables, tout en garantissant que les styles restent confinés à leur contexte : le HTML est épuré des préfixes répétitifs et grâce au to (.content), un titre de card situé dans un élément .content sera jamais affecté par le style de la carte, car il est "hors limite".
L'adoption de @scope marque une étape vers la fin de l'ère "tout BEM" au profit d'une approche plus sémantique et structurelle.
Dans un projet concret, BEM, @layer et @scope peuvent cependant coexister :
On ne va pas se mentir : l'intégration de @scope dans un projet utilisant déjà un framework utilitaire comme Tailwind peut sembler redondante au premier abord.
Il existe cependant quelques cas d'usage où @scope peut apporter une valeur ajoutée significative, notamment pour les composants complexes et les zones de contenu dynamique qui ne sont pas facilement gérables avec les classes utilitaires seules.
Par exemple, dans Tailwind, styler du HTML brut (venant d'un CMS) nécessite souvent l'utilisation du plugin @tailwindcss/typography (classe .prose). Cependant, ce plugin est parfois trop rigide. Avec @scope, on peut créer des "bulles" de styles spécifiques pour son contenu sans polluer le reste du site et sans créer de classes complexes :
@layer components {
@scope (.prose-custom) to (.content) {
/* On style les balises nues uniquement dans ce contexte */
h2 { @apply text-2xl font-bold mb-4 text-primary; }
p { @apply leading-relaxed mb-6; }
/* Les limites protègent les composants Tailwind imbriqués */
}
}
Si l'on devait résumer les avantages de @scope en quelques points clés :
.card-header__title. On utilise des classes simples (.title, .media, .header, .content) et faciles à retenir.to pour définir une limite haute et basse et garantir que les utilitaires appliqués à un composant enfant ne seront jamais écrasés par les styles du parent.@scope apparaît clairement, permettant de voir immédiatement quelle racine applique le style, plutôt que de chercher l'origine dans une pile de sélecteurs descendants complexes..card .btn) qui augmentent la spécificité, @scope maintient une spécificité faible. Cela permet à ses classes utilitaires (ex: p-4) de rester prioritaires et faciles à surcharger si besoin.Si l'on ne devait en retenir qu'un seul, il s'agirait sans aucun doute de Conflits de nommage réduits. En effet, des noms de classes génériques comme .title peuvent être utilisées dans plusieurs scopes sans risque de conflit, car elles ne s'appliquent qu'à leur propre scope. Et tout le monde sait que nommer les choses c'est… compliqué.
@scope ne remplace pas les outils actuels, il complète avantageusement l'outillage natif déjà mis en place par CSS (cascade, @layer, :where(), etc.).
Totalement inadapté pour les styles globaux (reset, typographie de base, utilitaires) qui doivent se propager partout, il devient en revanche un allié précieux pour les styles de composants et les zones de contenu dynamique.
Utilisons-le dans notre @layer(components) pour isoler nos "organismes" (cartes, headers, modales). C'est la fin du "CSS qui bave" et le début d'une architecture plus proche de la structure réelle de vos pages.
Note : Le support navigateur est désormais excellent dans les versions récentes de Firefox, Chrome, Edge et Safari. Pour les projets nécessitant un support legacy, une stratégie de Progressive Enhancement via @supports (scope: html) est préconisée.
Pour la 5e année consécutive, le Vietnam est considéré comme le pays "le moins cher du monde". L'écrasante majorité des expatriés recommandent d'y vivre.
Pour la 5e année consécutive, le Vietnam est considéré comme le pays "le moins cher du monde". L'écrasante majorité des expatriés recommandent d'y vivre.
Si le télétravail s'est inséré dans le quotidien des salariés français, beaucoup oublient leurs droits, notamment en matière de remboursement de frais.
En intégrant nativement la vidéo via le protocole HLS dans Apple Podcasts, la firme de Cupertino veut redessiner les lignes du marché du podcast video que YouTube a progressivement capté. Depuis trois ans, si l’audio reste majoritaire en volume d’écoute, la croissance d’audience et la monétisation premium se structurent désormais autour de la vidéo. Interviews …
L’article APPLE relance la bataille du podcast vidéo face à YouTube est apparu en premier sur FW.MEDIA.