我正在创建一个包含必填字段的表单.要根据需要标记这些,我将星号(*)作为:: before元素并将其向右浮动,使其位于字段的右上角.
我遇到的问题是这些字段中的一些是使用CSS网格定位的,当我将一个:: before元素添加到网格时,它被视为另一个网格项并将所有内容推送到新的网格行.
为什么CSS网格将:: before元素视为另一个网格项?如何将星号定位为输入元素?
这是基本的HTML / CSS:
html { width: 75%; } ul { list-style: none; } input { width: 100% } .grid { display: grid; grid-template-columns: .33fr .33fr .33fr; } li.required::before { content: '*'; float: right; font-size: 15px; }
<ul> <li class="required"> <input type="text"> </li> <li class="grid required"> <p>one</p> <p>two</p> <p>three</p> </li> <li class="required"> <input type="text"> </li> </ul>
解决方法
伪元素被认为是网格容器中的子元素(
just like in a flex container).因此,它们具有网格项的特征.
您始终可以使用绝对定位从文档流中删除网格项.然后使用CSS偏移属性(左,右,上,下)移动它们.
这是一个基本的例子:
html { width: 75%; } ul { list-style: none; } input { width: 100% } .grid { display: grid; grid-template-columns: 1fr 1fr 1fr; } li { position: relative; } li.required::after { content: '*'; font-size: 15px; color: red; position: absolute; right: -15px; top: -15px; }
<ul> <li class="required"> <input type="text"> </li> <li class="grid required"> <p>one</p> <p>two</p> <p>three</p> </li> <li class="required"> <input type="text"> </li> </ul>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。