CSS网格之谜:网格项中的填充

时间:2019-01-30 14:18:43

标签: css html5 grid frontend web-frontend

那好吧,所以我使用CSS网格制作了一个美观的电子邮件表单。一切正常,但我尝试在表单元素上应用填充时除外。然后事情开始从网格中流出。

似乎网格系统在计算网格项目的最终大小时并没有考虑元素内部的填充。我尝试使用fr-s和auto来设置这些元素的宽度以及各种无用的技巧,但实际上没有任何作用。

以下是代码和一些屏幕截图,可帮助您所有人感到痛苦。 :D

在输入字段中不填充: https://imgur.com/a/NB1RcVShttps://imgur.com/a/nz5lvIw

带填充: https://imgur.com/a/Ak6CvlXhttps://imgur.com/a/hqLlxBr

<form id="email">
<div class="form-group" id="form-name">
    <label for="name-field">Name</label>
    <input type="text" name="name-field" id="name-field" required>
</div>
<div class="form-group" id="form-address">
    <label for="address-field">Email Address</label>
    <input type="text" name="address-field" id="address-field" required>
</div>
<div class="form-group" id="form-message">
    <label for="message-field">Message</label>
    <textarea name="message-field" id="message-field" cols="32" rows="8" required></textarea>
</div>
<button id="send-button" type="submit" form="email" name="send-it">Send it</button>

和CSS:

#email {
    display: grid;
    grid-gap: 2rem;
    grid-template-areas:
    "name address"
    "message message"
    "send send";
    grid-template-columns: 1fr 1fr;
    justify-items: start;
    margin: 1rem auto 0 auto;
    width: 80%;
}

#form-name {
    grid-area: name;
}

#form-address {
    grid-area: address;
}

#form-message {
    grid-area: message;
}

.form-group * {
    display: block;
}

#form-name, #form-address, #form-message {
    width: 100%;
}

#name-field, #address-field, #message-field {
    width: 100%;
}

#name-field, #address-field, #message-field {
    padding: 0.75rem 1.5rem;
}

2 个答案:

答案 0 :(得分:0)

将此添加到代码顶部

*{
padding: 0px;
margin: 0px;
box-sizing: border-box;
}

答案 1 :(得分:0)

#name-field, #address-field, #message-field {
    padding: 10px;
}

或15px(如果要关闭的话)