当前位置: 首页 > 知识库问答 >
问题:

CSS网格布局文本框不跨多列

梁浩涆
2023-03-14

我正在使用CSS网格布局,在尝试使文本框填充它所在的div容器时遇到了困难。它对某些控件(如GridView/GoogleMap)似乎工作得很好,但当我尝试使用TextBox时,它只填充一列的宽度,即使div填充了3-4列。

下面是网格容器的示例CSS,以及用于填充所有列的示例

.grid-container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    -ms-grid-columns: repeat(2, 1fr);
    grid-gap: 1em;
}

@media (min-width: 52em) {
    .grid-container {
        width: 95%;
        max-width: 1200px;
        margin: 0 auto;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(20em, 1fr));
        -ms-grid-columns: repeat(auto-fit, minmax(20em, 1fr));
        grid-gap: 1em;
    }
}

.item-max-columns {
  grid-column: 1 / -1;
  background-color: aqua;
}

此GooleMap控件在填充屏幕的所有列中正确显示(GridViews也正确显示)

<div class="item-max-columns">
    <map:GoogleMap ID="JobMap" Width="100%" runat="server" DefaultAddress="Edmonton, Alberta"></map:GoogleMap>
    <map:GoogleMarkers ID="JobMapMarkers" TargetControlID="JobMap" runat="server"></map:GoogleMarkers>
</div>

但是,当我尝试插入宽度为100%的TextBox时,它只填充一列

<div class="item-max-columns">
    Project Description
    <asp:TextBox ID="txtProjectDescription" runat="server" Enabled="true" TextMode="MultiLine" Width="100%"></asp:TextBox>
</div>

这里有一个指向JSFiddle的链接,它用输入字段而不是TextBox再现了问题。我希望输入字段/文本框跨越整个div标记,而不仅仅是第一列。

https://jsfidle.net/zuvdx2xn/

CSS宽度问题

共有1个答案

养慈
2023-03-14

我通过更新CSS来包括

.textbox{
    width: calc(100% - 2em);
}

和Input/TextBox控件

<input type="text" id="txtVal2" class="textbox" style="max-width: 100%;" />

null

.grid-container {
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    -ms-grid-columns: repeat(2, 1fr);
    grid-gap: 1em;
}

.textbox{
    width: calc(100% - 2em);
}

@media (min-width: 52em) {
    .grid-container {
        width: 95%;
        max-width: 1200px;
        margin: 0 auto;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(20em, 1fr));
        -ms-grid-columns: repeat(auto-fit, minmax(20em, 1fr));
        grid-gap: 1em;
    }
    .textbox{
      width: calc(100% - 2em);
    }
}

.item-max-columns {
  grid-column: 1 / -1;
  background-color: aqua;
}
<section class="grid-container">
  <div class="item-max-columns">
    <p>Project Description</p>
    <input type="text" id="txtVal2" class="textbox" style="max-width: 100%;" />  
  </div>
  <div class="item-max-columns">
    <p>Instructions</p>
    <input type="text" id="txtVal2" class="textbox" style="max-width: 100%;" />  
   </div>
</section>
 类似资料:
  • 问题内容: 范例GUI大家好,我有 问题。如果有人可以帮助,那就太好了。我正在使用border和 gridlayout,并且试图拆分GUI,但是这没有发生,因为我希望 按钮占整体的一小部分,可以说是1/5,但目前 超过了GUI的一半。我也尝试将按钮放在尺寸上, 但是我不确定这是否是一个好习惯。我有两个类,一个是 RunFurniture,它是框架的主要方法,另一个是 GUI的PanelFurnit

  • 随着CSS网格布局模块即将在Firefox和Chrome中发布,我想我应该尝试一下如何使用它。 我尝试创建一个简单的网格,其中一个项目横跨所有行的左侧,其他项目(、、、等)横跨各个行的右侧。横过行右侧的项的数量是可变的,因此可能存在、、、等的任何组合,因此我使用了属性。因此,我无法为定义要跨转的固定行数,但我希望跨转所有可用行。 null null 要使跨越所有行而不知道最终会有多少行,我应该做什

  • 每一个网格项目都有一个矩形的网格区域,这个网格区域定义了该网格项的包含块,对齐属性(justify-self 和 align-self)确定其实际位置。 网格项占用的单元格也会影响网格的行和列的大小,参看网格尺寸(Grid Sizing)。 网格区域在网格内的位置通过1个网格位置和1个网格跨度属性来定义: grid position 表示网格项在网格中的位置。该属性可以是确定的(被显式定义)或自动

  • 网格模板(grid-template)属性及其普通写法(longhands)定义了一个固定数量的轨道,构成显式网格。 当网格项目定位在这些界限之外,网格容器通过增加隐式网格线生成隐式网格轨道。 这些隐含的和显式的网格线一起构成隐式网格(implicit grid)。 隐式网格轨道的尺寸由网格自动行(grid-auto-rows)和网格自动列(grid-auto-columns)属性来确定。 网格自

  • 网格模板区域(grid-template-areas)、网格模板行(grid-template-rows)和网格模板列(grid-template-columns),这3个属性共同显式定义了一个网格容器。而网格模板(grid-template)属性是一个用来同时设置这3个属性的速写(shorthand)。 grid items内容可能会超出显式网格,这时网格容器会自动生成隐式轨道(implicit

  • 网格布局中,网格容器(grid container)中的内容是通过在网格(grid)中定位和对齐来摆放的。 网格(grid)本质上是一个把网格容器(grid container)通过一组横竖向垂直相交的网格线(grid lines)所划分的格子区域,从而网格项(grid items)(代表grid container中的内容)可以被放进这些格子中。 有两组网格线(grid lines): 一组用来