怎么给单选框做css

我们都知道,input的单选框是一个小圆框,不能直接更改样式。但是我们在很多网页中看到的单选框样式可不仅限于默认的那个样式(看上去没啥新意,也比较丑)。那么,接下来我将介绍下如何实现该功能。

怎么给单选框做css

首先,让我们来看下单选框的实现:

在html中的input元素中,将其type属性值设置为radio,即为单选框,此时只需将要设置的单选选项的name属性设置成一致的,即可实现单选功能。

<input type="radio" name="gender" value="male">男
<input type="radio" name="gender" value="female">女

要实现单选框样式改变,只需以下几步:(推荐学习:CSS视频教程

1、首先给出input的type属性为radio,设置相同name。同时用label将相应字段关联上该input属性(当label的for属性值与input的id属性值相同时 ,即可关联。关联上之后,点击字段即可选中相应的单选框)。

html中:   

<div>
    <input type="radio" name="paixu" id="paixu1" checked>
    <label for="paixu1" style="cursor:pointer">按热门排序</label>
    <input type="radio" name="paixu" id="paixu2">
    <label for="paixu2" style="cursor:pointer">按时间排序</label>
    <input type="radio" name="paixu" id="paixu3">
    <label for="paixu3" style="cursor:pointer">按评价排序</label>
</div>

2、设置input的display属性为none,将比较丑的那个框去掉。然后用伪元素添加相应的框。即在label中,用::before添加一个空心圆圈。

div>input{
    display: none;
}
div>label{
    position: relative;
    margin-right: 34px;
}
div>label::before{
    display: inline-block;
    content: "";
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid rgb(219, 219, 219);
    margin-right: 6px;
    vertical-align: bottom;
}

3、在input单选框在选中的时候,原有before的单选框变为红色实心框,同时添加label::after为白色圆,并将其定位到before的红色实心框中间。从而达到重叠的效果,实现红色圆框+白色圆心的效果。

div>input:checked+label::before{
    background-color: rgb(239, 66, 56);
}
div>input:checked+label::after{
    display: inline-block;
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    position: absolute;
    left: 6px;
    bottom: 6px;
    background-color: white;
}

是不是挺简单的呢?通过这样的方法还可以设置很多样式呢。

完整代码如下:

<!DOCTYPE html>
<html>
 
<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>
div>input{
    display: none;
}
div>label{
    position: relative;
    margin-right: 34px;
}
div>label::before{
    display: inline-block;
    content: "";
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 1px solid rgb(219, 219, 219);
    margin-right: 6px;
    vertical-align: bottom;
}
div>input:checked+label::before{
    background-color: rgb(239, 66, 56);
}
div>input:checked+label::after{
    display: inline-block;
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    position: absolute;
    left: 6px;
    bottom: 6px;
    background-color: white;
  
}
</style>
</head>
<body> 
            <div>
                <input type="radio" name="paixu" id="paixu1" checked>
                <label for="paixu1" style="cursor:pointer">按热门排序</label>
                <input type="radio" name="paixu" id="paixu2">
                <label for="paixu2" style="cursor:pointer">按时间排序</label>
                <input type="radio" name="paixu" id="paixu3">
                <label for="paixu3" style="cursor:pointer">按评价排序</label>
            </div>
</body>
 
</html>

效果:

2.jpg

更多CSS相关技术文章,请访问CSS3答疑栏目进行学习!

以上就是怎么给单选框做css的详细内容,更多请关注html中文网其它相关文章!

赞(0) 打赏
未经允许不得转载:html中文网首页 » CSS3 答疑

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

前端开发相关广告投放 更专业 更精准

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏