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>
62 lines
2.9 KiB
Twig
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 %}
|