使用CSS3,我们可以自定义Web演示文稿,使其几乎成为我们想要的任何内容。 如标题所示,在本文中,我们将自定义checkbox
和radio
输入的外观。
这两种类型的输入都是一些样式元素,这些样式元素在样式上有些棘手(以在不同平台上实现相同的外观)– Windows , OS X和Linux具有自己的设计来显示这些表单元素。
如果要定制这两个表单元素,那么本教程适合您。 因此,让我们开始吧。
HTML标记
我们首先创建一个新HTML文档。 HTML结构如下。
<div class="radio">
<input id="male" type="radio" name="gender" value="male">
<label for="male">Male</label>
<input id="female" type="radio" name="gender" value="female">
<label for="female">Female</label>
</div>
<div class="checkbox">
<input id="check1" type="checkbox" name="check" value="check1">
<label for="check1">Checkbox No. 1</label>
<br>
<input id="check2" type="checkbox" name="check" value="check2">
<label for="check2">Checkbox No. 2</label>
</div>
CSS
我们已经完成了HTML结构,现在让我们为这些<input>
设置样式。 我们将首先自定义无线电输入类型。 想法是将默认的操作系统设计更改为以下屏幕截图所示。
样式单选输入
首先,我们将标签光标指向一个指针,以指示它是可单击的,然后插入其他装饰样式。
label {
display: inline-block;
cursor: pointer;
position: relative;
padding-left: 25px;
margin-right: 15px;
font-size: 13px;
}
然后,我们将隐藏输入的radio
类型。
input[type=radio] {
display: none;
}
然后,我们用伪元素:before
替换了隐藏的输入radio
类型。
label:before {
content: "";
display: inline-block;
width: 16px;
height: 16px;
margin-right: 10px;
position: absolute;
left: 0;
bottom: 1px;
background-color: #aaa;
box-shadow: inset 0px 2px 3px 0px rgba(0, 0, 0, .3), 0px 1px 0px 0px rgba(255, 255, 255, .8);
}
上面的样式实际上也适用于复选框输入类型。 唯一的区别是无线电输入类型是一个圆。 为了达到这种效果,我们添加了半径为高度和宽度一半的border-radius
。
.radio label:before {
border-radius: 8px;
}
在此阶段,这是我们的radio
输入类型的外观。
现在,当选中此输入时,我们在其中添加了一个小圆圈。 我们将使用CSS3 :checked
伪类以及Bullet HTML字符( •
)。 此项目符号将通过content属性交付,因此我们需要使用Entity Conversion Tool将此CSS字符转换为CSS。
input[type=radio]:checked + label:before {
content: "\2022";
color: #f3f3f3;
font-size: 30px;
text-align: center;
line-height: 18px;
}
因此,当选中或选择输入单选按钮(隐藏)时,将出现一个较小的圆圈,如以下屏幕截图所示。
另外,您也可以使用图像,并通过:before
我们在前面添加的伪元素中的background-image
属性显示它。 我没有使用它,因为我倾向于不使用图像。
样式复选框输入
现在,我们将样式添加到checkbox
输入类型。 首先,我们还隐藏了输入元素。
input[type=checkbox] {
display: none;
}
由于我们将输入替换为:before
伪元素之前,因此我们现在只需添加边框半径。
.checkbox label:before {
border-radius: 3px;
}
接下来,我们将以与radio
输入类型相同的方式添加选中的符号。 这次我们使用复选标记HTML字符( ✓
)。
input[type=checkbox]:checked + label:before {
content: "\2713";
text-shadow: 1px 1px 1px rgba(0, 0, 0, .2);
font-size: 15px;
color: #f3f3f3;
text-align: center;
line-height: 15px;
}
这就是我们的复选框现在的样子。
最终思想
这只是自定义checkbox
和radio
输入类型的一种技术,当然您可以增强外观以使其更震撼。 另外,由于我们使用CSS3 :checked
,因此该技术仅在支持它的浏览器中有效。 因此,如果您愿意,还可以使用jQuery Plugin 。
最后,您可以查看演示并从下面的链接下载源代码。