我的编程空间,编程开发者的网络收藏夹
学习永远不晚

css怎么改变单选框的颜色

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

css怎么改变单选框的颜色

本篇内容介绍了“css怎么改变单选框的颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

    单选框了解一下

    由于我们的目标是改变单选框颜色,其他外观特征和行为与原来的单选框一致,那么我们就必须先了解单选框原来的外观特征和行为主要有哪些。

    1.外观特征

    1.1.常态样式

    margin:3px3px0px5px;

    border:none0;

    padding:0;

    box-sizing:border-box;

    display:inline-block;

    line-height:normal;

    position:static;

    注意:外观上我们必须要保证布局特性和原生的一致,否则采用自定义单选框替换后很大机会会影响整体的布局,最后导致被迫调整其他元素的布局特性来达到整体的协调,从而扩大了修改范围。

    1.2.获得焦点的样式

    outline-offset:0px;

    outline:-webkit-focu-ring-colorauto5px;

    注意:这里的获取焦点的样式仅通过键盘Tab键才生效,若通过鼠标点击虽然单选框已获得焦点,但上述样式并不会生效。

    1.3.设置为disabled的样式

    color:rgb(84,84,84);

    2.行为特征

    单选框的行为特征,明显就是选中与否,及选中状态的改变事件,因此我们必须保持对外提供change事件。

    另外值得注意的是,当通过键盘的Tab键让单选框获得焦点后,再按下Space键则会选中该单选框。

    有了上述的了解,我们可以开始着手撸代码了!

    少废话,撸代码

    435275490-5bb54e2fc18b1_articlex.png

    上图中左侧就是原生单选框,右侧为我们自定义的单选框。从上到下依次为未选中、选中、获得焦点和disabled状态的样式。

    CSS部分

    label.radio{

   

    margin:3px3px0px5px;

    display:inline-block;

    box-sizing:border-box;

    width:12px;

    height:12px;

    }

    .radio__appearance{

    display:block;

    position:relative;

    box-shadow:0001pxtomato;

    border-radius:50%;

    height:90%;

    width:90%;

    text-align:center;

    }

    label.radio[type=radio]+.radio__appearance::before{

    content:"";

    display:block;

    border-radius:50%;

    width:85%;

    height:85%;

    position:absolute;

    top:50%;

    left:50%;

    transform:translate(-50%,-50%);

    transition:background.3s;

    }

    label.radio[type=radio]:checked+.radio__appearance::before{

    background:tomato;

    }

    label.radio[type=radio][disabled]+.radio__appearance{

    opacity:.5;

    }

    label.radio:focus{

    outline-offset:0px;

    outline:#999auto5px;

    }

   

    label.radio.clicked{

    outline:none0;

    }

   

    label.radioinput{

    display:none;

    }

    HTML部分

    <!--未选中状态-->

    <labelclass="radio"tabindex="0">

    <inputtype="radio"name="a">

    <iclass="radio__appearance"></i>

    </label>

    <br>

    <!--选中状态-->

    <labelclass="radio"tabindex="0">

    <inputtype="radio"name="a"checked>

    <iclass="radio__appearance"></i>

    </label>

    <br>

    <!--disabled状态-->

    <labelclass="radio">

    <inputtype="radio"name="a"disabled>

    <iclass="radio__appearance"></i>

    </label>

    JavaScript部分

    varradios=document.querySelectorAll(".radio")

    radios.forEach(radio=>{

    //模拟鼠标点击后:focus样式无效

    radio.addEventListener("mousedown",e=>{

    vartar=e.currentTarget

    tar.classList.add("clicked")

    varfp=setInterval(function(){

    if(document.activeElement!=tar){

    tar.classList.remove("clicked")

    clearInterval(fp)

    }

    },400)

    })

    //模拟通过键盘获得焦点后,按`Space`键执行选中操作

    radio.addEventListener("keydown",e=>{

    if(e.keyCode===32){

    e.target.click()

    }

    })

    })

    这个实现有3个注意点:

    1、通过label传递鼠标点击事件到关联的input[type=radio],因此可以安心隐藏单选框又可以利用单选框自身特性。但由于label控件自身的限制,如默认不是可获得焦点元素,因此无法传递键盘按键事件到单选框,即使添加tabindex特性也需手写JS来实现;

    2、当tabindex大于等于0时表示该元素可以获得焦点,为0时表示根据元素所在位置安排获得焦点的顺序,而大于0则表示越小越先获得焦点;

    3、由于单选框的display为inline-block,因此单选框将影响linebox高度。当自定义单选框内元素采用inline-block时,若vertical-align设置稍有不慎就会导致内部元素所在的linebox被撑高,从而导致自定义单选框所在的linebox高度变大。因此这里采用将内部元素的display均设置为block的做法,直接让vertical-align失效,提高可控性。

    通过opacity:0实现

    上面我们通过label关联display:none的input[type=radio]从而利用input[type=radio]简化自定义单选框的实现,但依然要手写JS实现按Space键选中的行为特征,有没有另一种方式可以更省事呢?我们只是想让用户看不到原生单选框,那么直接设置为opacity:0不就可以了吗?!

    CSS部分

    .radio{

   

    margin:3px3px0px5px;

    display:inline-block;

    box-sizing:border-box;

    width:13px;

    height:13px;

    }

   

    .radioinput{

    opacity:0;

    position:absolute;

    z-index:1;

    width:100%;

    height:100%;

    }

    .radio__container-box{

    position:relative;

    width:100%;

    height:100%;

    }

    .radio__appearance{

    display:block;

    position:relative;

    box-shadow:0001pxtomato;

    border-radius:50%;

    height:90%;

    width:90%;

    text-align:center;

    }

    .radio[type=radio]+.radio__appearance::before{

    content:"";

    display:block;

    border-radius:50%;

    width:85%;

    height:85%;

    position:absolute;

    top:50%;

    left:50%;

    transform:translate(-50%,-50%);

    transition:background.3s;

    }

    .radio[type=radio]:checked+.radio__appearance::before{

    background:tomato;

    }

    .radio[type=radio][disabled]+.radio__appearance{

    opacity:.5;

    }

    .radio:focus-within.radio__appearance{

    outline-offset:0px;

    outline:#999auto5px;

    }

   

    .radio.clicked.radio_appearance{

    outline:none0;

    }

    HTML部分

    <!--未选中状态-->

    <spanclass="radio">

    <spanclass="radio__container-box">

    <inputtype="radio"name="a">

    <iclass="radio__appearance"></i>

    </span>

    </span>

    <br>

    <!--选中状态-->

    <spanclass="radio">

    <spanclass="radio__container-box">

    <inputtype="radio"name="a"checked>

    <iclass="radio__appearance"></i>

    </span>

    </span>

    <br>

    <!--disabled状态-->

    <spanclass="radio">

    <spanclass="radio__container-box">

    <inputtype="radio"name="a"disabled>

    <iclass="radio__appearance"></i>

    </span>

    </span>

    JavaScript部分

    varradios=document.querySelectorAll(".radio")

    radios.forEach(radio=>{

    //模拟鼠标点击后:focus样式无效

    radio.addEventListener("mousedown",e=>{

    vartar=e.currentTarget

    tar.classList.add("clicked")

    varfp=setInterval(function(){

    if(!tar.contains(document.activeElement){

    tar.classList.remove("clicked")

    clearInterval(fp)

    }

    },400)

    })

    })
css怎么改变单选框的颜色

“css怎么改变单选框的颜色”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

css怎么改变单选框的颜色

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

css怎么改变svg颜色

这篇文章主要介绍css怎么改变svg颜色,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一种定义样
2023-06-14

css改变边框颜色对的方法

小编给大家分享一下css改变边框颜色对的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在css中可以通过border-color属性设置四条边框的颜色,此属性
2023-06-14

css怎么改变字体颜色

这篇“css怎么改变字体颜色”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“css怎么改变字体颜色”文章吧。1.首先,在页面中
2023-07-04

css怎么改变图片的颜色

这篇文章给大家分享的是有关css怎么改变图片的颜色的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css的基本语法是什么css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改
2023-06-14

css怎么改变图片颜色

小编给大家分享一下css怎么改变图片颜色,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要
2023-06-14

css怎么改变png图片的颜色

这篇文章将为大家详细讲解有关css怎么改变png图片的颜色,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css中可使用filter属性配合invert()、grayscale()、sepia()或hue-
2023-06-14

怎么使用css改变按钮颜色

本篇内容介绍了“怎么使用css改变按钮颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、CSS颜色在CSS中,颜色可以用以下方式来表示:
2023-07-06

怎么在css中改变超链接的颜色

这期内容当中小编将会给大家带来有关怎么在css中改变超链接的颜色,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页
2023-06-08

css怎么改变a标签里的字体颜色

这篇文章主要介绍了css怎么改变a标签里的字体颜色的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css怎么改变a标签里的字体颜色文章都会有所收获,下面我们一起来看看吧。1.首先,在页面中创建一个a标签,并添加文
2023-07-04

CSS怎么更改选中文本的背景颜色

这篇文章主要介绍“CSS怎么更改选中文本的背景颜色”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS怎么更改选中文本的背景颜色”文章能帮助大家解决问题。1. 禁用用户选中一个元素(element)
2023-06-27

html怎么改变字体颜色

这篇文章主要介绍了html怎么改变字体颜色,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。方法:1、html标签内使用style属性,语法“<标签名称 style="color
2023-06-14

photoshop背景颜色怎么改变

今天小编给大家分享一下photoshop背景颜色怎么改变的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。ps改变照片背景颜色的
2023-07-01

pycharm怎么改变字体颜色

您可以通过以下步骤在 pycharm 中更改字体颜色:打开 "文件" > "设置" > "编辑器" > "字体和颜色"。选择要更改的元素("编辑器" 或 "其他")。在 "效果" 下,单击 "字体颜色" 选择器并选择所需颜色。单击 "应用"
pycharm怎么改变字体颜色
2024-04-18

编程热搜

目录