A place to cache linked articles (think custom and personal wayback machine)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 24KB

3 jaren geleden
3 jaren geleden
3 jaren geleden
3 jaren geleden
3 jaren geleden
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. <!doctype html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the <title>
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>Ils construisaient leurs maisons tous ensemble puis les tiraient au sort : l’histoire des Castors (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script>
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://www.18h39.fr/articles/ils-construisaient-leurs-maisons-tous-ensemble-puis-les-tiraient-au-sort-lhistoire-des-castors.html">
  55. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>Ils construisaient leurs maisons tous ensemble puis les tiraient au sort : l’histoire des Castors</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  63. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  64. </svg> Accueil</a> •
  65. <a href="https://www.18h39.fr/articles/ils-construisaient-leurs-maisons-tous-ensemble-puis-les-tiraient-au-sort-lhistoire-des-castors.html" title="Lien vers le contenu original">Source originale</a>
  66. </p>
  67. </nav>
  68. <hr>
  69. <p class="chapeau"><strong>TÉMOIGNAGES -</strong> Après la seconde guerre mondiale, le manque de logements était criant. Des particuliers se sont alors regroupés pour construire ensemble leurs maisons. Voici ce qu'il reste de leur travail.</p>
  70. <p>Construire soi-même sa maison, quand on n'est pas du métier, cela peut sembler mission impossible. Et pourtant, c'est ce qu'ont fait des milliers de Français dans les années 1950, avec le Mouvement des Castors. Des agriculteurs, des cheminots, des ouvriers… sont devenus des autoconstructeurs. </p>
  71. <p>Ils sont même allés encore plus loin : plutôt que se concentrer sur leur maison individuelle, ils se sont regroupés pour construire ensemble des quartiers entiers. <em>“Les gens qui travaillaient sur les maisons ne savaient pas si c'était la leur ou celle du voisin, une fois qu'elles étaient terminées, elles étaient tirées au sort”, </em>explique Eric Tortereau, co-président de <a href="https://les-castors.fr/">l'association des autoconstructeurs Castors Rhône-Alpes</a>. </p>
  72. <p>Cet élan de solidarité est apparu dans un contexte bien particulier. <em>“Quand on en parlait avec nos parents, ils nous disaient que ce n'était pas si extraordinaire que ça, que c'était l'après-guerre et ainsi de suite,</em> raconte Francis Fondeville, 70 ans, lui aussi fils de Castor, aujourd'hui secrétaire d'un <a rel="noreferrer noopener" aria-label=" (s'ouvre dans un nouvel onglet)" href="https://www.cites-castors.com/" target="_blank">fonds d'archives sur le mouvement</a>. <em>C'est surtout notre génération à nous qui met en avant cet héritage.”</em> </p>
  73. <figure class="wp-block-image"><noscript><img src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton.jpg" alt="" class="wp-image-118136" srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-420x246.jpg 420w" sizes="(max-width: 874px) 100vw, 874px"></noscript><img src="" data-src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton.jpg" alt="" class="lazyload wp-image-118136" data-srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-pessac-beton-420x246.jpg 420w" data-sizes="(max-width: 874px) 100vw, 874px"><figcaption>© Association culturelle des Castors de Pessac</figcaption></figure>
  74. <p>Alors, à quoi a ressemblé cette aventure, peu connue du grand public et relativement peu étudiée par les historiens ? Et surtout, qu'en reste-t-il aujourd'hui, alors que la plupart des premiers témoins ont disparu ? </p>
  75. <h2>Des pavillons tout confort</h2>
  76. <p>Lors de la seconde guerre mondiale, 452 000 immeubles ont été totalement détruits, 1 436 000 ont été endommagés, soit le cinquième du patrimoine existant rappelle Michel Messu, dans son livre <em>L'Esprit Castor</em> (Presses Universitaires de Rennes, 2007). <em>“C'était d'un véritable “plan d'urgence” dont avait besoin la nation. Il se fera attendre”</em>, écrit le sociologue. Alors que l'Etat tardait à reconstruire, les Castors ont apporté leur propre réponse à cette crise du logement, en appliquant partout un même adage : <em>“l'union fait la force”</em>. </p>
  77. <p>Cette vidéo retrace les grandes lignes de cette histoire :</p>
  78. <p><iframe src="https://www.youtube.com/embed/-i3Xu-M3Cps" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="">VIDEO</iframe><p></p><p>Si en 1950 est fondée l'Union Nationale des Castors, chaque expérience a été différente et chaque association locale a sa propre légende. À Pessac, en Gironde, l'impulsion a été donnée par un prêtre ouvrier, Etienne Damoran, militant syndicaliste et catholique. 150 couples se sont regroupés autour de lui pour <em>“construire la cité de leurs rêves” </em>et devenir propriétaires, raconte aujourd'hui Martine Bourgelas, 72 ans, présidente du Fonds Roger Blanc et de l'association culturelle des Castors de Pessac. En 1950, elle a donc emménagé avec ses parents dans la toute première Cité Castor. </p><p><em>“C'étaient de petites maisons de 100 m2, avec une chaudière à charbon et le chauffage central, une salle de douche, un bac à laver pour le linge, des wc à l'intérieur, le tout-à-l'égout, une cuisine avec évier, de grandes fenêtres, la possibilité d'aménager une troisième chambre, un jardin avec des arbres fruitiers”</em>, énumère-t-elle. </p><figure class="wp-block-image"><noscript><img src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac.jpg" alt="Chantier de la cité des Castors de Pessac archive 1950" class="wp-image-118130" srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-420x246.jpg 420w" sizes="(max-width: 874px) 100vw, 874px"></noscript><img src="" data-src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac.jpg" alt="Chantier de la cité des Castors de Pessac archive 1950" class="lazyload wp-image-118130" data-srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castors-de-pessac-420x246.jpg 420w" data-sizes="(max-width: 874px) 100vw, 874px"><figcaption>Pendant le chantier, en 1950. © Association culturelle des Castors de Pessac</figcaption></figure><p>Un petit paradis, pour l'enfant qu'elle était alors : <em>“Comme les familles étaient assez nombreuses, ça grouillait d'enfants. Ils étaient surveillés par tous les voisins. On était entourés de forêts, c'était la liberté totale.”</em></p><h2>Des heures de travail en commun</h2><p>Comment ce niveau de confort, bien supérieur aux standards de l'époque, a-t-il été possible ? Les autoconstructeurs avaient tous un métier par ailleurs, ils étaient intégrés socialement. Mais ils n'avaient pas les moyens de financer les matériaux et les terrains eux-mêmes. </p><p><em>“Imaginez des jeunes de 25 ans qui vont voir un banquier pour obtenir un prêt pour 150 maisons, imaginez la tête du banquier ! Leur idée a été de garantir le prêt par le travail collectif, ça a servi d'apport personnel”</em>, explique Francis Fondeville. </p><p>Chaque Castor s'engageait à être présent un certain nombre d'heures sur le chantier, le soir, les week-ends et pendant ses congés. C'est le concept d'apport-travail, reconnu et soutenu par une décision interministérielle. Ce travail était ensuite comptabilisé, semaine après semaine, par un responsable de l'association. Si le quota d'heures n'était pas respecté, les Castors prenaient le risque d'être exclus et de ne pas avoir le droit à une maison.</p><p>Si des artisans professionnels pouvaient intervenir ponctuellement, la tâche restait considérable. <em>“Quelqu'un qui travaillait 50 heures par semaine pouvait donner 10 heures de travail en plus sur le chantier. Beaucoup de gens qui se sont lancés ont abandonné. Ça a été le cas de mon beau-père. Construire sa maison en plus de son travail, ça a été trop dur”</em>, complète Eric Tortereau. </p><h2>La solidarité à l'échelle du quartier</h2><p>La solidarité la plus visible, et la plus mise en avant, est donc celle de ces pères de famille à l'œuvre sur les chantiers. Mais en parallèle, leurs épouses assument la logistique du quotidien, s'occupent des enfants pendant leur absence. Elles <em>“jettent les bases de la vie sociale future de la cité”</em>, comme l'écrit Michel Messu, que ce soit en organisant les repas communs du week-end sur les chantiers, ou en partageant avec les voisins les premiers éléments de confort, machines à laver et téléphone, une fois les maisons construites. </p><figure class="wp-block-image"><noscript><img src="https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac.jpg" alt="" class="wp-image-118137" srcset="https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-420x246.jpg 420w" sizes="(max-width: 874px) 100vw, 874px"></noscript><img src="" data-src="https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac.jpg" alt="" class="lazyload wp-image-118137" data-srcset="https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/trio-castors-pessac-420x246.jpg 420w" data-sizes="(max-width: 874px) 100vw, 874px"><figcaption>© Association culturelle des Castors de Pessac</figcaption></figure><p>Pour Martine Bourgelas et Francis Fondeville, qui ont tous les deux grandi à Pessac, cette solidarité était bien vivante et ne relève pas de la légende dorée. <em>“Il y avait une vie communautaire assez importante pendant quelques années, avec une coopérative alimentaire tenue par les Castors. Les femmes se sont occupées avec la CAF de mettre en place des cours de gym, des leçons de piano, des consultations pour les nourrissons”, </em>raconte Martine Bourgelas. </p><p>Tous deux sont revenus vivre dans le quartier il y a quelques années, dans les maisons construites par leurs parents. Une quinzaine de maisons sont encore habitées par les épouses des Castors. Une trentaine d'habitants sont aussi des enfants, petits-enfants ou neveux des Castors. Le reste des maisons a été racheté par des personnes extérieures, mais l'association s'efforce de faire vivre cette histoire dont il reste encore quelques traces. Ainsi, le château d'eau est géré par une équipe de bénévoles, et chaque habitant doit adhérer au syndicat qui gère la distribution d'eau et les espaces verts.</p><figure class="wp-block-image"><noscript><img src="https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac.jpg" alt="" class="wp-image-118138" srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-420x246.jpg 420w" sizes="(max-width: 874px) 100vw, 874px"></noscript><img src="" data-src="https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac.jpg" alt="" class="lazyload wp-image-118138" data-srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chateau-eau-pessac-420x246.jpg 420w" data-sizes="(max-width: 874px) 100vw, 874px"><figcaption>Le château d'eau toujours en activité. © Association culturelle des Castors de Pessac</figcaption></figure><h2>Faire vivre l'esprit castor</h2><p>Le Mouvement Castor, lui, a commencé à décliner à partir de 1955, avec la nouvelle politique d'urbanisation, le début de la construction de grands ensembles et l'abrogation du principe de l'apport-travail. Mais le mouvement n'a pas non plus totalement disparu. </p><p>L'<a href="https://www.18h39.fr/articles/tag/habitat-participatif">habitat participatif</a>, qui consiste pour plusieurs particuliers à se regrouper et à faire construire leur immeuble selon leurs plans, en prévoyant des espaces communs, en est la meilleure expression.</p><figure class="wp-block-image"><noscript><img src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019.jpg" alt="" class="wp-image-118133" srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-420x246.jpg 420w" sizes="(max-width: 874px) 100vw, 874px"></noscript><img src="" data-src="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019.jpg" alt="" class="lazyload wp-image-118133" data-srcset="https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019.jpg 874w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-300x175.jpg 300w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-800x468.jpg 800w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-640x374.jpg 640w, https://www.18h39.fr/wp-content/uploads/2020/01/chantier-castor-2019-420x246.jpg 420w" data-sizes="(max-width: 874px) 100vw, 874px"><figcaption>L'entraide sur un chantier participatif en 2019. © Association des autoconstructeurs Castors Rhône-Alpes</figcaption></figure><p>Des associations locales encouragent également toujours l'autoconstruction sous l'appellation Castor, à l'image de celle dont fait partie Eric Torterau en Rhônes-Alpes. <em>“On s'est efforcés de garder l'esprit d'entraide”</em>, explique-t-il, listant les différents services apportés bénévolement : conseils aux particuliers qui veulent rénover ou construire leur maison eux-mêmes, entretien d'un réseau de fournisseurs et de professionnels, organisation de chantiers participatifs, groupement d'achat de matériaux pour obtenir des réductions… </p><p>Avec également une dimension nouvelle : l'écologie. Après tout, les maisons des premiers Castors étaient déjà très innovantes pour leur temps. Il est donc dans la logique des choses que les nouveaux autoconstructeurs continuent de montrer la voie.</p></p>
  79. </article>
  80. <hr>
  81. <footer>
  82. <p>
  83. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  84. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  85. </svg> Accueil</a> •
  86. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  87. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  88. </svg> RSS</a> •
  89. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  90. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  91. </svg> Pro</a> •
  92. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  93. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  94. </svg> Email</a> •
  95. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  96. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  97. </svg> Légal</abbr>
  98. </p>
  99. <template id="theme-selector">
  100. <form>
  101. <fieldset>
  102. <legend><svg class="icon icon-brightness-contrast">
  103. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  104. </svg> Thème</legend>
  105. <label>
  106. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  107. </label>
  108. <label>
  109. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  110. </label>
  111. <label>
  112. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  113. </label>
  114. </fieldset>
  115. </form>
  116. </template>
  117. </footer>
  118. <script>
  119. function loadThemeForm(templateName) {
  120. const themeSelectorTemplate = document.querySelector(templateName)
  121. const form = themeSelectorTemplate.content.firstElementChild
  122. themeSelectorTemplate.replaceWith(form)
  123. form.addEventListener('change', (e) => {
  124. const chosenColorScheme = e.target.value
  125. localStorage.setItem('theme', chosenColorScheme)
  126. toggleTheme(chosenColorScheme)
  127. })
  128. const selectedTheme = localStorage.getItem('theme')
  129. if (selectedTheme && selectedTheme !== 'undefined') {
  130. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  131. }
  132. }
  133. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  134. window.addEventListener('load', () => {
  135. let hasDarkRules = false
  136. for (const styleSheet of Array.from(document.styleSheets)) {
  137. let mediaRules = []
  138. for (const cssRule of styleSheet.cssRules) {
  139. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  140. continue
  141. }
  142. // WARNING: Safari does not have/supports `conditionText`.
  143. if (cssRule.conditionText) {
  144. if (cssRule.conditionText !== prefersColorSchemeDark) {
  145. continue
  146. }
  147. } else {
  148. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  149. continue
  150. }
  151. }
  152. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  153. }
  154. // WARNING: do not try to insert a Rule to a styleSheet you are
  155. // currently iterating on, otherwise the browser will be stuck
  156. // in a infinite loop…
  157. for (const mediaRule of mediaRules) {
  158. styleSheet.insertRule(mediaRule.cssText)
  159. hasDarkRules = true
  160. }
  161. }
  162. if (hasDarkRules) {
  163. loadThemeForm('#theme-selector')
  164. }
  165. })
  166. </script>
  167. </body>
  168. </html>