今天,我们想与你分享一些灵感来源自定义选择样式。 在我们想使用自定义表单输入元素的样式,我们可以使用JavaScript库,将HTML元素转换为一个结构,它允许我们做一些更好的样式,特别是对于更复杂的输入select元素。 一旦有一个自定义结构,这种可能性是真的没完没了的,目的是创造一个更好的体验,用户可以更容易选择。
让我们来看看我们的自定义选择脚本。 有一个选择元素如下
<select class="cs-select cs-skin-rotate"> <option value="" disabled selected>Choose your option</option> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> </select>
…我们将把它变成这个结构:
<div class="cs-select cs-skin-rotate"> <span class="cs-placeholder">Choose your option</span> <div class="cs-options"> <ul> <li data-option data-value="1" class="cs-selected"><span>Option 1</span></li> <li data-option data-value="2"><span>Option 2</span></li> <li data-option data-value="3"><span>Option 3</span></li> </ul> </div> <select class="cs-select cs-skin-rotate"> <option value="" disabled selected>Choose your option</option> <option value="1">Option 1</option> <option value="2">Option 2</option> <option value="3">Option 3</option> </select> </div>
我们只所以还保留现在的选择系统是因为如果我们需要提交一份表单,它将可以用来设置已选好的数据。
placeholder(占位符)也就是一个空的位置没有任何东西,我们没必要选择他。我们首先要做的是添加第一个列表项,或者是选择有价值的选项。或者,我们可以定义一个数据连接和数据类
以下选项可用:
newTab : true, // open links in new tab (when data-link used in option) stickyPlaceholder : true, // when opening the select element, the default placeholder (if any) is shown onChange : function( val ) { return false; } // callback when changing the value
stickyPlaceholder 定义我们每一次打开默认占位符文本所显示的选择元素。
我们的示例的基本样式cs-select.css。这里我们定义一些必要的样式制作自定义选择看起来像一个普通的下拉。 特定的皮肤类需要皮肤样式表和一个例子为一个特定的皮肤下面例子:
@font-face { font-family: 'icomoon'; src:url('../fonts/icomoon/icomoon.eot?-rdnm34'); src:url('../fonts/icomoon/icomoon.eot?#iefix-rdnm34') format('embedded-opentype'), url('../fonts/icomoon/icomoon.woff?-rdnm34') format('woff'), url('../fonts/icomoon/icomoon.ttf?-rdnm34') format('truetype'), url('../fonts/icomoon/icomoon.svg?-rdnm34#icomoon') format('svg'); font-weight: normal; font-style: normal; } div.cs-skin-border { background: transparent; font-size: 2em; font-weight: 700; max-width: 600px; } @media screen and (max-width: 30em) { .cs-skin-border { font-size: 1em; } } .cs-skin-border > span { border: 5px solid #000; border-color: inherit; transition: background 0.2s, border-color 0.2s; } .cs-skin-border > span::after, .cs-skin-border .cs-selected span::after { font-family: 'icomoon'; content: '\e000'; } .cs-skin-border ul span::after { content: ''; opacity: 0; } .cs-skin-border .cs-selected span::after { content: '\e00e'; color: #ddd9c9; font-size: 1.5em; opacity: 1; transition: opacity 0.2s; } .cs-skin-border.cs-active > span { background: #fff; border-color: #fff; color: #2980b9; } .cs-skin-border .cs-options { color: #2980b9; font-size: 0.75em; opacity: 0; transition: opacity 0.2s, visibility 0s 0.2s; } .cs-skin-border.cs-active .cs-options { opacity: 1; transition: opacity 0.2s; } .cs-skin-border ul span { padding: 1em 2em; backface-visibility: hidden; } .cs-skin-border .cs-options li span:hover, .cs-skin-border li.cs-focus span { background: #f5f3ec; }
看一下演示,看看如何自定义风格选择的一些示例。