javascript - CSS - 如何创建一个占据屏幕剩余宽度的网格(不计算侧边栏)
问题描述
我正在尝试在 CSS 中创建一个网格,但我不确定如何指定整个网格的宽度,以便它只占用屏幕的剩余宽度(减去侧边栏),这样就不应该有任何滚动水平允许。以下是我面临的问题的屏幕截图。
如您所见,启用了水平滚动,因为网格太宽了。
这是我的参考代码:(我正在使用 ReactJS)
.analytics-grid {
display: grid;
grid-template-rows: auto;
grid-template-columns: 1fr 1fr;
row-gap: 10px;
column-gap: 10px;
grid-template-areas: "conversion conversion-daily"
}
.daily-conversion-box {
grid-area: conversion-daily;
padding: 20px;
}
.conversion-box {
grid-area: conversion;
padding: 20px;
}
jsx(其中 CustomerConversion 和 CustomerConversionDaily 是我调用来渲染图表的子组件)
<div className='analytics-grid'>
<div className='conversion-box'>
<CustomerConversion />
</div>
<div className='daily-conversion-box'>
<CustomerConversionDaily />
</div>
sidebar.js(其中 Sider 是来自 UI 包 AntD 的组件)
<div>
<Sider trigger={null} collapsible collapsed={collapsed}>
{menu()}
</Sider>
<div id='crm-header-layout'>
... *header goes here* ...
<div id="crm-content">
{props.children} //this is where the analytics grid from above end up
</div>
</div>
</div>
有没有办法让我能够指定我的网格的宽度,这样它就可以很好地占据屏幕的剩余宽度减去侧边栏,这样就不需要进行水平滚动了?感谢大家的帮助,我是 CSS 新手,所以如果有更好的解决方案来完成我想要完成的任务,请指导我!谢谢
解决方案
当你设置display: grid;
它意味着这个节点的孩子使用网格排列。它不会为您设置 div 的高度或宽度。如果要包含它,则需要设置它。
有多种设置宽度的方法。
- 您可以像使用容器一样使用网格。像这样,
.container {
display: grid;
grid-template: 1fr / 80px 1fr;
}
.content-1 {
background-color: red;
}
.content-2 {
background-color: blue;
}
<div class="container">
<div class="content-1">Content 1</div>
<div class="content-2">Content 2</div>
</div>
- 您可以在 flex 中同时包含 appbar 和内容,并将
flex-grow
容器设置为1
.
.app{
display: flex;
}
.appbar{
flex-grow: 0;
}
.main-container{
flex-grow: 1;
}
或者,
对这样的容器使用 CSS calc
。
.analytics-grid {
display: grid;
grid-template-rows: auto;
grid-template-columns: 1fr 1fr;
row-gap: 10px;
column-gap: 10px;
grid-template-areas: "conversion conversion-daily";
width: calc(100vw - <appbar width>);
}
PS:grid-template
是一次设置行和列的简写。参考https://developer.mozilla.org/en-US/docs/Web/CSS/grid-template
推荐阅读
- azureservicebus - 在持久函数中创建服务总线订阅
- html - html页面上的验证不能使用数据数据注释
- c# - 无法将datagridview转换为xml c#
- javascript - 正则表达式在最后一场比赛后获得异常
- python - requests.exceptions.ConnectionError: ('Connection aborted.', gaierror(8, 'nodename nor servname provided, or not known'))
- swift - Swift clousure 捕获不是通过 for 循环中的引用?
- here-api - 不遵守卡车限制 - 卡车的计算路线错误
- java - 如何修复此代码的“java.sql.SQLException:[Microsoft][ODBC Driver Manager] Invalid descriptor index”
- .net - 使用 If 语句验证字符串值是否在字符串数组中
- azure - Azure EventGrid 事件订阅:错误 400:指定的 XML 在语法上无效