CSS复选框样式高级自定义

该css网格布局模块,不仅可以解决的布局问题的一个庞大的,而且我们一直在一些很好的旧顽强问题处理时间长,如造型复选框标签。
虽然没有样式的标签时,它会出现一个相对简单的方法后的复选框,就当标签出现不是那么容易之前它。
另请参阅:?css网格布局fr单元指南
没有css网格的复选框样式自从我们在某处阅读有关标签的内容之后,开发人员就一直在为复选框添加样式标签。该技术是css可以拥有的强大动力的主要和古老的例子之一。
这是您可能已经熟悉的代码,它在选中的复选框后为标签设置样式:
的html1个
2
<input type=checkbox>
<label>label for the checkbox</label>
的css1个
2
3
input:checked + label {
/* style me */
}
一个风格的标签后复选框可能是这样的(不过,你可以使用其他的样式规则以及):
上面的css代码使用该键标记的相邻同级组合器+。当复选框处于:checked状态,一个元件之后它(通常是一个标签)可使用此方法的样式。
如此简单有效的技术!什么能可能出错呢?没什么-直到您要在复选框之前显示标签。
相邻的同级组合器选择下一个元素;这意味着标签必须位于html源代码中的复选框之后。
因此,要使标签出现在屏幕上的所属复选框之前,我们不能仅将其移动到源代码中该复选框之前,因为css中不存在以前的同级选择器。
剩下的只有一个选择:使用或或另一个具有某种动能功能的css属性来重新定位复选框和标签,以便标签显示在屏幕上复选框的左侧。transformpositionmargin
传统方法的问题前面提到的技术没有什么大不了的,但是在某些情况下可能效率很低。我指的是复选框和标签的重新排列位置不再起作用的情况。
例如,考虑响应式。您可能必须根据显示的设备调整复选框的大小或位置。发生这种情况时,您也需要重新定位标签,因为不会因复选框的重新定位/调整大小而对标签进行自动重新对齐。
如果我们可以为复选框和标签提供一些可靠的布局,而不是将它们粗略地放置在页面上,则可以消除此缺点。
但是,几乎所有布局系统(例如表或列)都要求您在源代码中的复选框之前添加标签,以使其在屏幕上以相同的方式显示。这是我们不希望做的事情,因为标签上的下一个元素选择器将停止工作。
另一方面,css grid是一种布局系统,不依赖于源代码中元素的位置/顺序。
网格布局的重新排序功能有意仅影响视觉渲染,保留语音顺序和基于源顺序的导航。这使作者可以在不影响源顺序的情况下操纵视觉呈现…–?css网格布局模块第1层,w3c
因此,css网格是对出现在?checkbox?之前的标签进行样式设置的理想解决方案。
css网格的复选框样式让我们从html代码开始。复选框和标签的顺序将与以前相同。我们只是将它们都添加到网格中。
的html1个
2
3
4
<div id=cbgrid>
<input type=checkbox>
<label>label for the checkbox</label>
</div>
随附的css如下:
的css1个
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。这里是他们如何看待在屏幕上:
由于我们没有更改复选框和标签在源代码中的相对位置,因此我们仍然可以使用相邻的同级组合器:
的css1个
2
3
input:checked + label {
/* style me */
}
注意网格项总是被阻塞的?;?它与周围的框(称为网格级别框)一起出现。如果您不希望这样(例如,用于标签),则在该项目上放置一个包装纸(将其包装在另一个元素中),然后将该包装纸放入网格区域。
就是这样,伙计们。css网格有望帮助您确定那些厚脸皮复选框的布局。
上一个:关于网站伪静态化的探讨
下一个:北京专业网站建设教你怎么进行高端网站建设?
商州网站建设,商州做网站,商州网站设计