css自定义 range radio select的样式滑轮,按钮,选择框

简介: 写在前面:之前踩坑css的时候,遇到滑轮,按钮,选择框这类型的东西,为了页面效果,总是需要自定义他们的样式,而不使用他们的默认样式。当时写的时候,我也是蛮头疼的,弄了个demo,链接在下面。对此做个总结。本文是面向前端小白的,大手子可以跳过,写的不好之处多多见谅。额,今天就先大概的将代码贴上来,考虑到篇幅的问题,就先写一下三个的实现方式,一般也都看得懂,代码注释的非常详细。因为细分下来内容也很多,准备之后再将如何实现的方式,属性,优化以及如何兼容各个浏览器的方式一步步的写出来。最终效果:

写在前面:

之前踩坑css的时候,遇到滑轮,按钮,选择框这类型的东西,为了页面效果,总是需要自定义他们的样式,而不使用他们的默认样式。当时写的时候,我也是蛮头疼的,弄了个demo,链接在下面。对此做个总结。本文是面向前端小白的,大手子可以跳过,写的不好之处多多见谅。


额,今天就先大概的将代码贴上来,考虑到篇幅的问题,就先写一下三个的实现方式,一般也都看得懂,代码注释的非常详细。因为细分下来内容也很多,准备之后再将如何实现的方式,属性,优化以及如何兼容各个浏览器的方式一步步的写出来。


最终效果:

image.png

如何使用这些属性?

用法很简单,如下所示:

<input type="range">//滑动条
<input type="radio">//按钮
<select>//选择框


input type="range"样式修改:

image.png

html content

<div>
 <input type="range" class="slider-block" id="slider" max="18" min="6" step="1" value="6">
    <!--主要是一个type="range"属性,其他的会在细分的文章里面讲出来-->
</div>

csscontent

.slider-block{
            outline: none; /*去掉点击时出现的外边框*/
            -webkit-appearance: none;
            -moz-appearance: none;
            appearance: none; /*这三个是去掉那条线原有的默认样式,划重点!!*/
            width: 30%;
            height: 0.3rem;
            background: orange; /*这三个是设置滑块下面那条线的样式*/
        }
        input[type="range"]::-webkit-slider-thumb {
            /*::-webkit-slider-thumb是代表给滑块的样式进行变更*/
            -webkit-appearance: none;
            -moz-appearance: none;
            appearance: none; /*//这三个是去掉滑块原有的默认样式,划重点!!*/
            -webkit-box-shadow:0 0 2px ;/*设置滑块的阴影*/
            width: 2.6rem;
            height:1.6rem;
            background: url("images/js2-d_03.png");
            background-size: cover; /*//这几个是设置滑块的样式*/
        }
        //文章下面有demo链接


文章下面有demo链接


代码里面注释关键点都写了,还不能理解的,可以看下demo。


input type="radio"修改默认样式

image.png

html content

<form class="task10-main-box-shape" method="post" action="#">
    <!--//表单元素基本上都要加form,传送的参数的方式,传递的位置,这是一个好习惯-->
<div>
    <input id="shape1" name="box-shape" type="radio"  checked="checked" value="shape1" />
    <!--checked属性是当页面载入的时候选择这个按钮,value是传送的值-->
    <label for="shape1">对口箱</label><!--/加label标签点击这个字的时候,可以选中按钮-->
</div>
</form>

css样式这里相对难点,但我注释的已经很多了。

.task10-main-box-shape input[type="radio"]{
            display: none;
            /*隐藏默认按钮的样式,这跟其他隐藏默认按钮的样式的方法不一样,注意一下*/
        }
.task10-main-box-shape label{  /*这里是设置文字的样式*/
            display: inline-block;
            cursor: pointer;
            position: relative;
            padding-left: 3rem;
            margin-right: 6rem;
            font-size: 1.8rem;
            color: rgb(102,102,102);
        }
        .task10-main-box-shape label:before { /*这里是没被选中时候按钮的样式*/
            content: "";
            /*将要自定义的东西设置为空的字符串,就可以往里面随意加定义的样式了*/
            display: inline-block;
            background-color: #FFFFFF; /*设置背景*/
            padding:0.45em; /*撑开背景,就是中间那块白色的*/
            border: 1px solid gray;
            margin-right: 10px;
            position: absolute;
            left: 0;
            bottom: 3px;
            border-radius: 50%; /*设置圆角*/
        }
        input[type=radio]:checked + label:before {/*按钮被选中之后的样式,多了一个checked*/
            font-size: 1px;
            color: #FFFFFF;
            border:0.7rem solid rgb(29,122,217);
            /*设置按钮样式*/
        }

select修改默认样式

image.png

image.png

### html cantent

<div>
    <select class="task10-main-box-row2-select">
        <option>查看详情</option>
        <option>我也不知道</option>
        <option>详情是什么</option>
    </select>
</div>

css cantent

.task10-main-box-row2-select{
            font-size: 1.6rem;
            color: rgb(153,153,153);
            padding: 0.3% 2% 0.3% 1%;
            margin: 0; /*这里是选择框里面的样式*/
            background: url("images/task10-d_03.png") no-repeat 97%;
            /*97%是设置图片,也就是三角形的位置*/
            background-size:20%; /*背景图片的尺寸*/
            appearance:none;
            -moz-appearance:none;
            -webkit-appearance:none; /*这三个是隐藏默认样式*/
        }

ps:css样式写的有点乱,各位看官,将就着看看,下面有demo链接。


总结

总的来说这类型的首先需要将样式隐藏掉,然后再自行添加需要的类型,但是有些隐藏样式的方式也不同,有些是这种,appearance:none; -moz-appearance:none; -webkit-appearance:none;像radio按钮的,反而是display:none;这种类型的。还有的样式可以写的很好看,比如滑块怎么移动的时候,填充条跟着移动。会的大家都会,要琢磨的精,会别人不会的,才是你身价所在。


后话:

连续一个多星期不睡午觉,终于熬不住了。感觉身体被掏空,以后就改为下午的时候更文。因为一些事情耽搁了,直到晚上才弄好。下面几天会逐渐把这几个如何实现的方式,属性,优化以及如何兼容各个浏览器的方式一步步的写出来,链接会放在文末的。

假装这里有三个链接。range滑块自定义样式,步骤详解以及实际应用


目录
相关文章
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(二):CSS伪类:UI伪类、结构化伪类;通过伪类获得子元素的第n个元素;创建一个伪元素展示在页面中;获得最后一个元素;处理聚焦元素的样式
伪类:伪类这个叫法源自于它们跟类相似,但实际上并没有类会附加到标记中的标签上。 伪类分为两种(以及新增的伪类选择器): UI伪类:会在HTML元素处于某种状态时(例如:鼠标指针位于连接上),为该元素应用CSS样式。 :hover 结构化伪类:会在标记中存在某种结构上的关系时 例如: 某元素是一组元素中的第一个或最后一个,为该元素应用CSS样式。 :not和:target(CSS3新增的两个特殊的伪类选择器)
720 2
|
6月前
|
前端开发 算法 Java
【CSS】前端三大件之一,如何学好?从基本用法开始吧!(三):元素继承关系、层叠样式规则、字体属性、文本属性;针对字体和文本作样式修改
继承 我们的CSS中很多的属性也是可以继承的,其中相当一部分是跟文字的相关的,比如说颜色、字体、字号。 当然还有一部分是不能继承的。 例如边框、内外边距。 层叠 层叠是CSS的核心机制。 层叠的工作机制: 当元素的同一个样式属性有多种样式值的时候,CSS就是靠层叠机制来决定最终应用哪种样式。 层叠规则: 层叠规则一:找到应用给每个元素和属性的声明。 说明:浏览器在加载每个页面时,都会据此查找到每条CSS规则, 并标识出所有受到影响的HTML元素。
230 0
|
前端开发
|
JavaScript 前端开发
jQuery和CSS3滑动展开菜单按钮插件
这是一款jQuery和CSS3滑动展开菜单按钮插件。该滑动展开菜单按钮在用户点击主菜单按钮之后,子菜单以滑动的方式依次展开
386 21
|
JavaScript 前端开发
jQuery和CSS3斑马线样式range滑块特效
jQuery和CSS3斑马线样式range滑块特效
|
前端开发 JavaScript UED
|
前端开发
HTML 样式- CSS3
内部样式表适用于单个文件的特别样式,通过&lt;head&gt;部分的&lt;style&gt;标签定义;外部样式表适用于多个页面,通过&lt;link&gt;标签引用外部CSS文件;&lt;style&gt;定义样式,&lt;link&gt;引用资源;已弃用的标签有&lt;font&gt;、&lt;center&gt;、&lt;strike&gt;,属性有color和bgcolor。
|
前端开发
纯CSS3彩色边线3D立体按钮制作教程
原文:纯CSS3彩色边线3D立体按钮制作教程 今天我们来分享一款利用纯CSS3实现的3D按钮,这款按钮的一个特点是有彩色的边线,这让整个按钮显得比较多姿多彩,没那么枯燥无趣。本文不仅可以让大家看到演示效果,而且我们把制作教程也分享出来,首先来看看效果图: 我们也可以在这里看到这些按钮的DEMO演示。
1185 0
|
前端开发
10个实用的 CSS3 按钮效果制作教程
  人们往往喜欢那些有更多互动元素的网站,因此现在很多设计师专注于他们的 CSS3 技能。这是因为 CSS3 技能可以帮助他们在很大的程度上实现所需的吸引力。这里分享的10个优秀的 CSS3 按钮效果制作教程,你可以学习这些技术并使用它们为您的作品创造更多的乐趣。
1070 0
|
Web App开发 前端开发 JavaScript
学习制作精美 CSS3 按钮效果的10个优秀教程
  由于互联网世界正在发生变化,人们往往喜欢那些有更多互动元素的网站,因此现在很多 Web 开发人员也在专注于提高他们的 CSS3 技能,因为 CSS3 技能可以帮助他们在很大的程度上实现所需的吸引力。
1030 0