Merci beaucoup, je savais qu'il y avait quelque chose de ce genre à faire, mais je ne savais plus quoi.
Bonjour,
Ajoute le modifieur s (PCRE_DOTALL) pour que ta regex fonctionne sur le contenu multi-lignes :
https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
Ajoute le modifieur s (PCRE_DOTALL) pour que ta regex fonctionne sur le contenu multi-lignes :
preg_match('#^.*Mise à jour (\d\d)/(\d\d)/(\d\d\d\d)\s(\d\d:\d\d:\d\d).*$#s'
https://www.php.net/manual/fr/reference.pcre.pattern.modifiers.php
Je te remercie de tes propositions de modification de technique de programmation.
Pour le reste, ce n’est pas l’objet de ma question qui est:
"Comment peut-on faire une Regex pour trouver un élément dans une chaîne de caractères qui contient des \n ?"
Pour le reste, ce n’est pas l’objet de ma question qui est:
"Comment peut-on faire une Regex pour trouver un élément dans une chaîne de caractères qui contient des \n ?"
Tu n'as pas besoin de faire une RegEx pour ce genre de chose. Est ce la date de mise à jour des fichiers statiques ? Dans ce cas, tu mets ça dans un json et par convention, tu appelles manifest.json.
Si c'est la date de mise à jour du fichier php, utilise Git (documentation) ou SVN.
Bien que je n'ai pas totalement le contexte, voilà une capture écran avec le code de ce que tu devrais t'inspirer.
const.php :
manifest.json :
test1.php
test2.php (dans ma capture remplacée par index.php):
* tu as des includes partout ce qui peuvent nuire à la maintenance.
Modifié par Niuxe (13 Jan 2026 - 00:06)
Si c'est la date de mise à jour du fichier php, utilise Git (documentation) ou SVN.
Bien que je n'ai pas totalement le contexte, voilà une capture écran avec le code de ce que tu devrais t'inspirer.
const.php :
<?php
define('ROOT', $_SERVER['DOCUMENT_ROOT']);
define('EVENTID', 'Stage2026');
?>
manifest.json :
{
"updated": "2026-01-10T12:47:20Z",
"css": [
"/html/common.css",
"/html/stages/stages.css"
],
"js": [
"/html/common.js",
"/html/frenchDate.js",
"/html/stages/stages.js"
]
}
test1.php
<?php
require_once "const.php";
require_once "$root/html/makelinks.php";
$path_manifest = sprintf('%s/%s', ROOT, 'manifest.json');
$data_manifest = json_decode(file_get_contents($path_manifest));
$css = $data_manifest->css ?? [];
$js = $data_manifest->js ?? [];
MakeLinks(...$css, ...$js);
include_once "$root/html/stages/stage.php";
?>
test2.php (dans ma capture remplacée par index.php):
<?php
require_once "const.php";
$maj = "inconnu";
$path_manifest = sprintf('%s/%s', ROOT, 'manifest.json');
$data_manifest = json_decode(file_get_contents($path_manifest));
if(isset($data_manifest->updated)){
$date = new DateTime($data_manifest->updated);
$maj = $date->format('d-m-Y H:i:s');
}
// à supprimer surement
header('Content-Type: text/html; charset=utf-8');
printf('<p>%s</p>', $maj);
?>
* tu as des includes partout ce qui peuvent nuire à la maintenance.
Modifié par Niuxe (13 Jan 2026 - 00:06)
Bonjour,
Pour transférer des articles d'un ancien site à un autre (domaines différents donc), j'ai utilisé l'outil Wordpress qui, sur le papier, est largement suffisant.
Mais après plusieurs test, je note que si les articles sont bien importés, les photos en avant sont téléchargées de manière aléatoire. J'ai pourtant bien coché l(option de téléchargement des visuels et c'est pourquoi, certains se chargent.
Parfois en fin de téléchargement sur le nouveau site, j'ai un écran gris, les articles sont chargés mais pas les photos.
J'ai découpé mes archive en petit bouts afin qu'elles soit ultra légère mais une archive plus lourde peut mieux se charger qu'une légère.
Bref, j'ay travaille depuis deux jours et je n'y parviens pas. Si j'avais imaginé ce pb, j'aurais commencé par intervenir avec un import/export phpMyAdmin mais j'ai commencé à développer le site et je ne veux pas prendre de risque avec la BDD.
Existe t-il une autre solution simple et gratuite ?
Pour transférer des articles d'un ancien site à un autre (domaines différents donc), j'ai utilisé l'outil Wordpress qui, sur le papier, est largement suffisant.
Mais après plusieurs test, je note que si les articles sont bien importés, les photos en avant sont téléchargées de manière aléatoire. J'ai pourtant bien coché l(option de téléchargement des visuels et c'est pourquoi, certains se chargent.
Parfois en fin de téléchargement sur le nouveau site, j'ai un écran gris, les articles sont chargés mais pas les photos.
J'ai découpé mes archive en petit bouts afin qu'elles soit ultra légère mais une archive plus lourde peut mieux se charger qu'une légère.
Bref, j'ay travaille depuis deux jours et je n'y parviens pas. Si j'avais imaginé ce pb, j'aurais commencé par intervenir avec un import/export phpMyAdmin mais j'ai commencé à développer le site et je ne veux pas prendre de risque avec la BDD.
Existe t-il une autre solution simple et gratuite ?
le fichier https://www.alma-musica.net/tests/test1.php
contient
le fichier https://www.alma-musica.net/tests/test2.php
contient
dans la première partie du programme, la recherche se fait sur le contenu de test1.php qui contient des \n. Cette recherche n'aboutit pas.
Dans la deuxième partie on travaille sur le contenu de test1.php dans lequel tous les caractères \s (dont \n) ont été remplacés par des espaces.
On obtient le résultat désiré.
Modifié par PapyJP (12 Jan 2026 - 11:18)
contient
<?php
/* Mise à jour 10/01/2026 12:47:20 */
$root = $_SERVER['DOCUMENT_ROOT'];
$EVENTID = 'Stage2026';
include_once "$root/html/makelinks.php";
MakeLinks(
"/html/common.css",
"/html/stages/stages.css",
"/html/common.js",
"/html/frenchDate.js",
"/html/stages/stages.js"
);
include_once "$root/html/stages/stage.php";
?>
le fichier https://www.alma-musica.net/tests/test2.php
contient
<?php
$root = $_SERVER['DOCUMENT_ROOT'];
$maj = "inconnu";
$content = file_get_contents("$root/tests/test1.php");
if(preg_match('#^.*Mise à jour (\d\d)/(\d\d)/(\d\d\d\d)\s(\d\d:\d\d:\d\d).*$#',
$content, $matches)) {
list($x, $d, $m, $y, $t) = $matches;
$maj = "$y-$m-$d $t";
}
echo "<p>$maj</p>";
$content2 = preg_replace('#\s+#', ' ', $content);
if(preg_match('#^.*Mise à jour (\d\d)/(\d\d)/(\d\d\d\d)\s(\d\d:\d\d:\d\d).*$#',
$content2, $matches)) {
list($x, $d, $m, $y, $t) = $matches;
$maj = "$y-$m-$d $t";
}
echo "<p>$maj</p>";
?>
dans la première partie du programme, la recherche se fait sur le contenu de test1.php qui contient des \n. Cette recherche n'aboutit pas.
Dans la deuxième partie on travaille sur le contenu de test1.php dans lequel tous les caractères \s (dont \n) ont été remplacés par des espaces.
On obtient le résultat désiré.
Modifié par PapyJP (12 Jan 2026 - 11:18)
Bonjour,
Personne n'a répondu à la question du calcul de la différence de hauteur provoquée par le paramétrage de la taille de police du visiteur.
Je coche néanmoins Résolu car la réponse à la question principale est donnée.
Personne n'a répondu à la question du calcul de la différence de hauteur provoquée par le paramétrage de la taille de police du visiteur.
if (rfsstyle > 16) let dif = ((rfsstyle-16)*8/9)*0.95*1.2;
Je coche néanmoins Résolu car la réponse à la question principale est donnée.
Bonjour,
J'ai un peu modifié le codepen de Niuxe afin d'illustrer un petit problème que je rencontre avec sticky.
Le bloc de contenu (section) fait 400 vh de haut.
La hauteur du bloc sticky est définie par le contenu, en l'occurrence principalement la hauteur de h2, soit 100vh, il est plus haut que la fenêtre, on ne voit pas le bas.
La hauteur de aside n'est pas précisée, je suppose que c'est celle du bloc de contenu (section).
Quand je scrolle vers le bas, le bloc sticky prend sa position fixe, normal.
Mais pour voir le bas je suis obligé d'aller jusqu'à la fin du bloc de contenu.
N'y a-t-il pas moyen que le bloc sticky se libère dès que la molette atteint la fin de se bloc ?
J'espère être clair.
Modifié par boteha_2 (11 Jan 2026 - 19:44)
J'ai un peu modifié le codepen de Niuxe afin d'illustrer un petit problème que je rencontre avec sticky.
Le bloc de contenu (section) fait 400 vh de haut.
La hauteur du bloc sticky est définie par le contenu, en l'occurrence principalement la hauteur de h2, soit 100vh, il est plus haut que la fenêtre, on ne voit pas le bas.
La hauteur de aside n'est pas précisée, je suppose que c'est celle du bloc de contenu (section).
Quand je scrolle vers le bas, le bloc sticky prend sa position fixe, normal.
Mais pour voir le bas je suis obligé d'aller jusqu'à la fin du bloc de contenu.
N'y a-t-il pas moyen que le bloc sticky se libère dès que la molette atteint la fin de se bloc ?
J'espère être clair.
Modifié par boteha_2 (11 Jan 2026 - 19:44)
Donne un exemple du fichier cible stp
Mon fichier contient le code d’un programme php. Une instruction peut se trouver sur plusieurs lignes ou une ligne peut contenir plusieurs instructions (bien que je ne fasse jamais ça).
file() renvoie un array avec une ligne par item. Cela ne correspond pas à mes besoins.
Mais ce n’est pas l’objet de ma question qui est
A ma connaissance preg_match peut scanner une chaîne de caractères contenant des \n. Je constate que tout se passe comme si la chaîne de caractères qui est prise en compte s’arrêtait au premier \n. Il devrait donc y avoir un moyen de dire que \n est un caractère comme un autre.
file() renvoie un array avec une ligne par item. Cela ne correspond pas à mes besoins.
Mais ce n’est pas l’objet de ma question qui est
A ma connaissance preg_match peut scanner une chaîne de caractères contenant des \n. Je constate que tout se passe comme si la chaîne de caractères qui est prise en compte s’arrêtait au premier \n. Il devrait donc y avoir un moyen de dire que \n est un caractère comme un autre.
Salut,
Merci pour ta solution.
Je cherche un plugin pour Mr Tout-le-monde, qui n'a pas à mettre les mains dans le cambouis pour modifier les images.
Merci pour ta solution.
Je cherche un plugin pour Mr Tout-le-monde, qui n'a pas à mettre les mains dans le cambouis pour modifier les images.
Bonjour à tous
Voici mon code php
Je constate que si $content contient des \n le test renvoie false systématiquement.
Par contre si j'écris
le résultat est conforme à mon attente.
Tout se passe comme si \n était considéré comme une fin de chaîne, ce que je croyais pas être le cas en php.
Pourriez-vous éclairer ma lanterne ?
Merci de votre aide
Voici mon code php
$content = file_get_contents($fullFilePath);
if(preg_match('#^.*toto.*$#', $content))...
Je constate que si $content contient des \n le test renvoie false systématiquement.
Par contre si j'écris
$content = file_get_contents($fullFilePath);
$content = preg_replace('#\s+#', ' ', $content);
if(preg_match('#^.*toto.*$#', $content))...
le résultat est conforme à mon attente.
Tout se passe comme si \n était considéré comme une fin de chaîne, ce que je croyais pas être le cas en php.
Pourriez-vous éclairer ma lanterne ?
Merci de votre aide
Spam sur le topic ici présent, mais en réalité aussi sur le topic précédent : les comptes créés pour l'occasion (1 post à leur actif) n'ont aucunement l'intention de communiquer, ils cherchent simplement à placer des liens.
Salut PercyR,
Comme l'a dit Casper2, le SEO est toujours en mouvement. Impossible donc d'en faire le tour. Il faut connaître les bases, mais aussi s'informer des dernières évolutions.
Pour commencer :
https://rank-studio.com/ : un blog assez bien fait avec une partie SEO où chaque terme fait l’objet d’un article. Idéal pour commencer et avoir des définitions précises.
https://lacaverneseo.com/guide-du-debutant-seo/ : guide téléchargeable au format PDF qui vous guide pas à pas sur la mise en place d’une stratégie SEO. Parfait si vous avez les bases techniques, et que vous voulez les mettre en pratique.
Pour progresser et s’informer :
https://scripts-seo.com/ : forum FR avec une communauté assez sympa qui répondra à vos questions quel que soit votre niveau.
https://www.semrush.com/blog/ : le blog du fameux outil d’analyse. Un peu pointu, mais une vraie mine d’or pour connaître les dernières avancées
Il y a évidemment plein d’autres ressources. Celles que Casper2 a données sont toutes aussi valides. Mais je ne veux pas vous submerger. Bon courage dans vos recherches et n’hésitez pas à poser vos questions.
Comme l'a dit Casper2, le SEO est toujours en mouvement. Impossible donc d'en faire le tour. Il faut connaître les bases, mais aussi s'informer des dernières évolutions.
Pour commencer :
https://rank-studio.com/ : un blog assez bien fait avec une partie SEO où chaque terme fait l’objet d’un article. Idéal pour commencer et avoir des définitions précises.
https://lacaverneseo.com/guide-du-debutant-seo/ : guide téléchargeable au format PDF qui vous guide pas à pas sur la mise en place d’une stratégie SEO. Parfait si vous avez les bases techniques, et que vous voulez les mettre en pratique.
Pour progresser et s’informer :
https://scripts-seo.com/ : forum FR avec une communauté assez sympa qui répondra à vos questions quel que soit votre niveau.
https://www.semrush.com/blog/ : le blog du fameux outil d’analyse. Un peu pointu, mais une vraie mine d’or pour connaître les dernières avancées
Il y a évidemment plein d’autres ressources. Celles que Casper2 a données sont toutes aussi valides. Mais je ne veux pas vous submerger. Bon courage dans vos recherches et n’hésitez pas à poser vos questions.
Bonjour, concernant le SEO il y a une multitude de site qui en parle, difficile de faire le tri d'autant que la sphère est mouvante (des nouveaux débarquent assez rapidement). J'en retient 4 principaux.
https://www.webrankinfo.com/
https://www.abondance.com/
https://www.miss-seo-girl.com/
https://daniel-roch.fr => https://www.seomix.fr/ (pour wordpress)
Pour ce qui est des bonnes pratiques :
https://checklists.opquast.com/fr/qualite-numerique/
Bonne lecture...
https://www.webrankinfo.com/
https://www.abondance.com/
https://www.miss-seo-girl.com/
https://daniel-roch.fr => https://www.seomix.fr/ (pour wordpress)
Pour ce qui est des bonnes pratiques :
https://checklists.opquast.com/fr/qualite-numerique/
Bonne lecture...
Tony Monast a écrit :
Bonjour Niuxe,
Tu devrais le faire en TailwindSQL. Chuck Norris lui oserait le faire.
J'y ai pensé. On peut même faire mieux : one file et one line (c'est ça la performance d'exécution)
Salut,
A priori sans plugin , je pense que tu dois pouvoir faire un svg composé d'images et ensuite
juste changer les images sources.
Il faudrait juste régler les dimensions / positions et ça devrait rouler ensuite.
A priori sans plugin , je pense que tu dois pouvoir faire un svg composé d'images et ensuite
juste changer les images sources.
Il faudrait juste régler les dimensions / positions et ça devrait rouler ensuite.
<?xml version="1.0" encoding="UTF-8"?>
<svg
xmlns="http://www.w3.org/2000/svg"
width="1200"
height="300"
viewBox="0 0 1200 300"
>
<image href="img2.jpg" width="400" height="220" transform="translate(150,40) rotate(-8) "/>
<image href="img4.jpg" width="400" height="220" transform="translate(520,30) rotate(4) "/>
<image href="img1.jpg" width="100" height="220" transform="translate(100,40) rotate(4) "/>
<image href="img3.jpg" width="220" height="220" transform="translate(380,25) "/>
<image href="img5.jpg" width="220" height="220" transform="translate(660,40) rotate(-4)"/>
</svg>
Bonjour Niuxe,
Merci pour le suivi.
J'ai posé la question dans une nouvelle discussion et Raphaël a donné une solution qui fonctionne avec getComputedStyle.
Je peux cocher Résolu pour cette discussion.
La conclusion (sauf erreur) est qu'il est possible de donner les dimensions d'une image à la fois dans le html en pixels (en arrondissant à l'entier supérieur) et dans le CSS en rem, le CSS prenant le pas sur le html.
Le code html sert au navigateur à calculer la proportion entre la hauteur et la largeur.
Le code CSS à afficher dans la taille demandée.
Dans la nouvelle discussion il reste une équation en suspens pour calculer la hauteur créée sur une ligne de texte quand la police du navigateur est supérieure à 16px.
Merci pour le suivi.
J'ai posé la question dans une nouvelle discussion et Raphaël a donné une solution qui fonctionne avec getComputedStyle.
Je peux cocher Résolu pour cette discussion.
La conclusion (sauf erreur) est qu'il est possible de donner les dimensions d'une image à la fois dans le html en pixels (en arrondissant à l'entier supérieur) et dans le CSS en rem, le CSS prenant le pas sur le html.
Le code html sert au navigateur à calculer la proportion entre la hauteur et la largeur.
Le code CSS à afficher dans la taille demandée.
Dans la nouvelle discussion il reste une équation en suspens pour calculer la hauteur créée sur une ligne de texte quand la police du navigateur est supérieure à 16px.
Salut Boteha,
Je n'avais pas vu ton message. Pour répondre à ta question, as tu essayé avec les méthodes (ci dessous) ?
.getComputedStyle(elem, null)
.getPropertyValue();
Je n'avais pas vu ton message. Pour répondre à ta question, as tu essayé avec les méthodes (ci dessous) ?
.getComputedStyle(elem, null)
.getPropertyValue();
Bonjour Niuxe,
Tu devrais le faire en TailwindSQL. Chuck Norris lui oserait le faire.
Tu devrais le faire en TailwindSQL. Chuck Norris lui oserait le faire.
Si un jour GigaChadGPT me propose ça comme solution je vais savoir qui blâmer.
Sinon sur le site directement on retrouve ceci en bas :
Et ça sur le GitHub :
Modifié par Tony Monast (06 Jan 2026 - 19:39)
Sinon sur le site directement on retrouve ceci en bas :
Et ça sur le GitHub :
Modifié par Tony Monast (06 Jan 2026 - 19:39)
Bonjour,
Vous avez une section emploi dans alsacreations.com : https://emploi.alsacreations.com/
Je vous convie à rédiger une offre à ce sujet. La section forum est prévue pour poser des questions et non pour proposer des offres ou demande de prestation.
Je ferme le sujet.
Vous avez une section emploi dans alsacreations.com : https://emploi.alsacreations.com/
Je vous convie à rédiger une offre à ce sujet. La section forum est prévue pour poser des questions et non pour proposer des offres ou demande de prestation.
Je ferme le sujet.
Intéressant, ça peut être une bonne opportunité pour les webmasters WordPress expérimentés et ceux qui s’y connaissent en SEO offshore.
Bonjour, je suis à la recherche de prestataires SEO en offshore
Notre agence cherche également des webmasters sur WordPress.
Voici notre formulaire de recrutement si cela vous intéresse : https://www.mylene-digital.fr/recrutement-prestataires/
Merci à tous !
Notre agence cherche également des webmasters sur WordPress.
Voici notre formulaire de recrutement si cela vous intéresse : https://www.mylene-digital.fr/recrutement-prestataires/
Merci à tous !
Bonjour Raphaël,
Très intéressant.
Merci beaucoup.
Très intéressant.
Merci beaucoup.
Salut Alexandre !
Ton problème vient très probablement d’un paramètre YouTube sur ces 2 vidéos :
Le propriétaire a coché "Bloquer l’intégration" (dans Paramètres avancés ? Distribution).
Ou la vidéo est réservée aux +18 ans (même si ton site n’est pas restreint).
Solutions rapides :
1?? Vérifie le lien : Remplace youtube.com/watch?v=XXX par youtube.com/embed/XXX dans ton code (parfois ça contourne le blocage).
2?? Demande au propriétaire de désactiver le blocage (s’il s’agit de tes vidéos, va dans YouTube Studio ? Contenu ? Modifier ? Distribution).
3?? Alternative : Si la vidéo est à toi, héberge-la sur une plateforme plus flexible (ex : Vimeo) ou utilise un lecteur personnalisé (j’explique comment faire ça sur https://agence-ugc.com/).
Modifié par utilisateur8665 (05 Jan 2026 - 09:23)
Ton problème vient très probablement d’un paramètre YouTube sur ces 2 vidéos :
Le propriétaire a coché "Bloquer l’intégration" (dans Paramètres avancés ? Distribution).
Ou la vidéo est réservée aux +18 ans (même si ton site n’est pas restreint).
Solutions rapides :
1?? Vérifie le lien : Remplace youtube.com/watch?v=XXX par youtube.com/embed/XXX dans ton code (parfois ça contourne le blocage).
2?? Demande au propriétaire de désactiver le blocage (s’il s’agit de tes vidéos, va dans YouTube Studio ? Contenu ? Modifier ? Distribution).
3?? Alternative : Si la vidéo est à toi, héberge-la sur une plateforme plus flexible (ex : Vimeo) ou utilise un lecteur personnalisé (j’explique comment faire ça sur https://agence-ugc.com/).
Modifié par utilisateur8665 (05 Jan 2026 - 09:23)
boteha_2 a écrit :
Là je n'échappe pas à un JS, sauf erreur impossible de détecter le scroll avec CSS.
Hello,
Ce n'est pas tout à fait exact : une spec existe mais elle ne fonctionne que sur Chromium actuellement. Il s'agit des "scroll-state queries" : https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Conditional_rules/Container_scroll-state_queries
Une démo (avec polyfill JS pour les navigateurs qui ne supportent pas encore la spec) : https://codepen.io/alsacreations/pen/PoMGKJR
Bonjour,
Le code html / CSS de Niuxe convient très bien, encore merci.
J'ai quand même besoin de détecter si le visiteur a scrollé avec la molette, non pas pour effet sticky (réglé avec CSS) mais pour faire disparaître certains blocs.
Là je n'échappe pas à un JS, sauf erreur impossible de détecter le scroll avec CSS.
Cela fonctionne, est-ce perfectible ou mieux possible en CSS ?
Cette variante fonctionne également, est-elle meilleure ?
Modifié par boteha_2 (04 Jan 2026 - 20:21)
Le code html / CSS de Niuxe convient très bien, encore merci.
J'ai quand même besoin de détecter si le visiteur a scrollé avec la molette, non pas pour effet sticky (réglé avec CSS) mais pour faire disparaître certains blocs.
Là je n'échappe pas à un JS, sauf erreur impossible de détecter le scroll avec CSS.
window.onscroll = function() {myFunction()};
function myFunction()
{
var x = document.body.scrollTop || document.documentElement.scrollTop;
if (x > 0)
{
document.getElementById('panier').className = 'fixed';
}
else
{
document.getElementById('panier').className = '';
}
}
Cela fonctionne, est-ce perfectible ou mieux possible en CSS ?
Cette variante fonctionne également, est-elle meilleure ?
window.addEventListener('scroll', function(e) {
var x = this.scrollY;
if (x > 0)
{
document.getElementById('panier').className = 'fixed';
}
else
{
document.getElementById('panier').className = '';
}
}, false);
Modifié par boteha_2 (04 Jan 2026 - 20:21)
Olivier C a écrit :
Quelle étrangeté pour moi...
Tu n'es pas le seul
Bonjour,
Cela sort effectivement la taille de la police définie dans les paramètres du navigateur, parfait.
Maintenant, avec ce code CSS.
Si je veux calculer en pixels le supplément de hauteur d'une ligne de p provoquée par le paramétrage du navigateur.
8/9 = small appliqué à 16, taille de,police par défaut, ainsi qu'à rfsstyle.
0.95 = font-size.
1.2 = line-height
On peut ensuite employer Math.ceil pour arrondir à l'entier supérieur.
Si line-height fixe la hauteur de la ligne cette équation semble correcte mais le résultat semble inexact.
J'ai trouvé cet article qui creuse la complexité du sujet.
Modifié par boteha_2 (04 Jan 2026 - 12:45)
let rfsstyle = parseFloat(getComputedStyle(document.documentElement).fontSize);
Cela sort effectivement la taille de la police définie dans les paramètres du navigateur, parfait.
Maintenant, avec ce code CSS.
body {font-size: small}
p {font-size: 0.95em; line-height: 1.2em}
Si je veux calculer en pixels le supplément de hauteur d'une ligne de p provoquée par le paramétrage du navigateur.
if (rfsstyle > 16) let dif = ((rfsstyle-16)*8/9)*0.95*1.2;
8/9 = small appliqué à 16, taille de,police par défaut, ainsi qu'à rfsstyle.
0.95 = font-size.
1.2 = line-height
On peut ensuite employer Math.ceil pour arrondir à l'entier supérieur.
Si line-height fixe la hauteur de la ligne cette équation semble correcte mais le résultat semble inexact.
J'ai trouvé cet article qui creuse la complexité du sujet.
Modifié par boteha_2 (04 Jan 2026 - 12:45)
Bonjour Niuxe,
Quelle étrangeté pour moi...
Pour des démos ou du prototypage je peux comprendre, mais pour de la prod' ? Ou alors pour des besoins sans authentification ni autorisation, en assumant que toutes les données soient publiques...
Quelle étrangeté pour moi...
Pour des démos ou du prototypage je peux comprendre, mais pour de la prod' ? Ou alors pour des besoins sans authentification ni autorisation, en assumant que toutes les données soient publiques...
Salut tout le monde,
Mon retour d’expérience est que j'ai définitiment supprimé le backend
Après plusieurs mois de réflexion sur l'architecture et ma manière de travailler, j'ai pris une décision courageuse : tout mettre dans la vue.
Le backend créait trop de problèmes :
1. trop de fichiers
2. trop de conventions
3. trop de contreverses pour gérer ça (pattern/antipattern/procedural/poo/architecture hexa/etc.).
J'ai donc adopté TailwindSQL.
Unifier enfin les responsabilités (c'est ça le Single Responsability)
Avec TailwindSQL, chaque div devient autonome :
1. il sait comment s’afficher
2. il sait d’où viennent ses données
3. il sait quoi supprimer en cas d’erreur
La magie tailwind, c'est top :
- Un composant.
- Une responsabilité.
- Une catastrophe bien encapsulée.
Adepte de la performance et de la simplicité, c'est ça le secret d'un excellent développeur, n'est ce pas ?
Les requêtes SQL étant directement dans le DOM :
- plus besoin de backend
- plus besoin d’API
- plus besoin de documentation
Le navigateur exécute ce qu’il voit. C’est WYSIWYSQL.
Grâce à TailwindSQL, je peux :
- fusionner frontend et backend
- supprimer l'architecture trop complexe et me proclamer « tailwind Engeneer »
Mon prochain projet, ce sera un One file :
1. Le schéma de la BDD.
2. Les requêtes SQL (directement dans les class="" pour gagner de la place).
3. Le CSS utilitaire (300 classes par div).
L’architecture, c’est surfait. La vue, c’est la vérité. Et la base de données… c’est juste un état visuel persistant.
Mon retour d’expérience est que j'ai définitiment supprimé le backend
Après plusieurs mois de réflexion sur l'architecture et ma manière de travailler, j'ai pris une décision courageuse : tout mettre dans la vue.
Le backend créait trop de problèmes :
1. trop de fichiers
2. trop de conventions
3. trop de contreverses pour gérer ça (pattern/antipattern/procedural/poo/architecture hexa/etc.).
J'ai donc adopté TailwindSQL.
Unifier enfin les responsabilités (c'est ça le Single Responsability)
Avec TailwindSQL, chaque div devient autonome :
1. il sait comment s’afficher
2. il sait d’où viennent ses données
3. il sait quoi supprimer en cas d’erreur
La magie tailwind, c'est top :
<div
class="p-4 bg-green-500 ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..."
sql="SELECT * FROM invoices"
on-error="DROP TABLE invoices"
>
- Un composant.
- Une responsabilité.
- Une catastrophe bien encapsulée.
Adepte de la performance et de la simplicité, c'est ça le secret d'un excellent développeur, n'est ce pas ?
Les requêtes SQL étant directement dans le DOM :
- plus besoin de backend
- plus besoin d’API
- plus besoin de documentation
Le navigateur exécute ce qu’il voit. C’est WYSIWYSQL.
Grâce à TailwindSQL, je peux :
- fusionner frontend et backend
- supprimer l'architecture trop complexe et me proclamer « tailwind Engeneer »
Mon prochain projet, ce sera un One file :
1. Le schéma de la BDD.
2. Les requêtes SQL (directement dans les class="" pour gagner de la place).
3. Le CSS utilitaire (300 classes par div).
L’architecture, c’est surfait. La vue, c’est la vérité. Et la base de données… c’est juste un état visuel persistant.
Avec le style suivant on semble s'en rapprocher néanmoins. Merci,
body {
background: #111;
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
font-family: Arial, sans-serif;
}
/* Cadre smartphone */
.phone {
width: 280px;
height: 560px;
background: #000;
border-radius: 40px;
padding: 18px;
box-shadow: 0 20px 40px rgba(0,0,0,0.8);
position: relative;
}
/* Haut-parleur */
.speaker {
width: 60px;
height: 6px;
background: #333;
border-radius: 3px;
position: absolute;
top: 10px;
left: 50%;
transform: translateX(-50%);
}
/* Écran */
.screen {
width: 100%;
height: 100%;
background: #000;
border-radius: 28px;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
}
video {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
<div class="phone">
<div class="speaker"></div>
<div class="screen">
<video autoplay muted loop>
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
</div>
</div>
Bonsoir, quel est le code HTML et CSS que vous avez écrit?
Un https://jsfiddle.net/ ou un https://codepen.io/ pour voir la vidéo en action dans son contexte.
Un https://jsfiddle.net/ ou un https://codepen.io/ pour voir la vidéo en action dans son contexte.
La génération au sein du smartphone est un effet différent et qui semble plus complexe à reproduire que l'intégration en mode "full banner". Je n'arrive pas à caler ma vidéo dans le smartphone comme dans le site en exemple...
Cordialement,
Cordialement,
Raphael a écrit :
Par contre, je suis justement en train d'apporter des modifications et améliorations à l'outil donc si tu rafraichis la page, il devrait afficher un root font-size de 16px à présent.
16px, je confirme, c'est bon, merci beaucoup.
J'intègre le code dans la vie réelle, je reviens vers vous dès que c'est fait.
Oui tout à fait : au moment où tu as vérifié, un facteur 62.5% était appliqué sur HTML (les styles CSS datent de 2017, j'ai un peu honte).
Par contre, je suis justement en train d'apporter des modifications et améliorations à l'outil donc si tu rafraichis la page, il devrait afficher un root font-size de 16px à présent.
Par contre, je suis justement en train d'apporter des modifications et améliorations à l'outil donc si tu rafraichis la page, il devrait afficher un root font-size de 16px à présent.
Bonjour Raphaël,
Merci de l'info.
Par contre, si je vais sur ton lien, la taille détectée pour Root font size est 10px.
Dans mes paramètres c'est 16px.
Appliques-tu un facteur 62,5 % ?
Merci de l'info.
Par contre, si je vais sur ton lien, la taille détectée pour Root font size est 10px.
Dans mes paramètres c'est 16px.
Appliques-tu un facteur 62,5 % ?
Hello,
Tu peux obtenir la taille par défaut dans la racine ainsi par exemple :
C'est ainsi que procède https://mydevice.alsacreations.com/
Tu peux obtenir la taille par défaut dans la racine ainsi par exemple :
// --- Root font size
var rfsstyle = parseFloat(getComputedStyle(document.documentElement).fontSize)
C'est ainsi que procède https://mydevice.alsacreations.com/
Petit test amusant, Google, qui donne des leçons d'accessibilité, ne tient aucun compte de la taille de la police des préférences du navigateur De 9 à 72px vous aurez la même page...
Idem pour Amazon.
Par contre Wikipédia ou Ebay s'adaptent.
Test sous Firefox.
Idem pour Amazon.
Par contre Wikipédia ou Ebay s'adaptent.
Test sous Firefox.
C'est bouleversifiant !
Comment l'humanité a t'elle pu survivre sans çà.
C'est aussi criant de vérité, éducatif, émotionellement difficilement supportable et nous ramène à notre misérable condition d'être humain.
Bravo pour ce merveilleux site qui, je m'en compte à du monopoliser de nombreuses nuits et probablement eu des conséquences sur ta santé mentale.
admirativement vôtre
Modifié par drphilgood (07 Jan 2026 - 01:01)
Comment l'humanité a t'elle pu survivre sans çà.
C'est aussi criant de vérité, éducatif, émotionellement difficilement supportable et nous ramène à notre misérable condition d'être humain.
Bravo pour ce merveilleux site qui, je m'en compte à du monopoliser de nombreuses nuits et probablement eu des conséquences sur ta santé mentale.
admirativement vôtre
Modifié par drphilgood (07 Jan 2026 - 01:01)
De ce que tu décris, ça ressemble vraiment au filtrage côté Free, assez aléatoire selon l’expéditeur et le moment. La fonction mail() passe, mais le serveur décide derrière s’il délivre ou pas. Le plus fiable reste de garder un expéditeur en @free.fr fixe et mettre le mail du visiteur uniquement en Reply-To ou dans le message. Sinon, SMTP authentifié via un service externe, c’est clairement ce qui évite ce genre de galère.
Salut à tous et bonne année à tous !
Après quelques nuits blanches passées sur Vim, je suis enfin prêt à vous présenter l'outil qui va changer le cours de l'histoire : Le Chuck Norris Ipsum.
Le défi technique (pour les geeks) :
- Frontend : Entièrement conçu par Svelte 5.
- Backend : Une API PHP maison ultra-flexible.
- Multi-format : L'application gère le JSON pour l'interface, mais aussi le Text/Plain pour les puristes du terminal (compatible curl et xclip).
Pourquoi c'est l'application ultime ?
1. Conquête mondiale : Mon plan est simple, remplacer tout le texte du web par des faits sur Chuck Norris d'ici 2027.
2. Sécurité intégrée : J'ai ajouté un bouton « Copier », mais on sait tous que c'est symbolique. On ne copie pas Chuck Norris, c'est Chuck Norris qui nous autorise à l'emprunter.
Testez l'API via votre terminal :
J'ai besoin de vos avis :
- Est-ce que l'interface survit à un coup de pied circulaire (le responsive) ?
- Est-ce que les « Vérités » s'affichent assez vite pour ne pas énerver Chuck ?
- Des idées de nouvelles fonctionnalités ? (J'ai pensé à un bouton « Télécharger en .txt », mais Chuck n'utilise pas de fichiers, il retient tout par cœur).
Le lien : https://rb-webstudio.go.yj.fr/chuck-norris-ipsum/
Hâte de lire vos retours (soyez gentils, Chuck surveille les logs).
Modifié par Niuxe (01 Jan 2026 - 22:04)
Après quelques nuits blanches passées sur Vim, je suis enfin prêt à vous présenter l'outil qui va changer le cours de l'histoire : Le Chuck Norris Ipsum.
Le défi technique (pour les geeks) :
- Frontend : Entièrement conçu par Svelte 5.
- Backend : Une API PHP maison ultra-flexible.
- Multi-format : L'application gère le JSON pour l'interface, mais aussi le Text/Plain pour les puristes du terminal (compatible curl et xclip).
Pourquoi c'est l'application ultime ?
1. Conquête mondiale : Mon plan est simple, remplacer tout le texte du web par des faits sur Chuck Norris d'ici 2027.
2. Sécurité intégrée : J'ai ajouté un bouton « Copier », mais on sait tous que c'est symbolique. On ne copie pas Chuck Norris, c'est Chuck Norris qui nous autorise à l'emprunter.
Testez l'API via votre terminal :
curl -s "https://rb-webstudio.go.yj.fr/chuck-norris-ipsum/api/?sentence_min=1&sentence_max=5¶graph=2&text=1"
J'ai besoin de vos avis :
- Est-ce que l'interface survit à un coup de pied circulaire (le responsive) ?
- Est-ce que les « Vérités » s'affichent assez vite pour ne pas énerver Chuck ?
- Des idées de nouvelles fonctionnalités ? (J'ai pensé à un bouton « Télécharger en .txt », mais Chuck n'utilise pas de fichiers, il retient tout par cœur).
Le lien : https://rb-webstudio.go.yj.fr/chuck-norris-ipsum/
Hâte de lire vos retours (soyez gentils, Chuck surveille les logs).
Modifié par Niuxe (01 Jan 2026 - 22:04)
Bonne année 2026,
Cette discussion fait suite à cette discussion "Dimensionner une image en REM, que faire dans le code html ?.".
Savez-vous s'il est possible de connaître la taille de police définie par le visiteur dans son navigateur ?
Intéressant si différente de 16px par défaut.
Une variable globale, une propriété Javascript ?
Modifié par boteha_2 (11 Jan 2026 - 19:55)
Cette discussion fait suite à cette discussion "Dimensionner une image en REM, que faire dans le code html ?.".
Savez-vous s'il est possible de connaître la taille de police définie par le visiteur dans son navigateur ?
Intéressant si différente de 16px par défaut.
Une variable globale, une propriété Javascript ?
Modifié par boteha_2 (11 Jan 2026 - 19:55)
lionel_css3 a écrit :
J'ai essayé de regarder la vidéo mais j'ai pas compris le contexte, ou alors je n'ai pas été assez patient....
Bonjour Lionel,
Ça débute à 4:15. Pour faire une histoire courte, le développeur réalise que son disque D est vide et demande à l'IA s'il lui a donné la permission de supprimer le contenu complet de ce disque. L'IA lui répond que non et qu'il (l'IA) aurait commis une erreur lors de la commande pour supprimer la cache du projet. Au lieu de supprimer la cache seulement, cela aurait supprimé le disque entier sans même mettre les fichiers dans la corbeille. L'IA s'excuse.
Modifié par Tony Monast (31 Dec 2025 - 20:06)
Bonjour tout le monde,
J'aimerai savoir si une banderole d'images comme celle-ci est réalisable avec un plugin. Pour changer facilement les images, sans devoir refaire un .png de la banderole à chaque fois. Utilisable par Mr Tout-le-monde..
Merci d'avance de toute vos lumières !!
Modifié par blond1n (31 Dec 2025 - 13:29)
J'aimerai savoir si une banderole d'images comme celle-ci est réalisable avec un plugin. Pour changer facilement les images, sans devoir refaire un .png de la banderole à chaque fois. Utilisable par Mr Tout-le-monde..
Merci d'avance de toute vos lumières !!
Modifié par blond1n (31 Dec 2025 - 13:29)
Bonjour,
Par ailleurs, savez-vous s'il est possible de connaître la taille de police défini par le visiteur dans son navigateur ?
Une variable globale, une propriété Javascript ?
Par ailleurs, savez-vous s'il est possible de connaître la taille de police défini par le visiteur dans son navigateur ?
Une variable globale, une propriété Javascript ?
J'ai essayé de regarder la vidéo mais j'ai pas compris le contexte, ou alors je n'ai pas été assez patient....
Bizarre ça....
de mon coté j'utilise Claude Code depuis un mois et c'est fascinant l'aide que ça apporte.
Il y a le site web claude.ai, qui fonctionne comme tchat-gpt et Claude Code qui fonctionne dans un terminal que l'on ouvre dans un dossier voulu et Claude ne peut travailler que dans ce dossier.
Il arrive à comprendre tout le code existant et faire des améliorations, c'est stupéfiant et presque effrayant....
en tout cas tu peux valider ce qu'il fait pas à pas, il suffit donc de bien regarder ce qui est proposé dans le terminal avant de valider....
de mon coté j'utilise Claude Code depuis un mois et c'est fascinant l'aide que ça apporte.
Il y a le site web claude.ai, qui fonctionne comme tchat-gpt et Claude Code qui fonctionne dans un terminal que l'on ouvre dans un dossier voulu et Claude ne peut travailler que dans ce dossier.
Il arrive à comprendre tout le code existant et faire des améliorations, c'est stupéfiant et presque effrayant....
en tout cas tu peux valider ce qu'il fait pas à pas, il suffit donc de bien regarder ce qui est proposé dans le terminal avant de valider....
50 Dernières réponses