Один из подходов к решению этой проблемы заключается в использовании псевдоэлемента ::after
, например:
.panel::after {
content: '';
display: block;
width: 100vw;
height: 12px;
background-color: transparent;
}
. Это приведет к воссозданию нижнего поля 12px
, которое не отображается в противном случае.
Это немного глупо, поскольку единственная причина для включения псевдоэлемента ::after
- это "помощник" - это в значительной степени spacer GIF
. (Но все же гораздо менее навязчиво, чем оболочка <div>
.)
Рабочий пример интерфейса с ::after
псевдоэлементом:
.interface {
position: fixed;
top: 0;
left: 0;
width: 100vw;
height: 100vh;
padding: 60px 0;
font-family: sans-serif;
color: rgb(255, 255, 255);
background-color: rgb(159, 0, 0);
opacity: 1;
}
.header,
.footer {
position: fixed;
left: 0;
z-index: 12;
width: 100%;
height: 60px;
line-height: 60px;
text-align: center;
background-color: rgb(159, 0, 0);
box-shadow: 0 0 6px rgba(15, 0, 0, 0.4);
}
.header {
top: 0;
}
.heading {
margin: 0;
padding: 0;
}
.footer {
bottom: 0;
}
.credit {
margin: 0;
padding: 0;
}
.intro {
height: 60px;
margin: 0;
padding: 0;
line-height: 60px;
font-size: 20px;
text-transform: uppercase;
text-align: center;
background-color: rgba(127, 0, 0, 0.4);
box-shadow: 0 0 6px rgba(15, 0, 0, 0.4);
}
.panel {
display: flex;
justify-content: center;
align-items: center;
flex-wrap: wrap;
height: calc(100vh - 180px);
padding-top: 12px;
overflow-y: scroll;
box-sizing: border-box;
transform: translateY(0);
}
.item {
flex: 0 1 30vw;
height: 160px;
margin: 12px;
line-height: 160px;
text-align: center;
text-shadow: 1px 1px 1px rgba(31, 0, 0, 0.4);
background-color: rgba(47, 0, 0, 0.4);
border: 1px solid rgb(95, 0, 0);
}
.panel::after {
content: '';
display: block;
width: 100vw;
height: 12px;
background-color: transparent;
}
@media only screen and (max-width: 906px) {
.item {
flex: 0 1 44vw;
}
}
@media only screen and (max-width: 590px) {
.item {
flex: 0 1 96vw;
}
}
<aside class="interface">
<header class="header">
<h2 class="heading">Title</h2>
</header>
<p class="intro">Text-based introduction here.</p>
<div class="panel">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
<div class="item">Item 6</div>
<div class="item">Item 7</div>
<div class="item">Item 8</div>
<div class="item">Item 9</div>
</div>
<footer class="footer">
<p class="credit">Credit</p>
</footer>
</aside>
NB Откройте Code Snippet
выше для Полная страница .