使用 html 网格布局跨多行调整列大小 [英] resize column across multiple rows using html grid layout
问题描述
我有一个 2 列 3 行的网格布局.
我希望能够调整列宽.我知道我可以使用 resize: horizontal
但这只会改变一行的宽度.
我想我不能做我想做的事,我需要使用嵌套网格,但我不确定,所以我想检查一下.
<头><风格>.容器 {显示:网格;网格模板列:1fr 1fr;网格模板行:1fr 1fr 1fr;间隙:0px 0px;网格自动流:行;网格模板区域:标志搜索"导航主""日志主";}.标识 {网格区域:标志;}.搜索 {网格区域:搜索;}.nav {网格区域:导航;溢出:自动;调整大小:水平;}.日志 {网格区域:日志;溢出:自动;调整大小:水平;}.主要的 {网格区域:主要;}html,身体,.容器 {高度:100%;边距:0;}/* 仅供演示,无需复制以下代码 */.容器 * {边框:1px纯红色;位置:相对;}.container *:after {内容:属性(类);位置:绝对;顶部:0;左:0;宽度:100%;高度:100%;显示:网格;对齐项目:居中;对齐内容:居中;}</风格>头部><身体><div class="容器"><div class="logo"></div><div class="search"></div><div class="nav">
<div class="log"></div><div class="main"></div>
</html>
你可以用你的结构来做.诀窍是在模板列上使用 auto 1fr
并将可调整大小的元素的初始宽度设置为等于 50vw
来模拟 1fr 1fr
> 最初:
PS:我通过删除区域来简化代码,但这不是技巧的一部分,您可以保留它
.container {显示:网格;高度:100vh;网格模板列:自动 1fr;网格模板行:1fr 1fr 1fr;}.日志 {溢出:自动;调整大小:水平;宽度:50vw;}.主要的 {网格行:2/跨度 2;网格列:2;}身体{边距:0;}/* 仅供演示,无需复制以下代码 */.容器 * {边框:1px纯红色;位置:相对;}.container *:after {内容:属性(类);位置:绝对;顶部:0;左:0;宽度:100%;高度:100%;显示:网格;对齐项目:居中;对齐内容:居中;}
<div class="logo"></div><div class="search"></div><div class="nav"><div class="log"></div><div class="main"></div>
如果你有内容,你可以这样做:
.container {显示:网格;高度:100vh;网格模板列:自动 1fr;网格模板行:1fr 1fr 1fr;}.日志 {溢出:自动;调整大小:水平;宽度:50vw;}/* 禁用宽度贡献,因此只有日志将定义宽度 */.标识,.nav {宽度:0;最小宽度:100%;}/**/.主要的 {网格行:2/跨度 2;网格列:2;}身体{边距:0;}/* 仅供演示,无需复制以下代码 */.容器 * {边框:1px纯红色;位置:相对;}
<div class="logo">Lorem ipsum dolor sat amet, consectetur .</div><div class="搜索"><div class="nav">Lorem ipsum dolor 坐 amet,consectetur adipiscing 精英.
<div class="日志">
<div class="main"></div>