I am using a css grid to render a menu with two main columns.
I want the second column to be 25% if the first column has much content, and up to 33% if the first column has little content.
Now I'm using grid-template-columns: 3fr minmax(33rem, 1fr) and columns are fixed.
Below I've added fiddles for the two cases.
a.toggle-menu {
width: 9rem;
font-size: 1.5rem;
color: white;
background-color: #359558;
display: flex;
justify-content: center;
align-items: center;
text-decoration: none;
font-size: 3rem;
}
/*#endregion */
.overlay {
/* x animazione
visibility: hidden;
opacity: 0;
transition: visibility .4s, opacity .4s;*/
display: none;
width: 100%;
position: absolute;
z-index: 2;
top: 5.4rem;
left: 0;
background-color: white;
overflow-x: hidden;
box-shadow: rgba(0, 0, 0, 0.09) 0px 2px 1px, rgba(0, 0, 0, 0.09) 0px 4px 2px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 16px 8px, rgba(0, 0, 0, 0.09) 0px 32px 16px;
/* a {
padding: 8px;
text-decoration: none;
font-size: 36px;
color: #818181;
display: block;
transition: 0.3s;
&:hover, &:focus {
color: #f1f1f1;
}
}*/
}
.overlay.menu-aperto {
/* x animazione
visibility: visible;
opacity: 1;*/
display: block;
}
.overlay .closebtn {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
}
.overlay .overlay-content {
position: relative;
width: 100%;
padding: 2rem 0;
z-index: 9999;
display: grid;
grid-template-columns: 3fr minmax(33rem, 1fr);
}
.overlay .overlay-content #main-menu {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(32rem, 1fr));
}
.overlay .overlay-content #main-menu .voce-menu {
cursor: pointer;
}
.overlay .overlay-content #main-menu .voce-menu:hover {
transition: 0.6s;
background-color: #e5680b;
color: white !important;
}
.overlay .overlay-content #main-menu .voce-menu:hover h2,
.overlay .overlay-content #main-menu .voce-menu:hover p {
color: white;
}
.overlay .overlay-content #side-menu {
border-style: solid;
border-width: 0px 0px 0px 1px;
border-color: #359558;
}
.overlay .overlay-content #side-menu h1 {
color: #359558;
}
.overlay .overlay-content #side-menu .categoria-menu {
margin: 1rem;
}
.overlay .overlay-content #side-menu a {
color: #359558;
}
.overlay .overlay-content .categoria-menu {
margin: 1rem 3rem;
min-width: 30rem;
}
.overlay .overlay-content .categoria-menu h1 {
align-items: center;
display: flex;
padding: 1rem;
font-size: 2rem;
color: #e5680b;
text-transform: uppercase;
}
.overlay .overlay-content .categoria-menu h1::before {
margin-right: 1rem;
font-size: 4rem;
}
.overlay .overlay-content .categoria-menu .voce-menu {
padding: 1rem;
border-style: solid;
border-width: 0px 0px 1px 0px;
border-color: #DDDDDD;
}
.overlay .overlay-content .categoria-menu .voce-menu-img {
display: grid;
grid-template-columns: minmax(10rem, 1fr) 2fr;
grid-template-areas: "img titolo" "img desc";
column-gap: 1rem;
align-items: center;
padding: 1.5rem 1rem;
border-style: solid;
border-width: 0px 0px 1px 0px;
border-color: #DDDDDD;
}
.overlay .overlay-content .categoria-menu .voce-menu-img img {
width: 100%;
grid-area: img;
}
.overlay .overlay-content .categoria-menu .voce-menu-img h2 {
grid-area: titolo;
}
.overlay .overlay-content .categoria-menu .voce-menu-img p {
grid-area: desc;
}
.overlay .overlay-content .categoria-menu h2 {
font-size: 1.6rem;
margin: 0 0 0.5rem 0;
font-weight: normal;
line-height: 2rem;
color: #22262C;
/*&::first-letter {
font-size: 3rem;
padding-right: 1px;
}*/
}
.overlay .overlay-content .categoria-menu p {
font-weight: normal;
color: #7F8595;
font-size: 1.3rem;
line-height: 1.7rem;
margin: 0;
}
<div id="myNav" class="overlay menu-aperto">
<div class="overlay-content">
<section id="main-menu">
<section class="categoria-menu">
<h1 class="fa btn-menu-abil">Abilitazioni</h1>
<div class="voce-menu" data-url="/">
<h2>Organico</h2>
<p>Elenco del personale</p>
</div>
<div class="voce-menu" data-url="/Abilitazioni">
<h2>Abilitazioni</h2>
<p>Catalogo dei codici abilitativi</p>
</div>
<div class="voce-menu" data-url="/ContrassegnoSAP">
<h2>Contrassegni </h2>
<p>Imposta la segreteria dei sdfsdf</p>
</div>
<div class="voce-menu" data-url="/Corredino">
<h2>redfd</h2>
<p>Gestione dei </p>
</div>
</section>
</section>
<section id="side-menu">
<section class="categoria-menu">
<h1 class="fas btn-menu-supporto">Supporto</h1>
<div class="voce-menu-img">
<img src="/imetodo.jpg">
<h2>Assistenza metodologica</h2>
<p>
Corsi interni <a href="mailto:indirizzo@email.com">metodologia</a> <br> Corsi esterni <a href="mailto:indirizzo@email.com">segreteria</a> <br>
</p>
</div>
<div class="voce-menu-img">
<img src="">
<h2>Assistenza tecnica</h2>
<p>
<a href="d">Segnala un'anomalia</a>
<br>
<a href="o">Richiedi un'implementazione</a>
</p>
</div>
</section>
<section class="categoria-menu">
<div class="voce-menu">
<h2>Informazioni sulla versione</h2>
<p>Versione applicazione 3.1.0</p>
<p>Versione database </p>
</div>
</section>
</section>
</div>
</div>
a.toggle-menu {
width: 9rem;
font-size: 1.5rem;
color: white;
background-color: #359558;
display: flex;
justify-content: center;
align-items: center;
text-decoration: none;
font-size: 3rem;
}
/*#endregion */
.overlay {
/* x animazione
visibility: hidden;
opacity: 0;
transition: visibility .4s, opacity .4s;*/
display: none;
width: 100%;
position: absolute;
z-index: 2;
top: 5.4rem;
left: 0;
background-color: white;
overflow-x: hidden;
box-shadow: rgba(0, 0, 0, 0.09) 0px 2px 1px, rgba(0, 0, 0, 0.09) 0px 4px 2px, rgba(0, 0, 0, 0.09) 0px 8px 4px, rgba(0, 0, 0, 0.09) 0px 16px 8px, rgba(0, 0, 0, 0.09) 0px 32px 16px;
/* a {
padding: 8px;
text-decoration: none;
font-size: 36px;
color: #818181;
display: block;
transition: 0.3s;
&:hover, &:focus {
color: #f1f1f1;
}
}*/
}
.overlay.menu-aperto {
/* x animazione
visibility: visible;
opacity: 1;*/
display: block;
}
.overlay .closebtn {
position: absolute;
top: 20px;
right: 45px;
font-size: 60px;
}
.overlay .overlay-content {
position: relative;
width: 100%;
padding: 2rem 0;
z-index: 9999;
display: grid;
grid-template-columns: 3fr minmax(33rem, 1fr);
}
.overlay .overlay-content #main-menu {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(32rem, 1fr));
}
.overlay .overlay-content #main-menu .voce-menu {
cursor: pointer;
}
.overlay .overlay-content #main-menu .voce-menu:hover {
transition: 0.6s;
background-color: #e5680b;
color: white !important;
}
.overlay .overlay-content #main-menu .voce-menu:hover h2,
.overlay .overlay-content #main-menu .voce-menu:hover p {
color: white;
}
.overlay .overlay-content #side-menu {
border-style: solid;
border-width: 0px 0px 0px 1px;
border-color: #359558;
}
.overlay .overlay-content #side-menu h1 {
color: #359558;
}
.overlay .overlay-content #side-menu .categoria-menu {
margin: 1rem;
}
.overlay .overlay-content #side-menu a {
color: #359558;
}
.overlay .overlay-content .categoria-menu {
margin: 1rem 3rem;
min-width: 30rem;
}
.overlay .overlay-content .categoria-menu h1 {
align-items: center;
display: flex;
padding: 1rem;
font-size: 2rem;
color: #e5680b;
text-transform: uppercase;
}
.overlay .overlay-content .categoria-menu h1::before {
margin-right: 1rem;
font-size: 4rem;
}
.overlay .overlay-content .categoria-menu .voce-menu {
padding: 1rem;
border-style: solid;
border-width: 0px 0px 1px 0px;
border-color: #DDDDDD;
}
.overlay .overlay-content .categoria-menu .voce-menu-img {
display: grid;
grid-template-columns: minmax(10rem, 1fr) 2fr;
grid-template-areas: "img titolo" "img desc";
column-gap: 1rem;
align-items: center;
padding: 1.5rem 1rem;
border-style: solid;
border-width: 0px 0px 1px 0px;
border-color: #DDDDDD;
}
.overlay .overlay-content .categoria-menu .voce-menu-img img {
width: 100%;
grid-area: img;
}
.overlay .overlay-content .categoria-menu .voce-menu-img h2 {
grid-area: titolo;
}
.overlay .overlay-content .categoria-menu .voce-menu-img p {
grid-area: desc;
}
.overlay .overlay-content .categoria-menu h2 {
font-size: 1.6rem;
margin: 0 0 0.5rem 0;
font-weight: normal;
line-height: 2rem;
color: #22262C;
/*&::first-letter {
font-size: 3rem;
padding-right: 1px;
}*/
}
.overlay .overlay-content .categoria-menu p {
font-weight: normal;
color: #7F8595;
font-size: 1.3rem;
line-height: 1.7rem;
margin: 0;
}
<div id="myNav" class="overlay menu-aperto">
<div class="overlay-content">
<section id="main-menu">
<section class="categoria-menu">
<h1 class="fa btn-menu-abil">Abilitazioni</h1>
<div class="voce-menu" data-url="/">
<h2>Organico</h2>
<p>Elenco del personale</p>
</div>
<div class="voce-menu" data-url="/Abilitazioni">
<h2>Abilitazioni</h2>
<p>Catalogo dei codici abilitativi</p>
</div>
<div class="voce-menu" data-url="/ContrassegnoSAP">
<h2>Contrassegni SAP</h2>
<p>Imposta la segreteria dei contrassegni</p>
</div>
<div class="voce-menu" data-url="/Corredino">
<h2>Corredini</h2>
<p>Gestione dei corredini</p>
</div>
</section>
<section class="categoria-menu">
<h1 class="fas btn-menu-corsi">Corsi</h1>
<div class="voce-menu" data-url="/PartecipazioneCorso/Crea">
<h2>Richiesta</h2>
<p>Iscriviti ad un corso</p>
</div>
<div class="voce-menu" data-url="/PartecipazioneCorso">
<h2>Partecipazioni</h2>
<p>Consulta l'elenco delle tue richieste e partecipazioni</p>
</div>
<div class="voce-menu" data-url="/Corso">
<h2>Catalogo</h2>
<p>Gestione del catalogo dei corsi</p>
</div>
<div class="voce-menu" data-url="/Corso/InvioMails">
<h2>Mail</h2>
<p>Invia le mail riepilogative dei corsi</p>
</div>
</section>
<section class="categoria-menu">
<h1 class="fa btn-menu-giustificativi">Giustificativi</h1>
<section class="voce-menu" data-url="/Giustificativo">
<h2>Elenco giustificativi</h2>
<p>Consulta i giustificativi mancanti, il catalogo di quelli ricevuti e invia i solleciti</p>
</section>
</section>
<section class="categoria-menu">
<h1 class="fa btn-menu-config">Amministrazione</h1>
<div class="voce-menu" data-url="/Anagrafiche">
<h2>Anagrafiche</h2>
<p>Gestione delle anagrafiche</p>
</div>
<div class="voce-menu" data-url="/Setup">
<h2>Setup</h2>
<p>Configura l'applicazione</p>
</div>
</section>
</section>
<section id="side-menu">
<section class="categoria-menu">
<h1 class="fas btn-menu-supporto">Supporto</h1>
<div class="voce-menu-img">
<img src="/images/menu-aiuto-metodo.jpg">
<h2>Assistenza metodologica</h2>
<p>
Corsi interni <a href="mailto:indirizzo@email.com">metodologia</a> <br> Corsi esterni <a href="mailto:indirizzo@email.com">segreteria</a> <br>
</p>
</div>
<div class="voce-menu-img">
<img src="/images/menu-aiuto-tecnico.jpg">
<h2>Assistenza tecnica</h2>
<p>
<a href="fghfghf">Segnala un'anomalia</a>
<br>
<a href="fghfghgf">Richiedi un'implementazione</a>
</p>
</div>
</section>
<section class="categoria-menu">
<div class="voce-menu">
<h2>Informazioni sulla versione</h2>
<p>Versione applicazione 3.1.0</p>
<p>Versione database </p>
</div>
</section>
</section>
</div>
</div>
