原創|使用教程|編輯:龔雪|2014-11-10 10:36:07.000|閱讀 1295 次
概述:自從IE10發布,輸入范圍樣式備受關注。 現在僅僅使用CSS就可以生成跨瀏覽器、可兼容的輸入范圍(滑塊)。今天,我們就一起來簡單實踐下。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
自從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+。如果你遵循本文中的代碼,自定義樣式應該很大程度上是匹配的。
示例:
See the Pen by Chris Coyier () on .
英文原文:
下面是廣告,雙11,無視我,你就損失了
【年終大促 巔峰盛"慧" 】促銷火熱進行中 iPhone 6 Plus、 iPhone 6、iPad Air等你拿 點我查看
FastReport VCL 5新版發布會,2014-12-9 15:00網絡直播,免費參加?
標簽:CSS3
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:慧都控件網