Я новичок в Blazor, у нас есть серверное приложение Blazor, создан компонент с режимом InteractiveServer. Я пытаюсь создать автоматически заполняемое текстовое поле с пользовательскими стилями CSS, но по какой-то причине стили вообще не затрагиваются. Вот как выглядит код: независимо от того, какой цвет фона я указываю, Datalist не затрагивается и отображает стили по умолчанию.
<style>
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;
}
option {
background-color: white;
padding: 4px;
color: blue;
margin-bottom: 1px;
font-size: 18px;
cursor: pointer;
}
</style>
<input autocomplete = "off" list = "" id = "input"
name = "browsers" placeholder = "Select your fav browser">
<datalist id = "browsers">
<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>
</datalist>
Я попробовал добавить !important ко всем свойствам CSS, но все равно не сработало. Мы хотим настроить список данных в соответствии с нашими потребностями.
Элементы <datalist>
сложно стилизовать в разных браузерах, поскольку они не всегда поддерживают настройки CSS.
мы можем добиться аналогичного стиля, реализовав собственный раскрывающийся список автозаполнения.
@using System.Collections.Generic
<style>
.autocomplete-container {
position: relative;
display: inline-block;
width: 350px;
}
.autocomplete-dropdown {
position: absolute;
background-color: white;
border: 1px solid blue;
border-radius: 0 0 5px 5px;
width: 100%;
box-sizing: border-box;
display: block;
}
.autocomplete-option {
padding: 4px;
color: blue;
cursor: pointer;
font-size: 18px;
}
.autocomplete-option:hover {
background-color: #f0f0f0;
}
</style>
<div class = "autocomplete-container">
<input @bind = "inputValue" @oninput = "UpdateFilteredOptions" placeholder = "Select your favorite browser" />
@if (showOptions)
{
<div class = "autocomplete-dropdown">
@foreach (var option in filteredOptions)
{
<div class = "autocomplete-option" @onclick = "() => SelectOption(option)">
@option
</div>
}
</div>
}
</div>
@code {
private string inputValue = "";
private bool showOptions = false;
private List<string> browsers = new List<string> { "Internet Explorer", "Chrome", "Safari", "Microsoft Edge", "Firefox" };
private List<string> filteredOptions = new List<string>();
private void UpdateFilteredOptions(Microsoft.AspNetCore.Components.ChangeEventArgs e)
{
inputValue = e.Value?.ToString();
filteredOptions = browsers.Where(browser => browser.Contains(inputValue, StringComparison.OrdinalIgnoreCase)).ToList();
showOptions = filteredOptions.Any();
}
private void SelectOption(string option)
{
inputValue = option;
showOptions = false;
}
}
Вы действительно помещаете стили на странице в тег стиля, а не в CSS-файл с областью действия ?