中文译文:http://www.evget.com/article/2014/11/10/21804.html
英文原文:http://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/
注意:本文代码全部为CSS,开始没看到css选项,就随便选了一个,等写完后才发现可以自行填写,影响不大,懒了下,就没改了~~~原谅偶
---------正文开始--------
自从IE10发布,输入范围样式备受关注。 现在仅仅使用CSS就可以生成跨浏览器、可兼容的输入范围(滑块)。今天,我们就一起来简单实践下。
把上图变成这样:
为了简化生成样式的过程,为添加了LESS样式表,CSS也可用。
应用基础CSS样式被输入范围应用的几个样式需要添加到所有浏览器中,覆盖他们的基本外观。
input[type=range] { -webkit-appearance: none; /* Hides the slider so that custom slider can be made */ width: 100%; /* Specific width is required for Firefox. */ } input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; } input[type=range]:focus { outline: none; /* Removes the blue border. You should probably do some kind of focus styling for accessibility reasons though. */ } input[type=range]::-ms-track { width: 100%; cursor: pointer; background: transparent; /* Hides the slider so custom styles can be added */ border-color: transparent; color: transpare
这个CSS在所有浏览器中,给我们不可见或者无样式的输入范围。现在我们可以使用定制样 式。
翻阅样式
接下来是我们对组件延路径点击、拖拽的样式设计,一个Html元素就可以实现。
/* Special styling for WebKit/Blink */ input[type=range]::-webkit-slider-thumb { -webkit-appearance: none; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; margin-top: -14px; /* You need to specify a margin in Chrome, but in Firefox and IE it is automatic */ box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; /* Add cool effects to your sliders! */ } /* All the same stuff for Firefox */ input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; } /* All the same stuff for IE */ input[type=range]::-ms-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; }
我们在这里重复代码,如果你不能用多好分隔这些类型的选择符,那这步就必不可少。如果不向浏览器说清楚,他们坑能不会执行。 然后,我们得到下图
路径样式
翻阅的路径,可以使用普通的HTML元素。 IE浏览器注意:IE 10+范围输入会略有不同。在IE中,可以为上层(如图,路径的右边)和下层(如图,路径的左边)区域路径指定完全不同的风格。 另外要说明的,我们可以为路径应用焦点效果,他会在用户与其交互时发生改变。
input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 8.4px; cursor: pointer; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]:focus::-webkit-slider-runnable-track { background: #367ebd; } input[type=range]::-moz-range-track { width: 100%; height: 8.4px; cursor: pointer; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]::-ms-track { width: 100%; height: 8.4px; cursor: pointer; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; } input[type=range]::-ms-fill-lower { background: #2a6495; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]:focus::-ms-fill-lower { background: #3071a9; } input[type=range]::-ms-fill-upper { background: #3071a9; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]:focus::-ms-fill-upper { background: #367ebd; }
然后得到下图:
构建一个完整的输入范围 之前,我们创建了滑块和路径,现在我们可以写CSS了。 兼容所有浏览器的完整的CSS样式范围输入
input[type=range] { -webkit-appearance: none; margin: 18px 0; width: 100%; } input[type=range]:focus { outline: none; } input[type=range]::-webkit-slider-runnable-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]::-webkit-slider-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; -webkit-appearance: none; margin-top: -14px; } input[type=range]:focus::-webkit-slider-runnable-track { background: #367ebd; } input[type=range]::-moz-range-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; background: #3071a9; border-radius: 1.3px; border: 0.2px solid #010101; } input[type=range]::-moz-range-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; } input[type=range]::-ms-track { width: 100%; height: 8.4px; cursor: pointer; animate: 0.2s; background: transparent; border-color: transparent; border-width: 16px 0; color: transparent; } input[type=range]::-ms-fill-lower { background: #2a6495; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-fill-upper { background: #3071a9; border: 0.2px solid #010101; border-radius: 2.6px; box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; } input[type=range]::-ms-thumb { box-shadow: 1px 1px 1px #000000, 0px 0px 1px #0d0d0d; border: 1px solid #000000; height: 36px; width: 16px; border-radius: 3px; background: #ffffff; cursor: pointer; } input[type=range]:focus::-ms-fill-lower { background: #3071a9; } input[type=range]:focus::-ms-fill-upper { background: #367ebd; }
输入范围完成:
附加风格设计
因为要兼容所有浏览器,CSS会比较大。使用预处理程序可以是其工作更加有效率。下面的LESS文件可以生成上面提到的CSS。
@track-color: #424242; @thumb-color: #555bc8; @thumb-radius: 8px; @thumb-height: 30px; @thumb-width: 30px; @thumb-shadow-size: 1px; @thumb-shadow-blur: 1px; @thumb-shadow-color: #111; @thumb-border-width: 1px; @thumb-border-color: white; @track-width: 100%; @track-height: 10px; @track-shadow-size: 2px; @track-shadow-blur: 2px; @track-shadow-color: #222; @track-border-width: 1px; @track-border-color: black; @track-radius: 5px; @contrast: 5%; .shadow(@shadow-size,@shadow-blur,@shadow-color) { box-shadow: @shadow-size @shadow-size @shadow-blur @shadow-color, 0px 0px @shadow-size lighten(@shadow-color,5%); } .track() { width: @track-width; height: @track-height; cursor: pointer; animate: 0.2s; } .thumb() { .shadow(@thumb-shadow-size,@thumb-shadow-blur,@thumb-shadow-color); border: @thumb-border-width solid @thumb-border-color; height: @thumb-height; width: @thumb-width; border-radius: @thumb-radius; background: @thumb-color; cursor: pointer; } input[type=range] { -webkit-appearance: none; margin: @thumb-height/2 0; width: @track-width; &:focus { outline: none; } &::-webkit-slider-runnable-track { .track(); .shadow(@track-shadow-size,@track-shadow-blur,@track-shadow-color); background: @track-color; border-radius: @track-radius; border: @track-border-width solid @track-border-color; } &::-webkit-slider-thumb { .thumb(); -webkit-appearance: none; margin-top: ((-@track-border-width * 2 + @track-height) / 2) - (@thumb-height / 2); } &:focus::-webkit-slider-runnable-track { background: lighten(@track-color, @contrast); } &::-moz-range-track { .track(); .shadow(@track-shadow-size,@track-shadow-blur,@track-shadow-color); background: @track-color; border-radius: @track-radius; border: @track-border-width solid @track-border-color; } &::-moz-range-thumb { .thumb(); } &::-ms-track { .track(); background: transparent; border-color: transparent; border-width: @thumb-width 0; color: transparent; } &::-ms-fill-lower { background: darken(@track-color, @contrast); border: @track-border-width solid @track-border-color; border-radius: @track-radius*2; .shadow(@track-shadow-size,@track-shadow-blur,@track-shadow-color); } &::-ms-fill-upper { background: @track-color; border: @track-border-width solid @track-border-color; border-radius: @track-radius*2; .shadow(@track-shadow-size,@track-shadow-blur,@track-shadow-color); } &::-ms-thumb { .thumb(); } &:focus::-ms-fill-lower { background: @track-color; } &:focus::-ms-fill-upper { background: lighten(@track-color, @contrast); } }
浏览器支持
自身支持范围输入的浏览器有: Firefox 23+, Safari 4+, iOS 5+, Chrome 6+, Opera 11+, IE 10+, Android 4.2+。如果你遵循本文中的代码,自定义样式应该很大程度上是匹配的。
示例:
相关推荐
* 针对多种浏览器分别配置合适的 CSS 文件,再通过判断浏览器选择不同 CSS 实现兼容性 * 使用 <!--[endif]--> 等方法来区分不同浏览器 CSS 在不同浏览器中的兼容问题是一个复杂的问题,需要认真对待和解决。通过...
### 跨浏览器兼容CSS篇:实现一致性的策略与技巧 #### 一、引言 在Web设计领域,确保网站在不同浏览器中呈现一致的效果是一项挑战性任务。由于各种浏览器对CSS的支持程度不尽相同,开发者经常面临布局差异的问题。...
在CSS(层叠样式表)领域,跨浏览器兼容性是一个重要的课题,因为它涉及到网页在不同浏览器上的一致性展示。每个浏览器对CSS的理解和实现可能存在差异,这可能导致样式在Firefox、Chrome、Safari、Edge以及Internet ...
### 跨浏览器兼容的CSS代码编程方法 #### 一、引言 随着互联网技术的不断发展,Web前端开发已经成为了一个非常重要且复杂的技术领域。在前端开发过程中,CSS(层叠样式表)作为网页布局和样式设计的主要工具之一,...
"别具光芒——CSS属性、浏览器兼容与网页布局"这个主题涵盖了三个核心概念:CSS属性、浏览器兼容性和网页布局。 首先,我们来详细探讨CSS属性。CSS提供了无数的属性,如颜色、字体、大小、位置等,这些属性共同决定...
### 如何让CSS在所有浏览器下兼容 在Web开发领域,确保CSS代码能够在不同浏览器上稳定运行是一项重要的技能。本文将详细介绍如何使CSS在各种浏览器(包括但不限于IE6、IE7、IE8以及现代浏览器如Firefox和Chrome)下...
然而,由于不同浏览器之间对这两种技术的支持程度和实现方式存在差异,导致了跨浏览器兼容性问题的出现。本文主要探讨CSS和JavaScript在IE(Internet Explorer)和其他非IE内核浏览器如Firefox、Chrome、Opera中的...
本书分为基础篇和实战篇,旨在帮助开发者理解和应对CSS的跨浏览器兼容性挑战。 基础篇首先介绍了DIV+CSS的优势,这种布局方式使得表现和内容分离,提高了搜索引擎的索引效率,减少了代码量,加快了页面加载速度,...
### CSS浏览器兼容问题详解 #### 一、引言 随着Web技术的发展,不同的浏览器对于CSS的支持程度也有所不同,这导致了在开发过程中经常会遇到浏览器之间的兼容性问题。本文旨在总结和分享一系列关于CSS兼容性的技巧...
【CSS浏览器兼容性处理】 在Web开发中,CSS(层叠样式表)是用于控制网页元素样式的关键技术。然而,不同的浏览器对CSS的理解和解析方式存在差异,这可能导致在某些浏览器下网页显示不正常。特别是在使用div+css...
以下是一些常见的CSS浏览器兼容性问题及其解决方案: 1. **垂直居中问题**: 在CSS中,要实现一个div的垂直居中,可以使用`vertical-align: middle;`和`line-height`属性。但这种方法要求内容不换行。例如: ```...
为了实现跨浏览器的`placeholder`兼容性,开发者通常需要借助JavaScript库或jQuery插件来模拟这一功能。本篇将探讨如何实现这一目标,同时分析提供的文件内容。 首先,`form4_placehold_value.html`很可能是测试...
【Ranger:jQuery跨浏览器范围输入插件】 Ranger是一款基于jQuery的插件,专为处理跨浏览器的范围(range)输入问题而设计。在HTML5中,`<input type="range">`元素引入了滑块控件,允许用户通过滑动条选择一个数值...
本文以大量实例形式总结了css与javascript跨浏览器的兼容性问题。分享给大家供大家参考。具体总结如下: 一、CSS样式兼容性 1. FLOAT闭合(clearing float) 网页在某些浏览器上显示错位很多时候都是因为使用了float...
"CSS浏览器兼容性速查"是开发者在工作中不可或缺的一个参考资料,它帮助我们了解各种CSS属性在不同浏览器上的表现,以便于优化代码,确保网站在主流浏览器上都能正常显示。 首先,我们要理解浏览器兼容性问题的来源...
标题中的“CSS在不同浏览器的兼容性问题”指的是在各种Web浏览器中,CSS(层叠样式表)的解析和执行存在差异,导致网页在不同浏览器上显示不一致的现象。这通常给前端开发者带来挑战,因为他们需要确保网页在所有...
例如,IE浏览器早期版本对某些CSS属性的处理与其他浏览器显著不同,这使得设计师在实现跨浏览器兼容性时面临挑战。 解决CSS兼容问题的关键在于理解和运用“hack”技巧。例如,对于IE6、IE7和Firefox,可以使用特定...
然而,不同浏览器对CSS的支持程度不尽相同,这就导致了在实际开发过程中经常遇到的“浏览器兼容性”问题。本文将深入探讨CSS在当今流行浏览器中的兼容性,并为开发者提供一些实用的解决方案。 #### 二、CSS与浏览器...