CSS网格的高级复选框样式

CSS网格布局模块,不仅可以解决的布局问题的一个庞大的,而且我们一直在一些很好的旧顽强问题处理时间长,如造型复选框标签

虽然是一个相对简单的方法,以风格标签当它出现的复选框,就当标签出现不是那么容易之前

没有CSS网格的复选框样式

自从我们在某处阅读有关标签的内容之后,开发人员就一直为复选框添加样式标签。该技术是CSS可以拥有的强大动力的主要和古老的例子之一。

这是您可能已经熟悉的代码,它选中的复选框标签设置样式

的HTML
1个
2
<input type="checkbox">
<label>label for the checkbox</label>
的CSS
1个
2
3
input:checked + label {
  /* style me */
}

一个风格的标签复选框可能是这样的(不过,你可以使用其他的样式规则以及):

CSS网格的高级复选框样式

上面的CSS代码使用该键标记的相邻同级组合器+。当复选框处于:checked状态,一个元件之后(通常是一个标签)可使用此方法的样式。

如此简单有效的技术!什么能可能出错呢?没什么-直到您要在复选框之前显示标签。

相邻的同级组合器选择下一个元素;这意味着标签必须位于HTML源代码中的复选框之后

因此,要使标签出现屏幕上的所属复选框之前,我们不能仅将其移动到源代码中该复选框之前,因为CSS中不存在以前的同级选择器

剩下的只有一个选择:使用或或另一个具有某种动能功能的CSS属性来重新定位复选框和标签,以便标签显示在屏幕上复选框的左侧。transformpositionmargin

传统方法的问题

前面提到的技术没有什么大不了的,但是在某些情况下可能效率很低。我指的是复选框和标签的重新排列位置不再起作用的情况。

例如,考虑响应式。您可能必须根据显示的设备调整复选框的大小或位置。发生这种情况时,您也需要重新定位标签,因为不会因复选框的重新定位/调整大小而对标签进行自动重新对齐。

如果我们可以为复选框和标签提供一些可靠的布局,而不是将它们粗略地放置在页面,则可以消除此缺点。

但是,几乎所有布局系统(例如表或列)都要求您在源代码中的复选框之前添加标签,以使其在屏幕上以相同的方式显示。这是我们不希望做的事情,因为标签上的下一个元素选择器将停止工作。

另一方面,CSS Grid是一种布局系统,依赖于源代码中元素的位置/顺序

网格布局的重新排序功能有意影响视觉渲染,保留语音顺序和基于源顺序的导航。这使作者可以在不影响源顺序的情况下操纵视觉呈现…– CSS网格布局模块第1层,W3C

因此,CSS网格是对出现 checkbox 之前的标签进行样式设置的理想解决方案。

CSS网格的复选框样式

让我们从HTML代码开始。复选框和标签的顺序将与以前相同。我们只是将它们都添加到网格中。

的HTML
1个
2
3
4
<div id="cbgrid">
  <input type="checkbox">
  <label>label for the checkbox</label>
</div>

随附的CSS如下:

的CSS
1个
2
3
4
5
6
7
8
9
10
11
#cbgrid {
  display: grid;
  grid-template-areas: "left right";
  width: 150px;
}
input[type=checkbox] {
  grid-area: right;
}
label {
  grid-area: left;
}

我已经写了一篇有关该主题详细文章,因此我不会深入介绍CSS网格的工作原理,您可以在此处阅读。但是,有一些基础知识:该display: grid属性将元素转换为网格容器,grid-area标识元素所属的网格区域,并grid-template-areas形成由不同网格区域组成的网格布局。

在上面的代码中,有两个网格区域"left""right"。它们组成一个网格行的两列。复选框属于该"right"区域,标签属于"left"。这里是他们如何看待在屏幕上

CSS网格的高级复选框样式

由于我们没有更改复选框和标签在源代码中的相对位置,因此我们仍然可以使用相邻的同级组合器

的CSS
1个
2
3
input:checked + label {
  /* style me */
}

注意网格项总是被阻塞的 ; 它与周围的框(称为网格级框)一起出现。如果您不希望这样(例如,用于标签),则在该项目上放置一个包装纸(将其包装在另一个元素中),然后将该包装纸放入网格区域

就是这样,伙计们。CSS网格有望帮助您确定那些厚脸皮复选框的布局。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/259412.html

(0)
上一篇 2022年5月21日
下一篇 2022年5月21日

相关推荐

发表回复

登录后才能评论