如何为我的首个手写form表单设置正确的响应式flex布局格式
表单Flex布局修复方案
核心问题:
- 原有代码未对「标签+对应输入框」做分组,flex排布时会出现标签和输入框错行的问题
- 输入框未做宽度适配,提交按钮也没有单独设置对齐规则,导致样式不符合预期
修改后的HTML代码
<section> <div class="contact_right"> <form class="contact_form" id="contact_form"> <!-- 每组标签+输入框增加外层分组容器 --> <div class="form_item"> <div class="form_label"> <label for="contact_name">Full Name:</label> </div> <div class="form_input_wrap"> <input class="contact_input" type="text" id="contact_name" name="contact_name" placeholder="Name"> </div> </div> <div class="form_item"> <div class="form_label"> <label for="contact_email">Email Address:</label> </div> <div class="form_input_wrap"> <input type="email" id="contact_email" name="contact_email" placeholder="Email"> </div> </div> <div class="form_item"> <div class="form_label"> <label for="contact_number">Mobile Number:</label> </div> <div class="form_input_wrap"> <input type="tel" id="contact_number" name="contact_number" placeholder="Mobile Number"> </div> </div> <div class="form_item"> <div class="form_label"> <label for="contact_message">Message:</label> </div> <div class="form_input_wrap"> <textarea rows="4" cols="40" id="contact_message" name="contact_message" value=""></textarea> </div> </div> <!-- 提交按钮增加外层容器控制对齐 --> <div class="form_submit_wrap"> <button type="submit">Submit</button> </div> </form> </div> </section>
修改后的CSS代码
/* Contact Page Styling */ .contact_left { flex-direction: row; flex: 1; align-content: center; text-align: center; } .contact_right { display: flex; flex-direction: row; flex: 1; justify-content: center; } .contact_form { display: flex; flex-direction: column; padding: 0; max-width: 90%; margin: auto; gap: 16px; /* 控制表单项行间距 */ } /* 表单项分组样式,桌面端横向排布 */ .form_item { display: flex; flex-direction: row; align-items: center; gap: 12px; /* 标签和输入框之间的间距,可自行调整 */ } .form_label { text-align: right; flex: 0 0 120px; /* 固定标签宽度,避免不同长度标签排版混乱,可根据需求调整数值 */ } .form_input_wrap { flex: 1; /* 输入框占剩余全部宽度 */ } .contact_input, textarea { width: 100%; box-sizing: border-box; /* 避免内边距撑宽输入框 */ } /* 提交按钮右对齐 */ .form_submit_wrap { width: 100%; text-align: right; } @media screen and (max-width: 1024px) { section { width: 80%; } } @media screen and (max-width: 800px) { section { flex-direction: column; text-align: center; width: 100%; margin: 2px; } .contact_form { justify-content: flex-start; align-content: flex-start; width: 100%; box-sizing: border-box; padding: 0 16px; } /* 移动端表单项改为纵向排布 */ .form_item { flex-direction: column; align-items: flex-start; width: 100%; } .form_label { text-align: left; flex: unset; width: 100%; } .form_input_wrap { width: 100%; } }
内容的提问来源于stack exchange,提问作者Beau Barbera
相关产品推荐
相关产品推荐

