我正在使用styledcomponents进行响应,并且将头转向css-grid,无法对齐textarea,无法获得正确的高度(下一行溢出)和宽度(必须与右侧的’col3’对齐):
const Wrapper = styled.div`
display:grid
grid-template-columns: 1fr 1fr 1fr 30px;
grid-template-rows:25% 25% auto;
justify-items: start;
border: solid 1px #000000
`
const ColumnSpan2 = styled.div`
grid-column: 2/4;
grid-row: row 2;
`;
该组件如下所示:
<Wrapper>
<Column1>
<select>
<option>een</option>
<option>twee</option>
</select>
</Column1>
<Column2>
<input type="text" value="col2" />{' '}
</Column2>
<Column3>
<input type="text" value="col3" />{' '}
</Column3>
<Column4>todo iceon </Column4>
<ColumnSpan2>
{' '}
<textarea>Hello comments here</textarea>
</ColumnSpan2>
</Wrapper>
CSS:
body {
margin: 0 auto;
max-width: 60%;
}
textarea{
width: 200%;
height: 100%
}
如何获得正确的textarea样式(我尝试更改grid-template-rows prop但未提供解决方案)
最佳答案
我为您创建了一个原始CSS表示反应代码-以下是一些指针:
> justify-items: start
将使网格项目中的内容对齐-考虑将其删除(宽度:200%等,我想您也正在尝试解决它,保留正当项目)
>现在设置输入的宽度,选择和文本区域以使用宽度填充其网格单元:100%
>网格行:第2行无效,因为您在grid-template-rows定义中没有named grid-line
-将其更改为grid-row:2,
>您尚未为网格容器定义高度-因此您可以将grid-template-rows更改为grid-template-rows:自动自动,
>还请注意使用网格间隙和填充来调整网格项之间的间隔.
请参见下面的演示:
body {
margin: 0 auto;
max-width: 60%;
}
textarea,input,select {
width: 100%; /* extend the width of the grid item */
Box-sizing: border-Box; /* including padding / border in width */
}
.wrapper {
display: grid;
grid-template-columns: 1fr 1fr 1fr 30px;
grid-template-rows: auto auto; /* changed */
border: solid 1px #000000;
grid-gap: 10px; /* grid gap to handle spaces between items if needed */
padding: 5px; /* space between wrapper and grid items */
}
.column1 {
grid-column: 1/2;
}
.column2 {
grid-column: 2/3;
}
.column3 {
grid-column: 3/4;
}
.column4 {
grid-column: 4/5;
}
.colspan2 {
grid-column: 2/4;
grid-row: 2; /* changed */
}
<div class="wrapper">
<div class="column1">
<select>
<option>een</option>
<option>twee</option>
</select>
</div>
<div class="column2">
<input type="text" value="col2" />
</div>
<div class="column3">
<input type="text" value="col3" />
</div>
<div class="column4">(i)</div>
<div class="colspan2">
<textarea>Hello comments here</textarea>
</div>
</div>