- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在为我正在使用 css-grid 的网站构建布局。如果它解决了我的目的,我也愿意使用 flexbox。我有页眉、页脚、左小部件、右小部件和主要部分 (div)。我希望布局占据整个屏幕。如果主要部分根据其内容展开,我希望左右小部件与其大小相匹配。
P.S - 左右小部件可以包含比主要内容更多的内容,在这种情况下我想要左右小部件中的滚动条
我已经尝试使用 css-grid 进行此操作,但左右和主要部分占用了最大 div 的大小。
.container {
display: grid;
grid-template-areas: 'header header header' 'left main right' 'footer footer footer';
grid-template-rows: 3vh minmax(93vh, auto) 3vh;
}
.header {
grid-area: header;
border: 1px solid black;
background: blue;
}
.leftWidget {
grid-area: left;
border: 1px solid black;
background: red;
}
.rightWidget {
grid-area: right;
border: 1px solid black;
background: green;
}
.main {
grid-area: main;
border: 1px solid black;
background: yellow;
}
.footer {
grid-area: footer;
border: 1px solid black;
background: blue;
}
<div class=container>
<div class=header>
</div>
<div class=leftWidget>
</div>
<div class=main>
</div>
<div class=rightWidget>
</div>
<div class=footer>
</div>
</div>
最佳答案
您可以对代码进行以下更改:
对第二行使用 auto(而不是 93vh),以便它占据其内容的空间,
header 和 footer 可以使用固定高度(例如 3em),而不是 3vh 高度,
为 3 个相等的列添加一个 grid-template-columns: 1fr 1fr 1fr
定义,允许边栏和内容区域采用相同的宽度。
请参阅下面的演示,边栏中的内容少于内容区域的内容 - 这是有效的,因为内容区域具有更高的高度:
body {
margin: 0;
}
.container {
display: grid;
grid-template-areas: 'header header header'
'left main right'
'footer footer footer';
grid-template-rows: 3em auto 3em; /* middle row occupies space of its contents */
grid-template-columns: 1fr 1fr 1fr; /* 3 equal columns */
}
.header {
grid-area: header;
border: 1px solid black;
background: blue;
}
.leftWidget {
grid-area: left;
border: 1px solid black;
background: red;
}
.rightWidget {
grid-area: right;
border: 1px solid black;
background: green;
}
.main {
grid-area: main;
border: 1px solid black;
background: yellow;
}
.footer {
grid-area: footer;
border: 1px solid black;
background: blue;
}
<div class=container>
<div class=header>Header</div>
<div class=leftWidget>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
<div class=main>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
<div class=rightWidget>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
<div class=footer>Footer</div>
</div>
要确保中间行的高度由 main
元素定义,您可以在侧边栏内使用额外的包装器并使用绝对定位 - 请参见下面的演示:
body {
margin: 0;
}
.container {
display: grid;
grid-template-areas: 'header header header'
'left main right'
'footer footer footer';
grid-template-rows: 3em auto 3em;
grid-template-columns: 1fr 1fr 1fr; /* 3 equal columns */
}
.header {
grid-area: header;
border: 1px solid black;
background: blue;
}
.leftWidget {
grid-area: left;
border: 1px solid black;
background: red;
overflow: auto;
position: relative;
}
.rightWidget {
grid-area: right;
border: 1px solid black;
background: green;
overflow: auto;
position: relative;
}
.leftWidget > div,
.rightWidget > div {
position: absolute;
left: 0;
right: 0;
width: 100%;
height: 100%;
}
.main {
grid-area: main;
border: 1px solid black;
background: yellow;
}
.footer {
grid-area: footer;
border: 1px solid black;
background: blue;
}
<div class="container">
<div class="header">Header</div>
<div class="leftWidget">
<div>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
</div>
<div class="main">
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
<div class="rightWidget">
<div>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
</div>
<div class="footer">Footer</div>
</div>
如果你想给grid容器设置一个min-height,并且只有在那之后才有上面的效果,只需在容器中添加height: 100vh
即可:
body {
margin: 0;
}
.container {
display: grid;
grid-template-areas: 'header header header'
'left main right'
'footer footer footer';
grid-template-rows: 3em auto 3em;
grid-template-columns: 1fr 1fr 1fr; /* 3 equal columns */
height: 100vh;
}
.header {
grid-area: header;
border: 1px solid black;
background: blue;
}
.leftWidget {
grid-area: left;
border: 1px solid black;
background: red;
overflow: auto;
position: relative;
}
.rightWidget {
grid-area: right;
border: 1px solid black;
background: green;
overflow: auto;
position: relative;
}
.leftWidget > div,
.rightWidget > div {
position: absolute;
left: 0;
right: 0;
width: 100%;
height: 100%;
}
.main {
grid-area: main;
border: 1px solid black;
background: yellow;
}
.footer {
grid-area: footer;
border: 1px solid black;
background: blue;
}
<div class="container">
<div class="header">Header</div>
<div class="leftWidget">
<div>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
</div>
<div class="main">
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
<div class="rightWidget">
<div>
Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here Lorel ipsum some text here
</div>
</div>
<div class="footer">Footer</div>
</div>
关于html - 即使左侧 div 有更多数据,也希望左侧 div 与内容 div 匹配大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56082247/
对于我不断地用刽子手问题来打扰这个论坛,我深表歉意。我希望很快就能完成这件事。确实在这方面一直在努力。这是到目前为止我的代码: #include #include #include #defin
这篇文章是 this one 的延续. 我试图了解我是否是唯一一个错过并需要 .NET 泛型类型继承其泛型参数类型之一的能力的人。 面临的挑战是收集支持此功能的令人信服的理由,或者,要知道没有。 我给
我正在使用下面的代码设计一个 3 小时的 JavaScript 倒计时 var count = 10800; var counter = setInterval(timer, 1000); //1
我正在处理验证并放置一个 html 模式属性,并希望在不点击保存/提交按钮的情况下查看错误消息。当我在字段外单击时,它应该根据我的模式条件进行验证。 这是我的代码: Extra Credit Da
我有一个像这样的 mysql 表结构: id int primary key name varchar start_time float 数据可能是这样的: id name
我试图在桌面上保留一张带有描述的图片,然后在移动设备上希望图片在左边,描述在右边……更多的是尽可能让所有内容都在首屏。 我希望桌面上的 DIV 是: 一个一个 BBB 但是在手机上: A B A B
我通过 Stackoverflow 进行了搜索,发现很多人试图避免 CSS 列中的重叠,但实际上我被要求让文本和图像重叠。 更新: 更好的图像解释了我被要求做的事情,以及指向我正在使用的代码的链接。谢
我在我的框架中设置了几个协议(protocol)来处理资源。在其中一个协议(protocol)中,我设置了一个扩展来为 decode 函数提供默认实现。显示代码和发生的情况更简单(请参阅对 fatal
我想同时加载,或者在上面的图像之后立即加载。它会在图像和标题 div 在预加载器内旋转之前不断加载 - 不好!这是 HTML: ✕ Various inv
我目前正在开发一个小游戏。我使用 getKeyCode 来移动我的角色,但问题是我不希望你在按住按钮的情况下能够继续移动。无论如何,我是否可以使用 getKeyCode 仅在第一次单击时注册,然后在释
我需要设置 width 或 max-width 才能让 margin:auto 工作,对吗? Like in this jsFiddle . 问题是,段落宽度等于 max-width,因此文本 blo
您好,我在同一页面上有一个表单和一个 Paypal 订阅按钮。在重定向到 Paypal 付款之前,我想在单击提交表单(通过电子邮件发送给我)时订阅按钮。 > >
我想让用户在点击一个文本字段时感觉就像我们点击一个按钮,在释放按钮后它会在很短的时间内变成橙色,然后闪烁并再次变成它的第一种颜色。当我点击它时它运行良好但没有出现颜色闪烁。 布局文件 主要 Ac
我怎样才能让我的 MediaPlayer 继续播放,即使在手机锁定和屏幕关闭的情况下,我认为它可能必须做一些使其成为服务但不确定的事情。如果是这样,我该如何将其更改为服务,或者是否有更快更简单的修复方
有人可以帮助我理解内存泄漏的概念以及特定数据结构如何促进/防止它(例如链表、数组等)。前段时间我被两个不同的人教过两次——由于教学方法的不同,这让我有点困惑。 最佳答案 维基百科有一个 good de
我希望 HTML 表单在提交后不执行任何操作。 action="" 不好,因为它会导致页面重新加载。 基本上,我希望在按下按钮或有人在输入数据后点击 Enter 时调用 Ajax 函数。是的,我可以删
我正在执行一个程序 say A from another,首先是 fork-ing,然后是 execve()。现在的问题是我希望 A 使用我通常使用 LD_PRELOAD 来完成的库。我如何在 exe
我目前正在为我们公司测试 Autofac。 我们希望有以下规则: 如果接口(interface)只实现了一次,则使用 builder.RegisterAssemblyTypes 自动添加它(见下文)。
正如 Scott Meyers 和 Andrei Alexandrescu 在 this 中概述的那样文章 简单尝试实现双重检查锁定实现在 C++ 中特别是不安全的,并且通常在不使用内存屏障的多处理器
目前我有一些代码可以在点击时改变图像,但这段代码是在一个 php HTML 循环中所以事情变得棘手,点击一个开关会使每个故事的开关都激活,因为它是基于 CSS 运行的.如何让它们独立交换? $("
我是一名优秀的程序员,十分优秀!