具有多列的表单,无表格
如何在屏幕上定位具有多个字段的复杂表单?
How to position a complex form with multiple fields in line across the screen?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在屏幕上定位具有多个字段的复杂表单?
How to position a complex form with multiple fields in line across the screen?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(11)
为什么人们如此热衷于避开餐桌?
表格并未被弃用,在显示逻辑上属于表格的内容时应使用表格。
如果您的表单按逻辑分组以便表格直观,请使用表格。
始终思考:“实现这一结果的最干净、最简单、最可维护的方法是什么。”
如果您想要具有可变数量列的流体形式,请忽略这一点。
Why are people so hell-bent on avoiding tables?
Tables are not deprecated and should be used when displaying content which logically belongs in a table.
If your form is logically grouped such that a table would be intuitive, please use a table.
Always be thinking: "What's the cleanest, simplest, most maintainable way to achieve this result."
If you want a fluid form with a variable number columns, then disregard this.
喜欢稍微语义化的方式,使用 定义列表:
我更 你的 CSS:
这应该会生成一个位于页面中心的表单,标签位于左列,输入位于右列
I prefer the slightly-more-semantic way, using a definition list:
Then your CSS:
This should produce a form centered in the page, with the labels in the left column and the inputs in the right
有许多不同的方法可以做到这一点。 这都是一个偏好问题。 我通常做的是有一个包含所有行的包装器 div,然后每行有一个包含标签、输入和验证器的 div 块。 您可以使用 line-height CSS 属性来帮助您进行垂直对齐。 示例:
希望有帮助。
There are many different ways to do this. It's all a matter of preference. What I typically do is have a wrapper div that contains all of the rows, and then a div block per row that contains the label, input, and validator. You can use the line-height CSS property to help you with vertical alignment. Example:
Hope that helps.
在查看了许多不同的解决方案之后,我发现此页面上的示例(特别是“致命”中的示例?)是一些最有帮助的。 但广泛的
标签确实让我有点困扰。 所以这里有一些可能会喜欢的修改。 另外,您会发现某种“包装器”或“字段集”样式对于防止浮动影响其他 HTML 非常必要。 请参阅上面的示例。
After looking at many many different solutions, I found the examples on this page (particularly the one from 'Fatal'?) some of the most helpful. But the extensive
and tags did bother me a bit. So here is a little bit of a modification that some may like. Also, you find some sort of 'wrapper' or 'fieldset' style very necessary to keep the float from affecting other HTML. Refer to examples above.
这可以使用 CSS 通过将“display”属性设置为“inline”来完成(因为默认情况下,表单元素是块级元素)。
That would be done using CSS by setting the "display" property to "inline" (since form elements are, by default, block level elements).
搜索“没有表格的布局”。 许多网站都描述了使用 CSS 进行格式化。 这是一个简单的介绍: http://www.htmlgoodies.com/beyond/ css/article.php/3642151
Do a search for "layouts without tables". Many sites describe formatting with CSS. Here is a simple intro: http://www.htmlgoodies.com/beyond/css/article.php/3642151
我建议您blueprint CSS 框架。 快速浏览一下演示页面。
I suggest you blueprint CSS framework. Have a quick look at the demo page.
当我需要设计相当复杂的表单时,这就是我通常使用的方法。
HTML:
CSS:
我通过 Safari hacks 省略了几行 CSS。 您可以查看此代码的实时版本。
This is what I usually use when I need to design pretty complex forms.
HTML:
CSS:
I omitted couple lines of CSS with Safari hacks. You can check out live version of this code.
佩斯·凯尔·法里斯 (Pace KyleFarris),但我不得不给 Ben S 投一票,因为他有勇气提到桌子。 只需查看本页和互联网上的各种 CSS 解决方案即可解决一个极其简单的问题。 CSS 有一天可能会成为一种很好的解决方案,但目前复制 table 标签提供的简单行和列网格是极其复杂的。 我带着对表格之类的东西的偏见度过了无数毫无结果的时间。 我们为什么要这样对自己?
Pace KyleFarris but I just had to give Ben S a vote for having the guts to mention tables. Just look at the variety of CSS solutions on this page and around the internet for a ridiculously simple problem. CSS may one day become a good solution, but for the time being replicating the simple row and column grid that the table tag provides is extremely complex. I have spent countless fruitless hours with this prejudice against tables for things like a form. Why do we do this to ourselves?
默认情况下,输入字段是内联的。 因此,您可以简单地使用将它们排列起来,而无需
如果您希望它们正确排列,另一种选择如下:
input fields, by default, are inline. Therefore, you can simply use line them up without
Another option if you want them lined up correctly is as follows:
我更喜欢使用 fieldset 对所有元素进行分组,并使用 p 对每个表单字段进行分组。
I prefer to use fieldset to group all elements and p for each form field.