What you are looking for is the combination of width/max-width like this:
width:50%;
max-width:70vmin;
- If
70vmin > 50% then we will have at least 50% (our min boundary) and we will not exceed 70vmin
- if
70vmin < 50% then we will have a width equal to 70vmin (our max
boundary that suppress the min one)
You can achieve this using a simple div and margin:auto. No need for grid:
.grid-item {
max-width: 70vmin;
width: 50%;
height: 50px;
margin:auto;
background: red;
};
<div class="grid-item"></div>
In the above example we fixed the width to 50% so technically it won't be bigger. In case you want to have bigger than 50% when 70vmin is also bigger you can try the following combination:
.grid-container {
display:flex;
justify-content:center;
margin:20px 0;
}
.grid-item {
max-width: 70vmin;
flex-basis:50%;
height: 50px;
background: red;
white-space:nowrap;
}
<div class="grid-container">
<div class="grid-item"> some text</div>
</div>
<div class="grid-container">
<div class="grid-item"> some text some text some text some text some text some text some text some text some text</div>
</div>
We set the initial width using flex-basis to be at least 50%, we fix the max-width and the content can make the element to grow between 50% and 70vmin