Files
figureslibres.cc/user/themes/figureslibres-v2/templates/reader.html.twig
T
valentin_le_moignandClaude Opus 4.8 a9d8d4fd24 Grille projet : images en pleine largeur de colonne servies en HD
Dans la grille d'images de la fiche projet, la dernière image d'un
total impair s'étale sur toute la largeur de colonne (grid-column:
span 2) en tablette/desktop. Elle était chargée en SD 640px, donc
pixelisée. Ajout d'un srcset (@Nx) avec sizes adapté à la largeur
d'affichage réelle : 100vw pour l'image pleine largeur, sinon
(min-width: 576px) 50vw, 100vw.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-11 17:16:27 +02:00

62 lines
2.9 KiB
Twig

{% extends 'partials/base.html.twig' %}
{% block content %}
{% set class_suffix = page.parent.title|lower %}
<div id="reader" class="content" data-barba="container" data-barba-namespace="reader">
<div id="header-project">
<h2 class="info-project-{{ class_suffix }}">
<span data-text="{{ page.title }}">{{ page.title }}</span>
</h2>
</div>
<a href="{{ page.parent.parent.url }}"><div id="close-project" class="picto" data-src="{{ url('theme://images/pictos/cross.svg') }}" aria-hidden="true"></div></a>
{% set cover_video = page.media.videos|first.url %}
<figure id="cover-image-mobile" class="{{ class_suffix }}">
{% if cover_video != null %}
<video autoplay muted loop playsinline src="{{ cover_video }}" type="video/mp4"></video>
{% else %}
<img src="{{ url('theme://images/loader/rolling.svg') }}" data-src="{{ page.media.images|first.url }}" alt="{{ page.title }}" class="lazy loader">
{% endif %}
</figure>
<div id="info-project" class="info-project-{{ class_suffix }}">
<h2 id="main-project-title">{{ page.title }}</h2>
<div>
{% for tag in page.taxonomy.tag %}
{{ tag }},
{% endfor %}
{{ page.date|date("Y") }}
</div>
</div>
<figure id="cover-image" class="{{ class_suffix }}">
{% if cover_video != null %}
<video autoplay muted loop playsinline src="{{ cover_video }}" type="video/mp4"></video>
{% else %}
<img src="{{ url('theme://images/loader/rolling.svg') }}" data-src="{{ page.media.images|first.url }}" alt="{{ page.title }}" class="lazy loader">
{% endif %}
</figure>
<hr>
<div id="project-description">
{{ page.content|raw }}
</div>
<div id="project-images-grid">
{# images affichées dans la grille : toutes, ou toutes sauf la 1re (en-tête) s'il n'y a pas de vidéo #}
{% set grid_images = cover_video != null ? page.media.images : page.media.images|slice(1) %}
{% set grid_count = grid_images|length %}
{% for image in grid_images %}
{# dernière image d'un total impair : elle s'étale sur toute la largeur de colonne (grid-column: span 2) → sizes 100vw #}
{% set full_width = loop.last and grid_count is odd %}
<figure class="{{ class_suffix }}">
<img src="{{ url('theme://images/loader/rolling.svg') }}" data-src="{{ image.url }}"{% if image.srcset %} data-srcset="{{ image.srcset }}" data-sizes="{{ full_width ? '100vw' : '(min-width: 576px) 50vw, 100vw' }}"{% endif %} alt="{{ page.title }}" class="lazy loader project-image">
</figure>
{% endfor %}
</div>
{% block related_pages %}
{% include 'partials/relatedpages.html.twig' %}
{% endblock %}
{% block carousel %}
{% include 'partials/carousel.html.twig' %}
{% endblock %}
</div>
{% endblock %}