grid images

This commit is contained in:
2026-04-09 12:12:31 +02:00
parent b6458c4e05
commit da6fb958d2
5 changed files with 1013 additions and 3 deletions
+388 -1
View File
@@ -264,6 +264,7 @@ svg.ext {
margin: auto;
}
}
/*global*/
/* -------------------------
Paged.js : format + compteur
-------------------------- */
@@ -378,10 +379,396 @@ svg.ext {
display: block;
}
}
.path-projets-complets .layout-container header {
top: inherit !important;
left: inherit !important;
}
.path-projets-complets .layout-content {
width: 60vw;
margin: auto;
}
.path-projets-complets span {
display: none;
}
.path-projets-complets .node-type-projet {
border-bottom: 1px solid black;
padding-bottom: 5rem;
margin-bottom: 5rem;
}
.path-projets-complets .projet-content {
display: flex;
flex-direction: column;
}
.path-projets-complets .field--name-field-photo .field__label {
display: none;
}
.path-projets-complets .field--name-field-photo .field__items {
height: 100%;
display: grid;
gap: 3px;
}
.path-projets-complets .field--name-field-photo .field__item {
overflow: hidden;
aspect-ratio: 3/2;
}
.path-projets-complets .field--name-field-photo .field__item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.path-projets-complets .field--name-field-photo .image-field-caption {
display: none;
}
.path-projets-complets .field--name-field-photo .field__items:has(.field__item:only-child) {
grid-template-columns: 1fr;
}
.path-projets-complets .field--name-field-photo .field__items:has(.field__item:only-child) .field__item {
grid-column: 1;
}
.path-projets-complets .field--name-field-photo .field__items:has(.field__item:nth-child(2)) {
grid-template-columns: repeat(3, 1fr);
}
.path-projets-complets .field--name-field-photo .field__items:has(.field__item:nth-child(2)) .field__item:first-child {
grid-column: 1/4;
}
.path-projets-complets .field--name-field-photo .field__items .field__item:nth-child(n+8) {
display: none;
}
.path-projets-complets .field--name-title {
order: 2;
font-family: "Marianne";
font-size: 2rem;
font-weight: 800;
color: rgb(0, 158, 227);
}
@media (max-width: 1624px) {
.path-projets-complets .field--name-title {
font-size: 2.3rem;
}
}
@media (max-width: 1384px) {
.path-projets-complets .field--name-title {
font-size: 2rem;
}
}
@media (max-width: 1216px) {
.path-projets-complets .field--name-title {
font-size: 2rem;
}
}
@media (max-width: 810px) {
.path-projets-complets .field--name-title {
font-size: 1.7rem;
}
}
.path-projets-complets .field--name-title a {
color: rgb(0, 158, 227);
}
.path-projets-complets .field--name-field-equipe {
order: 3;
color: rgb(9, 57, 139);
font-size: 1.5rem;
font-weight: 900;
text-transform: uppercase;
}
@media (max-width: 1624px) {
.path-projets-complets .field--name-field-equipe {
font-size: 1.3rem;
}
}
@media (max-width: 1216px) {
.path-projets-complets .field--name-field-equipe {
font-size: 1.1rem;
}
}
@media (max-width: 810px) {
.path-projets-complets .field--name-field-equipe {
font-size: 1rem;
}
}
.path-projets-complets .field--name-field-equipe .field__label {
display: none;
}
.path-projets-complets .field--name-field-incube {
order: 4;
width: fit-content;
background-color: rgb(225, 0, 15);
color: white;
font-weight: 800;
padding-right: 0.3rem;
padding-left: 0.2rem;
flex-direction: row;
}
.path-projets-complets .field--name-field-incube::before {
content: " Projet ";
padding-right: 0.5rem;
}
.path-projets-complets .field--name-field-incube .field__item {
display: none;
}
.path-projets-complets .field--name-field-neuf-rehabilitation,
.path-projets-complets .field--name-field-encours-fini {
display: none;
}
.path-projets-complets .field--name-field-region {
order: 5;
width: 30%;
position: relative;
height: 80px;
text-align: center;
padding-right: 1rem;
}
@media (max-width: 479px) {
.path-projets-complets .field--name-field-region {
width: 100%;
}
}
.path-projets-complets .field--name-field-region .field__label {
display: none;
}
.path-projets-complets .field--name-field-region::before {
content: url("../images/pictos/picto_lieu.svg");
min-width: 30px;
height: auto;
padding-right: 1rem;
position: absolute;
left: 0;
margin-top: 0.83em;
margin-left: 1rem;
}
.path-projets-complets .field--name-field-type-de-moa {
order: 6;
}
.path-projets-complets .field--name-field-type-de-projet {
order: 7;
}
.path-projets-complets .field--name-field-etape-du-projet {
order: 8;
}
.path-projets-complets .field--name-field-textes {
order: 9;
}
.path-projets-complets .field--name-field-textes .field__label {
display: none;
}
.path-projets-complets .field--name-field-textes .field--name-field-titre {
color: rgb(9, 57, 139);
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
flex-direction: row;
}
.path-projets-complets .field--name-field-textes .field--name-field-titre::after {
content: " :";
padding-left: 0.5rem;
}
.path-projets-complets .field--name-field-etape-du-projet a,
.path-projets-complets .field--name-field-type-de-projet a,
.path-projets-complets .field--name-field-type-de-moa a {
color: black;
}
.path-projets-complets .field--name-field-etape-du-projet .field__label,
.path-projets-complets .field--name-field-type-de-projet .field__label,
.path-projets-complets .field--name-field-type-de-moa .field__label {
color: rgb(9, 57, 139);
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
flex-direction: row;
}
.path-projets-complets .field--name-field-etape-du-projet .field__label::after,
.path-projets-complets .field--name-field-type-de-projet .field__label::after,
.path-projets-complets .field--name-field-type-de-moa .field__label::after {
content: ":";
padding-left: 0.5rem;
}
@media print {
.path-projets-complets .views-row {
display: block !important;
margin: 0 !important;
overflow: visible !important;
float: none !important;
position: static !important;
}
.path-projets-complets .node-type-projet {
break-before: page;
page-break-before: always;
border: 1px solid black;
margin: 0 !important;
overflow: visible !important;
}
.path-projets-complets .views-row:first-child .node-type-projet {
break-before: auto;
page-break-before: auto;
}
.path-projets-complets .projet-content {
display: block !important;
}
.path-projets-complets .projet-header-print {
display: block;
break-inside: avoid;
page-break-inside: avoid;
overflow: visible !important;
}
.path-projets-complets .projet-body-print {
display: block;
break-before: page;
page-break-before: always;
overflow: visible !important;
}
.path-projets-complets .projet-header-print .field,
.path-projets-complets .projet-header-print .field__items,
.path-projets-complets .projet-header-print .field__item,
.path-projets-complets .projet-header-print h2,
.path-projets-complets .projet-header-print p,
.path-projets-complets .projet-header-print blockquote {
break-inside: avoid;
page-break-inside: avoid;
}
.path-projets-complets .projet-body-print .field,
.path-projets-complets .projet-body-print .field__items,
.path-projets-complets .projet-body-print .field__item,
.path-projets-complets .projet-body-print .paragraph,
.path-projets-complets .projet-body-print p,
.path-projets-complets .projet-body-print ul,
.path-projets-complets .projet-body-print li {
break-inside: auto;
page-break-inside: auto;
overflow: visible !important;
}
.path-projets-complets .projet-header-print .field--name-field-photo {
margin-bottom: 1.5rem;
}
.path-projets-complets .projet-header-print .field--name-field-photo .field__label {
display: none;
}
.path-projets-complets .projet-header-print .field--name-field-photo .field__items {
display: grid !important;
grid-template-columns: repeat(3, 1fr);
gap: 3px;
}
.path-projets-complets .projet-header-print .field--name-field-photo .field__item:first-child {
grid-column: 1/4;
grid-row: 1;
}
.path-projets-complets .projet-header-print .field--name-field-photo .field__item {
overflow: hidden;
}
.path-projets-complets .projet-header-print .field--name-field-photo .field__item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.path-projets-complets .projet-header-print .field--name-title {
font-family: "Marianne";
font-size: 1.5rem;
font-weight: 800;
color: rgb(0, 158, 227);
margin-bottom: 1rem;
}
.path-projets-complets .projet-header-print .field--name-title a {
color: rgb(0, 158, 227);
text-decoration: none;
}
.path-projets-complets .projet-header-print .field--name-field-equipe {
color: rgb(9, 57, 139);
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0.5rem;
}
.path-projets-complets .projet-header-print .field--name-field-equipe .field__label {
display: none;
}
.path-projets-complets .projet-header-print .field--name-field-incube {
width: fit-content;
background-color: rgb(225, 0, 15);
color: white;
font-weight: 800;
padding-right: 0.3rem;
padding-left: 0.2rem;
display: flex;
flex-direction: row;
}
.path-projets-complets .projet-header-print .field--name-field-incube::before {
content: " Projet ";
padding-right: 0.5rem;
}
.path-projets-complets .projet-header-print .field--name-field-incube .field__item {
display: none;
}
.path-projets-complets .projet-body-print .field--name-field-region {
width: 30%;
position: relative;
height: 80px;
text-align: center;
padding-right: 1rem;
}
.path-projets-complets .projet-body-print .field--name-field-region .field__label {
display: none;
}
.path-projets-complets .projet-body-print .field--name-field-region::before {
content: url("../images/pictos/picto_lieu.svg");
min-width: 30px;
height: auto;
padding-right: 1rem;
position: absolute;
left: 0;
margin-top: 0.83em;
margin-left: 1rem;
}
.path-projets-complets .projet-body-print .field--name-field-textes .field__label {
display: none;
}
.path-projets-complets .projet-body-print .field--name-field-textes .field--name-field-titre {
color: rgb(9, 57, 139);
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
}
.path-projets-complets .projet-body-print .field--name-field-textes .field--name-field-titre::after {
content: " :";
padding-left: 0.5rem;
}
.path-projets-complets .projet-body-print .field--name-field-type-de-moa a,
.path-projets-complets .projet-body-print .field--name-field-type-de-projet a,
.path-projets-complets .projet-body-print .field--name-field-etape-du-projet a {
color: black;
text-decoration: none;
}
.path-projets-complets .projet-body-print .field--name-field-type-de-moa .field__label,
.path-projets-complets .projet-body-print .field--name-field-type-de-projet .field__label,
.path-projets-complets .projet-body-print .field--name-field-etape-du-projet .field__label {
color: rgb(9, 57, 139);
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
}
.path-projets-complets .projet-body-print .field--name-field-type-de-moa .field__label::after,
.path-projets-complets .projet-body-print .field--name-field-type-de-projet .field__label::after,
.path-projets-complets .projet-body-print .field--name-field-etape-du-projet .field__label::after {
content: ":";
padding-left: 0.5rem;
}
.path-projets-complets .field--name-field-neuf-rehabilitation,
.path-projets-complets .field--name-field-encours-fini,
.path-projets-complets svg.ext {
display: none !important;
}
}
/*pages*/
/*
@import "pages/partials/header_footer";
@import "pages/home";*/
@import "pages/home";
*/
.path-node.page-node-type-static .layout-container {
overflow: unset;
}
@@ -0,0 +1,281 @@
.path-projets-complets {
.layout-container header{
top: inherit !important;
left: inherit !important;
}
.layout-content{
width: 60vw;
margin: auto;
}
// =========================
// ÉCRAN
// =========================
span {
display: none;
}
.node-type-projet {
border-bottom: 1px solid black;
padding-bottom: 5rem;
margin-bottom: 5rem;
}
.projet-content {
display: flex;
flex-direction: column;
}
.field--name-field-photo {
// height: 66vh;
.field__label {
display: none;
}
.field__items {
height: 100%;
display: grid;
gap: 3px;
}
.field__item {
overflow: hidden;
aspect-ratio: 3 / 2;
}
.field__item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.image-field-caption {
display: none;
}
// 1 seule image
.field__items:has(.field__item:only-child) {
grid-template-columns: 1fr;
// grid-template-rows: 1fr;
}
.field__items:has(.field__item:only-child) .field__item {
grid-column: 1;
// grid-row: 1;
}
// Plusieurs images
.field__items:has(.field__item:nth-child(2)) {
grid-template-columns: repeat(3, 1fr);
// grid-template-rows: 4fr 2fr 2fr;
}
.field__items:has(.field__item:nth-child(2)) .field__item:first-child {
grid-column: 1 / 4;
// grid-row: 1;
}
// facultatif : max 7 images affichées
.field__items .field__item:nth-child(n + 8) {
display: none;
}
}
// .field--name-field-photo {
// order: 1;
// .field__label {
// display: none;
// }
// .field__items {
// display: grid;
// grid-template-columns: repeat(3, 1fr);
// grid-template-rows: 500px 150px 150px;
// gap: 3px;
// }
// .field__item:first-child {
// grid-column: 1 / 4;
// grid-row: 1;
// img {
// max-height: 500px;
// }
// }
// .field__item {
// overflow: hidden;
// }
// .field__item img {
// width: 100%;
// height: 100%;
// object-fit: cover;
// display: block;
// }
// }
.field--name-title {
order: 2;
font-family: "Marianne";
font-size: 2rem;
font-weight: 800;
color: $blue-light;
@media (max-width: 1624px) {
font-size: 2.3rem;
}
@media (max-width: 1384px) {
font-size: 2rem;
}
@media (max-width: 1216px) {
font-size: 2rem;
}
@media (max-width: 810px) {
font-size: 1.7rem;
}
a {
color: $blue-light;
}
}
.field--name-field-equipe {
order: 3;
color: $blue-dark;
font-size: 1.5rem;
font-weight: 900;
text-transform: uppercase;
@media (max-width: 1624px) {
font-size: 1.3rem;
}
@media (max-width: 1216px) {
font-size: 1.1rem;
}
@media (max-width: 810px) {
font-size: 1rem;
}
.field__label {
display: none;
}
}
.field--name-field-incube {
order: 4;
width: fit-content;
background-color: $red;
color: white;
font-weight: 800;
padding-right: 0.3rem;
padding-left: 0.2rem;
flex-direction: row;
&::before {
content: ' Projet ';
padding-right: 0.5rem;
}
.field__item {
display: none;
}
}
.field--name-field-neuf-rehabilitation,
.field--name-field-encours-fini {
display: none;
}
.field--name-field-region {
order: 5;
width: 30%;
position: relative;
height: 80px;
text-align: center;
padding-right: 1rem;
@media (max-width: 479px) {
width: 100%;
}
.field__label {
display: none;
}
&::before {
content: url("../images/pictos/picto_lieu.svg");
min-width: 30px;
height: auto;
padding-right: 1rem;
position: absolute;
left: 0;
margin-top: .83em;
margin-left: 1rem;
}
}
.field--name-field-type-de-moa {
order: 6;
}
.field--name-field-type-de-projet {
order: 7;
}
.field--name-field-etape-du-projet {
order: 8;
}
.field--name-field-textes {
order: 9;
.field__label {
display: none;
}
.field--name-field-titre {
color: $blue-dark;
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
flex-direction: row;
&::after {
content: ' :';
padding-left: 0.5rem;
}
}
}
.field--name-field-etape-du-projet,
.field--name-field-type-de-projet,
.field--name-field-type-de-moa {
a {
color: black;
}
.field__label {
color: $blue-dark;
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
flex-direction: row;
&::after {
content: ':';
padding-left: 0.5rem;
}
}
}
}
@@ -0,0 +1,216 @@
// =========================
// PRINT
// =========================
.path-projets-complets {
@media print {
.views-row {
display: block !important;
margin: 0 !important;
overflow: visible !important;
float: none !important;
position: static !important;
}
.node-type-projet {
break-before: page;
page-break-before: always;
border: 1px solid black;
margin: 0 !important;
overflow: visible !important;
}
.views-row:first-child .node-type-projet {
break-before: auto;
page-break-before: auto;
}
.projet-content {
display: block !important;
}
.projet-header-print {
display: block;
break-inside: avoid;
page-break-inside: avoid;
overflow: visible !important;
}
.projet-body-print {
display: block;
break-before: page;
page-break-before: always;
overflow: visible !important;
}
.projet-header-print .field,
.projet-header-print .field__items,
.projet-header-print .field__item,
.projet-header-print h2,
.projet-header-print p,
.projet-header-print blockquote {
break-inside: avoid;
page-break-inside: avoid;
}
.projet-body-print .field,
.projet-body-print .field__items,
.projet-body-print .field__item,
.projet-body-print .paragraph,
.projet-body-print p,
.projet-body-print ul,
.projet-body-print li {
break-inside: auto;
page-break-inside: auto;
overflow: visible !important;
}
.projet-header-print .field--name-field-photo {
margin-bottom: 1.5rem;
.field__label {
display: none;
}
.field__items {
display: grid !important;
grid-template-columns: repeat(3, 1fr);
// grid-template-rows: 500px 150px 150px;
gap: 3px;
}
.field__item:first-child {
grid-column: 1 / 4;
grid-row: 1;
}
.field__item {
overflow: hidden;
}
.field__item img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
}
.projet-header-print .field--name-title {
font-family: "Marianne";
font-size: 1.5rem;
font-weight: 800;
color: $blue-light;
margin-bottom: 1rem;
a {
color: $blue-light;
text-decoration: none;
}
}
.projet-header-print .field--name-field-equipe {
color: $blue-dark;
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: .5rem;
.field__label {
display: none;
}
}
.projet-header-print .field--name-field-incube {
width: fit-content;
background-color: $red;
color: white;
font-weight: 800;
padding-right: 0.3rem;
padding-left: 0.2rem;
display: flex;
flex-direction: row;
&::before {
content: ' Projet ';
padding-right: 0.5rem;
}
.field__item {
display: none;
}
}
.projet-body-print .field--name-field-region {
width: 30%;
position: relative;
height: 80px;
text-align: center;
padding-right: 1rem;
.field__label {
display: none;
}
&::before {
content: url("../images/pictos/picto_lieu.svg");
min-width: 30px;
height: auto;
padding-right: 1rem;
position: absolute;
left: 0;
margin-top: .83em;
margin-left: 1rem;
}
}
.projet-body-print .field--name-field-textes {
.field__label {
display: none;
}
.field--name-field-titre {
color: $blue-dark;
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
&::after {
content: ' :';
padding-left: 0.5rem;
}
}
}
.projet-body-print .field--name-field-type-de-moa,
.projet-body-print .field--name-field-type-de-projet,
.projet-body-print .field--name-field-etape-du-projet {
a {
color: black;
text-decoration: none;
}
.field__label {
color: $blue-dark;
font-size: 1.2rem;
font-weight: 900;
text-transform: uppercase;
margin-bottom: 0 !important;
&::after {
content: ':';
padding-left: 0.5rem;
}
}
}
.field--name-field-neuf-rehabilitation,
.field--name-field-encours-fini,
svg.ext {
display: none !important;
}
}
}
+7 -2
View File
@@ -17,14 +17,19 @@
// @import "global/_nodetyperessource.scss";
/*global*/
@import "global/_print";
@import "global/print/projets-complets-ecran";
@import "global/print/projets-complets-print";
/*pages*/
/*
@import "pages/partials/header_footer";
@import "pages/home";*/
@import "pages/home";
*/
// @import "pages/off_canvas_page_wrapper";
@@ -0,0 +1,121 @@
{#
/**
* @file
* Default theme implementation to display a node.
*
* Available variables:
* - node: The node entity with limited access to object properties and methods.
* Only method names starting with "get", "has", or "is" and a few common
* methods such as "id", "label", and "bundle" are available. For example:
* - node.getCreatedTime() will return the node creation timestamp.
* - node.hasField('field_example') returns TRUE if the node bundle includes
* field_example. (This does not indicate the presence of a value in this
* field.)
* - node.isPublished() will return whether the node is published or not.
* Calling other methods, such as node.delete(), will result in an exception.
* See \Drupal\node\Entity\Node for a full list of public properties and
* methods for the node object.
* - label: (optional) The title of the node.
* - content: All node items. Use {{ content }} to print them all,
* or print a subset such as {{ content.field_example }}. Use
* {{ content|without('field_example') }} to temporarily suppress the printing
* of a given child element.
* - author_picture: The node author user entity, rendered using the "compact"
* view mode.
* - metadata: Metadata for this node.
* - date: (optional) Themed creation date field.
* - author_name: (optional) Themed author name field.
* - url: Direct URL of the current node.
* - display_submitted: Whether submission information should be displayed.
* - attributes: HTML attributes for the containing element.
* The attributes.class element may contain one or more of the following
* classes:
* - node: The current template type (also known as a "theming hook").
* - node--type-[type]: The current node type. For example, if the node is an
* "Article" it would result in "node--type-article". Note that the machine
* name will often be in a short form of the human readable label.
* - node--view-mode-[view_mode]: The View Mode of the node; for example, a
* teaser would result in: "node--view-mode-teaser", and
* full: "node--view-mode-full".
* The following are controlled through the node publishing options.
* - node--promoted: Appears on nodes promoted to the front page.
* - node--sticky: Appears on nodes ordered above other non-sticky nodes in
* teaser listings.
* - node--unpublished: Appears on unpublished nodes visible only to site
* admins.
* - title_attributes: Same as attributes, except applied to the main title
* tag that appears in the template.
* - content_attributes: Same as attributes, except applied to the main
* content tag that appears in the template.
* - author_attributes: Same as attributes, except applied to the author of
* the node tag that appears in the template.
* - title_prefix: Additional output populated by modules, intended to be
* displayed in front of the main title tag that appears in the template.
* - title_suffix: Additional output populated by modules, intended to be
* displayed after the main title tag that appears in the template.
* - view_mode: View mode; for example, "teaser" or "full".
* - teaser: Flag for the teaser state. Will be true if view_mode is 'teaser'.
* - page: Flag for the full page state. Will be true if view_mode is 'full'.
* - readmore: Flag for more state. Will be true if the teaser content of the
* node cannot hold the main body content.
* - logged_in: Flag for authenticated user status. Will be true when the
* current user is a logged-in member.
* - is_admin: Flag for admin user status. Will be true when the current user
* is an administrator.
*
* @see template_preprocess_node()
*
* @todo Remove the id attribute (or make it a class), because if that gets
* rendered twice on a page this is invalid CSS for example: two lists
* in different view modes.
*
* @ingroup themeable
*/
#}
<article{{ attributes }}>
{{ title_prefix }}
{% if label and not page %}
<h2{{ title_attributes }}>
<a href="{{ url }}" rel="bookmark">{{ label }}</a>
</h2>
{% endif %}
{{ title_suffix }}
{% if display_submitted %}
<footer>
{{ author_picture }}
<div{{ author_attributes }}>
{% trans %}Submitted by {{ author_name }} on {{ date }}{% endtrans %}
{{ metadata }}
</div>
</footer>
{% endif %}
<div class="projet-content"{{ content_attributes }}>
{# {{ content }} #}
{# <div class="projet-content"> #}
<div class="projet-header-print">
{{ content.field_photo }}
{{ content.title }}
{{ content.field_equipe }}
{{ content.field_incube }}
</div>
<div class="projet-body-print">
{{ content.field_region }}
{{ content.field_type_de_moa }}
{{ content.field_type_de_projet }}
{{ content.field_etape_du_projet }}
{{ content.field_textes }}
</div>
{# </div> #}
<div class="filtres_projet">
{{content.bottom}}
</div>
</div>
</article>