返回顶部
首页 > 资讯 > 前端开发 > JavaScript >css怎么改变单选框的颜色
  • 866
分享到

css怎么改变单选框的颜色

2024-04-02 19:04:59 866人浏览 薄情痞子
摘要

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

--结束END--

本文标题: css怎么改变单选框的颜色

本文链接: https://lsjlt.com/news/90607.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • css怎么改变单选框的颜色
    本篇内容介绍了“css怎么改变单选框的颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   ...
    99+
    2024-04-02
  • css怎么改变svg颜色
    这篇文章主要介绍css怎么改变svg颜色,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页的样式,使网页更加美化。它也是一种定义样...
    99+
    2023-06-14
  • css改变边框颜色对的方法
    小编给大家分享一下css改变边框颜色对的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在css中可以通过border-color属性设置四条边框的颜色,此属性...
    99+
    2023-06-14
  • css怎么改变图片的颜色
    这篇文章给大家分享的是有关css怎么改变图片的颜色的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。css的基本语法是什么css的基本语法是:1、css规则由选择器和一条或多条声明两个部分构成;2、选择器通常是需要改...
    99+
    2023-06-14
  • css怎么改变图片颜色
    小编给大家分享一下css怎么改变图片颜色,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!什么是csscss是一种用来表现HTML或XML等文件样式的计算机语言,主要...
    99+
    2023-06-14
  • css怎么改变字体颜色
    这篇“css怎么改变字体颜色”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“css怎么改变字体颜色”文章吧。1.首先,在页面中...
    99+
    2023-07-04
  • css怎么改变png图片的颜色
    这篇文章将为大家详细讲解有关css怎么改变png图片的颜色,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css中可使用filter属性配合invert()、grayscale()、sepia()或hue-...
    99+
    2023-06-14
  • 怎么使用css改变按钮颜色
    本篇内容介绍了“怎么使用css改变按钮颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、CSS颜色在CSS中,颜色可以用以下方式来表示:...
    99+
    2023-07-06
  • 怎么在css中改变超链接的颜色
    这期内容当中小编将会给大家带来有关怎么在css中改变超链接的颜色,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,主要是用来设计网页...
    99+
    2023-06-08
  • css如何改变文字颜色
    这篇文章将为大家详细讲解有关css如何改变文字颜色,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。css改变文字颜色的方法是,通过设置color属性来实现,如【color:red;】或【color:#00f...
    99+
    2023-06-15
  • css如何改变光标颜色
    小编给大家分享一下css如何改变光标颜色,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!css改变光标颜色的方法是,给光标添加caret-color属性,并设置合适...
    99+
    2023-06-15
  • css如何改变图片颜色
    小编给大家分享一下css如何改变图片颜色,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在css中,可以使用filter属性来改变图片颜色,例如:使用“filter...
    99+
    2023-06-08
  • css怎么改变a标签里的字体颜色
    这篇文章主要介绍了css怎么改变a标签里的字体颜色的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css怎么改变a标签里的字体颜色文章都会有所收获,下面我们一起来看看吧。首先,在页面中创建一个a标签,并添加文字;...
    99+
    2023-07-04
  • CSS怎么改变网页中鼠标选中文字背景颜色
    本篇内容主要讲解“CSS怎么改变网页中鼠标选中文字背景颜色”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS怎么改变网页中鼠标选中文字背景颜色”吧!一个不是那...
    99+
    2024-04-02
  • CSS怎么更改选中文本的背景颜色
    这篇文章主要介绍“CSS怎么更改选中文本的背景颜色”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS怎么更改选中文本的背景颜色”文章能帮助大家解决问题。1. 禁用用户选中一个元素(element)...
    99+
    2023-06-27
  • css如何更改img的边框颜色
    本篇内容主要讲解“css如何更改img的边框颜色”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css如何更改img的边框颜色”吧! ...
    99+
    2024-04-02
  • css如何改变html字体颜色
    这篇文章给大家分享的是有关css如何改变html字体颜色的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 字体色彩代码:color1、篡改div字体颜色 .divys{ col...
    99+
    2024-04-02
  • css如何改变div字体颜色
    这篇“css如何改变div字体颜色”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“css如何改变div字体颜色”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入...
    99+
    2023-06-06
  • CSS改变输入框光标颜色的原生属性caret-color怎么用
    这篇文章主要介绍了CSS改变输入框光标颜色的原生属性caret-color怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、CSS改变...
    99+
    2024-04-02
  • CSS怎么实现文字颜色不变下划线变颜色
    本篇内容介绍了“CSS怎么实现文字颜色不变下划线变颜色”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作