表单中列表项的样式

时间:2018-09-21 05:37:29

标签: html css

我在样式<fieldset>时遇到困难,<li> <label>foo</label> <input type='text'> </li> <li> <label>baz</label> <textarea></textarea> </li>是表单中的编号列表项。

我已经创建了一个表格,并将每个问题都设为有序列表中的一个项目,如下所示:

<label>

现在,我尝试为每个列表元素设置样式,以使每个列表编号和问题(<fieldset>元素)一起显示在一行上,而交互式小部件显示在下面的一行上。对于由内联元素组成的问题,这很容易,但是我遇到了与<fieldset>组合在一起的复选框和单选按钮的麻烦。

我删除了<legend>list-style-position元素上的默认样式,以尝试使这些问题看起来像表单中的其他列表项。但是现在我得到了一种非常奇怪的行为,其中列表编号与底部输入选项(而不是标签)对齐。

更改<input>并没有帮助,而随​​意更改<label><ol>样式似乎也没有影响。我尝试将display: flex更改为<li>并以此做一些事情,但是那也没做。

已经起作用了,所有的字段集元素都被删除了,但是按钮和问题之间没有语义关系,我知道这对屏幕阅读器很重要。我敢肯定,我也可以摆脱所有的编号,但是我不想。在开始编写此表单之前,我已经进行了查找,没有什么可说的是<fieldset>中的嵌套元素是一个问题。

我发现this blogpublic function login(Request $request) { $credentials = $request->only(['email', 'password']); try { if (!$token = JWTAuth::attempt($credentials)) { return response()->json(['error' => 'Unauthorized'], 401); } catch (JWTException $e) { // something went wrong return response()->json(['error' => 'could_not_create_token'], 500); } } return $this->respondWithToken($token); } 样式的指南,但并没有帮助我解决问题。

这是一个小提琴,它演示了我的问题(Q1和Q3展示了我想要的效果;问题2出现了奇怪的样式问题)。

https://jsfiddle.net/ocfk23un/45/

基本上,我想解决这个问题,或者在放弃使用字段集之前想知道为什么会这样。

1 个答案:

答案 0 :(得分:2)

您应该继续使用所拥有的HTML,因为它在语义上是正确的。 您只需要在vertical-align: top;样式中添加fieldset

fieldset {
  display: inline;
  padding: 0;
  border: 0;
  vertical-align: top;
}