n0n*_*tan 62 css html5 option html-datalist
我想修改显示我的datalist的不同选项列表的方式.是否可以在其上应用一些CSS属性?
<input list="languages" id="language_id">
<datalist id="languages">
<option value="html">HTML</option>
<option value="java">Java</option>
<option value="perl">Perl</option>
<option value="php">PHP</option>
<option value="ruby-on-rails">Ruby on Rails</option>
</datalist>
Run Code Online (Sandbox Code Playgroud)
我试过了
option {
background: red;
}
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.
adr*_*ift 62
与select元素一样,datalist元素在样式上几乎没有灵活性.如果这是您的问题,那么您无法设置任何建议的术语.
浏览器为这些元素定义自己的样式.
Orh*_*han 10
我在有人这样做的地方找到了这个codepen:https://codepen.io/sidd_dev/pen/qBRWNQQ ?editors=1010
我用它测试了
您应该检查https://caniuse.com/?search=datalist了解有关浏览器支持的更多详细信息。
input.onfocus = function () {
browsers.style.display = 'block';
input.style.borderRadius = "5px 5px 0 0";
};
for (let option of browsers.options) {
option.onclick = function () {
input.value = option.value;
browsers.style.display = 'none';
input.style.borderRadius = "5px";
}
};
input.oninput = function() {
currentFocus = -1;
var text = input.value.toUpperCase();
for (let option of browsers.options) {
if(option.value.toUpperCase().indexOf(text) > -1){
option.style.display = "block";
}else{
option.style.display = "none";
}
};
}
var currentFocus = -1;
input.onkeydown = function(e) {
if(e.keyCode == 40){
currentFocus++
addActive(browsers.options);
}
else if(e.keyCode == 38){
currentFocus--
addActive(browsers.options);
}
else if(e.keyCode == 13){
e.preventDefault();
if (currentFocus > -1) {
/*and simulate a click on the "active" item:*/
if (browsers.options) browsers.options[currentFocus].click();
}
}
}
function addActive(x) {
if (!x) return false;
removeActive(x);
if (currentFocus >= x.length) currentFocus = 0;
if (currentFocus < 0) currentFocus = (x.length - 1);
x[currentFocus].classList.add("active");
}
function removeActive(x) {
for (var i = 0; i < x.length; i++) {
x[i].classList.remove("active");
}
}Run Code Online (Sandbox Code Playgroud)
fieldset {
border: 1px solid blue;
width: 360px;
border-radius: 5px;
}
legend, label{
color: blue;
font-size: 24px;
font-family: sans-serif;
}
input {
font-size: 18px;
padding: 5px;
height: 35px;
width: 350px;
border: 1px solid blue;
outline: none;
border-radius: 5px;
color: blue;
/* border-bottom: none; */
}
datalist {
position: absolute;
background-color: white;
border: 1px solid blue;
border-radius: 0 0 5px 5px;
border-top: none;
font-family: sans-serif;
width: 350px;
padding: 5px;
max-height: 10rem;
overflow-y: auto
}
option {
background-color: white;
padding: 4px;
color: blue;
margin-bottom: 1px;
font-size: 18px;
cursor: pointer;
}
option:hover, .active{
background-color: lightblue;
}Run Code Online (Sandbox Code Playgroud)
<fieldset>
<legend>
Datalist Form
</legend>
<label>Select Browser</label>
<input autocomplete="off" role="combobox" list="" id="input" name="browsers" placeholder="Select your fav browser">
<!-- Its important that you keep list attribute empty to hide the default dropdown icon and the browser's default datalist -->
<datalist id="browsers" role="listbox">
<option value="Internet Explorer">Internet Explorer</option>
<option value="Chrome">Chrome</option>
<option value="Safari">Safari</option>
<option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option><option value="Microsoft Edge">Microsoft Edge</option>
<option value="Firefox">Firefox</option>
</datalist>
<!-- <br>
<br>
<label for="pwd"> Password </label>
<input id="pwd" type="password">
-->
</fieldset>Run Code Online (Sandbox Code Playgroud)