拥有使用JQuery和CSS设置样式的网站。使用表单收集搜索输入并使选择框和滚动条出现问题。
我主要为Chrome和IE开发此功能。现在我关注Chrome,但跨平台解决方案会很好。
使用webkit-scrollbar设置其他滚动条的样式可以正常工作:
::-webkit-scrollbar {
width: 10px;
height: 10px;
}
使用以下方法设置选择输入框的样式也很好:
select {
-webkit-appearance: button;
-webkit-border-radius: 2px;
/*-webkit-box-shadow: 0 4px 8px rgba(0, 0, 0, 0.5);*/
-webkit-padding-end: 20px;
-webkit-padding-start: 2px;
-webkit-user-select: none;
background-image: -webkit-linear-gradient(#FAFAFA, #F4F4F4 40%, #E5E5E5);
background-position: center right;
background-repeat: no-repeat;
border: 1px solid #AAA;
color: #555;
font-size: inherit;
margin: 0;
overflow: hidden;
padding-top: 2px;
padding-bottom: 2px;
text-overflow: ellipsis;
white-space: nowrap;
}
我似乎无法合并的是当您单击选择输入时出现的特定滚动条的样式(当存在足够的项目以导致滚动条时)。
它没有明显的元素,我不知道它是否真的可以被设计。 JQuery可能是一个选项,但我不想在插件后用插件重载页面。
页面上的其他所有内容都设置了风格,Chrome和IE中的默认滚动条在输入上看起来不合适。
我意识到创建我自己的下拉框并填充一个隐藏的输入字段可能是一种方法,但考虑到HTML5和CSS3应该是多么灵活,它似乎相当不优雅,并且将更多的工作和JQuery添加到页。
感谢任何帮助或见解。
答案 0 :(得分:1)
是否使用JS和备用HTML标记来实现所需的美学的相关思考。为了美观而“黑客”它会在移动浏览器上造成不必要的结果吗?在iPad上,select元素的默认功能是调出一个选项轮。那么我们不会通过攻击选择来失去这个功能吗?
答案 1 :(得分:1)
选择下拉滚动条的样式可以通过这种方式进行:
select::-webkit-scrollbar
为了让css生效,还需要设置width和height属性。下面的代码显示了普通下拉菜单、样式下拉菜单但没有宽度和高度属性和样式下拉菜单用宽度和高度属性来说明差异。
select {
padding: 3px 12px;
outline: none;
width: 250px;
margin-bottom: 20px;
}
select.widthHeight::-webkit-scrollbar {
width: 14px;
height: 14px;
}
select.style::-webkit-scrollbar-track {
border: rgb(180, 180, 180);
background-color: #ff6536;
}
select.style::-webkit-scrollbar-thumb {
background-color: #3677ef;
border: 1px solid rgb(193, 193, 193);
}
div {
margin-bottom: 5px;
}
<div>Normal</div>
<select>
<option>Value 1</option>
<option>Value 2</option>
<option>Value 3</option>
<option>Value 4</option>
<option>Value 5</option>
<option>Value 6</option>
<option>Value 7</option>
<option>Value 8</option>
<option>Value 9</option>
<option>Value 10</option>
<option>Value 11</option>
<option>Value 12</option>
<option>Value 13</option>
<option>Value 14</option>
<option>Value 15</option>
<option>Value 16</option>
<option>Value 17</option>
<option>Value 18</option>
<option>Value 19</option>
<option>Value 20</option>
<option>Value 21</option>
<option>Value 22</option>
<option>Value 23</option>
<option>Value 24</option>
<option>Value 25</option>
</select>
<div>Styled without width and height css</div>
<select class="style">
<option>Value 1</option>
<option>Value 2</option>
<option>Value 3</option>
<option>Value 4</option>
<option>Value 5</option>
<option>Value 6</option>
<option>Value 7</option>
<option>Value 8</option>
<option>Value 9</option>
<option>Value 10</option>
<option>Value 11</option>
<option>Value 12</option>
<option>Value 13</option>
<option>Value 14</option>
<option>Value 15</option>
<option>Value 16</option>
<option>Value 17</option>
<option>Value 18</option>
<option>Value 19</option>
<option>Value 20</option>
<option>Value 21</option>
<option>Value 22</option>
<option>Value 23</option>
<option>Value 24</option>
<option>Value 25</option>
</select>
<div>Styled</div>
<select class="style widthHeight">
<option>Value 1</option>
<option>Value 2</option>
<option>Value 3</option>
<option>Value 4</option>
<option>Value 5</option>
<option>Value 6</option>
<option>Value 7</option>
<option>Value 8</option>
<option>Value 9</option>
<option>Value 10</option>
<option>Value 11</option>
<option>Value 12</option>
<option>Value 13</option>
<option>Value 14</option>
<option>Value 15</option>
<option>Value 16</option>
<option>Value 17</option>
<option>Value 18</option>
<option>Value 19</option>
<option>Value 20</option>
<option>Value 21</option>
<option>Value 22</option>
<option>Value 23</option>
<option>Value 24</option>
<option>Value 25</option>
</select>
答案 2 :(得分:0)
我很确定你不能设置select元素的样式,或者至少不是很好。有选项可能会很好,但是我想改变它有很多值,它更容易创建我自己的值。只是基本上使用可点击的元素创建一个div,这些元素可以更改隐藏输入的值,并且可以使用显示所选值的单独元素显示和隐藏。
就我个人而言,我觉得这是最好的方式,因为你可以完全控制它,允许它按照你想要的样式,但是,你也可以使用javascript UI插件,比如更改输入元素样式的jQuery UI。
答案 3 :(得分:-2)
您可以为下拉菜单设置样式等。我已多次完成此操作。就滚动条而言,与其他任何操作相同。