技术要点,详见注释
<script setup></script> <template> <div class="page"> <header>页头</header> <nav>导航</nav> <!-- 主体内容 --> <main class="row"> <aside> 左侧边栏 <section>区域内容</section> </aside> <article> <h2>文章标题</h2> <p>文章段落一</p> <p> 文章段落二:文章段落二的内容………………文章段落二的内容………………文章段落二的内容………………文章段落二的内容………………文章段落二的内容………………文章段落二的内容………………文章段落二的内容……………… </p> </article> <aside>右侧边栏</aside> </main> <footer>页脚</footer> </div> </template> <style lang="scss" scoped> .page { /* 绝对定位撑满全屏(避开的浏览器默认样式 html 和 body 存在 margin 和 pandding 的影响)*/ position: absolute; top: 0; bottom: 0; left: 0; right: 0; /* 对页面内的元素使用flex布局*/ display: flex; /* 垂直方向使用flex布局*/ flex-direction: column; /* 最小宽度为左右侧栏的宽度+文章的最小宽度*/ min-width: 600px; } header { background-color: goldenrod; text-align: center; padding: 10px; } nav { background-color: red; text-align: center; padding: 10px; } main { display: flex; /* 主体内容-垂直方向撑满*/ flex-grow: 1; background-color: yellow; padding: 10px; } aside { background-color: green; width: 200px; padding: 10px; text-align: center; section { background-color: blue; height: 100px; text-align: center; padding: 10px; margin-top: 10px; } } article { background-color: blueviolet; padding: 10px; /* 文章-水平方向撑满*/ flex-grow: 1; /* flex-grow: 1;时,需设置 width,其值的效果为最小宽度(否则随文字内容的增加,会挤压左右两侧)*/ width: 100px; h2 { text-align: center; } } footer { background-color: gray; text-align: center; padding: 10px; } </style>