无法使用CSS Grid定位HTML图例标签

爷爷

问题

由于可访问性的原因,我有一个包含多个字段集和图例标记的表单。我希望图例标签位于输入字段下方。由于我将CSS Grid用于该字段集,因此使其工作(在firefox上)的唯一方法是赋予图例标签绝对的位置。

在其他浏览器(例如Chrome和Edge)中,这似乎无法正确呈现。我究竟做错了什么?为什么我似乎无法使用CSS Grid放置图例标签?

fieldset {
  display: grid;
  grid-template-columns: minmax(max-content, 12vw) auto;
  grid-template-rows: auto auto;
  
  position: relative;
  padding-bottom: 2em;
}

fieldset legend {
  position: absolute;
  margin: 0;
  padding: 0;
  
  /**
   * Suggested by user Kamel
   * AFAIK legend is styled a block element by default.
   * It definitely is for Firefox
   */
  display: block;
  
  grid-column: 2 / 3;
  grid-row: 2 / 3;
}
<fieldset>
<legend>An accessible description</legend>
<label>Field</label>
<input type="text">
</fieldset>

<fieldset>
<legend>An accessible description</legend>
<label>Field</label>
<input type="text">
</fieldset>

Firefox中的屏幕截图(这是我想要实现的)

Chrome中的屏幕截图

到目前为止的研究

MDN说:

<legend>元素可以样式设置,但控制其放置可能有些棘手。默认情况下,它始终位于<fieldset>其父对象的顶部边框上方,位于左上角附近。要将其放置在其他位置,例如在字段集中的某个位置或左下角附近,您需要依靠定位。

https://developer.mozilla.org/zh-CN/docs/Learn/Forms/Styling_web_forms

但这似乎没有在任何地方提到CSS Grid表示它行不通。为什么不呢?它也适用于所有其他元素。

斯瑞

问题不在于<legend>而是<fieldset>在chrome中无法使用as网格。

请参阅:<fieldset>上的网格布局... chrome上的bug?

所以,你需要添加一个网格 wrapper<fieldset>

.grid-container {
  display: grid;
  grid-template-columns: minmax(max-content, 12vw) auto;
  grid-template-rows: auto auto;
  position: relative;
  padding-bottom: 2em;
}

fieldset legend {
  position: absolute;
  margin: 0;
  padding: 0;
  /**
   * Suggested by user Kamel
   * AFAIK legend is styled a block element by default.
   * It definitely is for Firefox
   */
  /* display: block; */
  grid-column: 2 / 3;
  grid-row: 2 / 3;
}
<fieldset>
  <div class="grid-container">
    <legend>An accessible description</legend>
    <label>Field</label>
    <input type="text">
  </div>
</fieldset>

<fieldset>
  <div class="grid-container">
    <legend>An accessible description</legend>
    <label>Field</label>
    <input type="text">
  </div>
</fieldset>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

html和css表单标签定位

来自分类Dev

无法在HTML中使用CSS

来自分类Dev

CSS - Calc 无法使用固定位置

来自分类Dev

没有 html 元素标签,无法使用 css 选择文本

来自分类Dev

如何将CSS ID定位到特定的HTML标签

来自分类Dev

CSS无法在Html.ActionLink上使用

来自分类Dev

我的CSS网格无法使用我的HTML

来自分类Dev

通用x轴标签和图例在底部使用grid.arrange

来自分类Dev

如何使用xpath定位非标准html标签?

来自分类Dev

如何使用xpath定位非标准html标签?

来自分类Dev

使用JQuery根据标题标签定位html元素

来自分类Dev

CSS标签的麻烦。无法编辑html

来自分类Dev

无法使用CSS格式化html表单元素(标签和输入)

来自分类Dev

使用CSS定位html元素的最佳做法

来自分类Dev

使用CSS定位html元素的最佳做法

来自分类Dev

如何使用CSS定位HTML区域地图

来自分类Dev

无法使用cakePHP html helper添加css版本

来自分类Dev

HTML CSS对齐技巧无法与angularJS结合使用

来自分类Dev

CSS-HTML样式元素无法使用样式

来自分类Dev

HTML CSS对齐技巧无法与angularJS结合使用

来自分类Dev

无法使用HTML / CSS和jQuery创建导航菜单

来自分类Dev

无法使用CSS对齐HTML和SVG元素

来自分类Dev

如何使用CSS正确覆盖无法访问的HTML内容?

来自分类Dev

无法使用 css/html 并排放置图像和文本

来自分类Dev

HTML和CSS无法正确定位div

来自分类Dev

使用CSS定位第一个标签

来自分类Dev

HTML / CSS定位

来自分类Dev

CSS / HTML定位

来自分类Dev

如何定位图例图表标签?