css3模拟单选框

在这里插入图片描述
我们可以用个简单的span标签(当然你也可以用其他标签)来模拟原生的单选框,大概原理就是,先使用label标签将原生单选框、用于模拟单选框的span标签以及文字包起来,并将原生单选框隐藏,然后再使用:checked伪类和+选择器来给span标签加选中样式。上面GIF图中美化单选框的具体代码如下:

作者:前端王睿
链接:https://www.jianshu.com/p/9f5ec459f893
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

<!DOCTYPE html>
<html lang="zh">

	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<meta http-equiv="X-UA-Compatible" content="ie=edge" />
		<title>Document</title>
		<style type="text/css">
		/*label {
			float: left;
			margin-right: 10px;
			overflow: hidden;
			position: relative;
		}
		label input {
			float: left;
			position: absolute;
			left: -50px;
			right: -50px;
		}
		label span {
			/*display: block;
			float: left;
			width: 50px;
			height: 50px;
			border: 1px solid #000;
		}
		input:checked~span {
			background-color: #1C7ED6;
		}*/
		 p {
			display: inline-block;
		}
		label {
			position: relative;
			padding: 0 10px 0 25px;
			cursor: pointer;
		}
		label input {
			display: none;
		}
		label span {
			position: absolute;
			left: 0;
			top: 0;
			bottom: 0;
			width: 16px;
			height: 16px;
			margin: auto;
			border: 1px solid #ccc;
			border-radius: 100%;
		}
		label span:after {
			content: '';
			position: absolute;
			top: 0;
			bottom: 0;
			left: 0;
			right: 0;
			width: 6px;
			height: 6px;
			margin: auto;
			border-radius: 100%;
			background: #fff;
			-webkit-transform: scale(0);
			transform: scale(0);
			-webkit-transition: all .3s;
			transition: all .3s;
		}
		label input:checked+span {
			border-color: #1db0fc;
			background: #1db0fc;
		}
		label input:checked+span:after {
			-webkit-transform: scale(1);
			transform: scale(1);
		}
		</style>
	</head>

	<body>
		<!--<label>
		<input type="radio" name="tab"/>
		<span></span>
	</label>
	<label>
		<input type="radio" name="tab"/>
		<span></span>
	</label>
	<label>
		<input type="radio" name="tab"/>
		<span></span>
	</label>-->
		<div class="form-group">
			<p>性别:</p>
			<label><input name="sex" type="radio" checked /><span></span>男</label>
			<label><input name="sex" type="radio" /><span></span>女</label>
		</div>
	</body>

</html>

以上代码可能有几个地方需要解释一下:
① label标签可以将文字和表单控件绑定在一起,当你点击其中的文字时,与之绑定的表单控件将会相应获取焦点(单选框与复选框是选中该选项);
② :checked伪类选择器是用于筛选被选中的单选框或复选框,需要注意的是,该选择器最低只兼容到IE9;
③ +选择器是用于筛选紧邻其后的兄弟元素,比如示例代码中就是筛选被选中的单选框之后紧邻的span元素。既然这里提到了,就再简单地说说与之相似的~选择器,该选择器是用于筛选其后的所有兄弟元素,这两个选择器可能平时用得比较少,但是有时候用处还是挺大的。
好了,以上就是使用纯CSS来模拟实现单选框的美化,当然复选框的美化原理其实是一样的,这里就不再赘述了。

作者:前端王睿
链接:https://www.jianshu.com/p/9f5ec459f893
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

猜你喜欢

转载自blog.csdn.net/weixin_43779782/article/details/89948494
今日推荐