В CSS, как я могу сбросить стили, заданные браузером для кнопки по умолчанию? - PullRequest
0 голосов
/ 16 июня 2019

Я подозреваю, что есть проблема с тем, как браузеры применяют стили по умолчанию к таким вещам, как <button> elements

, чтобы полностью понять мою головоломку, это включает в себя теневой дом, и я объясню это в концеоднако сейчас давайте просто сосредоточимся на версии проблемы, которую я выделил, на простой вопрос о CSS:

как я могу сбросить <button> к его исходному стилю браузера по умолчанию?

Я пытался установить свойства, такие как border: initial;, border: unset; и border: inherit;, но в любом случае установка любого из этих свойств CSS для элемента кнопки приводит к тому, что браузер освобождает любой из своихстиль по умолчанию

см. следующий пример на codepen

<button>control</button>

<button id="b1">b1</button>
<button id="b2">b2</button>
<button id="b3">b3</button>

<button id="b4">b4</button>
<button id="b5">b5</button>
<button id="b6">b6</button>

<style>
  #b1 { background: initial; }
  #b2 { background: unset; }
  #b3 { background: inherit; }

  #b4 { border: initial; }
  #b5 { border: unset; }
  #b6 { border: inherit; }
</style>

, в этом примере первая кнопка является элементом управления, поэтому мы можем видеть стиль браузера по умолчанию

на кнопках, где мы пытаемся сбросить background, кнопка полностью меняет стиль, фон исчезает, и даже граница меняет

на кнопках, где мы пытаемсядля сброса border кнопка полностью меняется, но странным образом - здесь граница исчезает, а фон меняется

Чем объясняются эти странные и неожиданные результаты?

Почемумне нужно сбросить кнопку, спросите вы?Вы думаете, что это странная вещь?Рассмотрим мой вариант использования с веб-компонентом и теневым домом:

  • Я использую теневой дом с некоторыми веб-компонентами
  • Я хочу, чтобы пользователи могли ПОЛЬЗОВАТЕЛЬНО устанавливать стили для некоторой тени<button> s
  • , поэтому я установил button { border: var(--button-border); }
    • , однако, даже если пользователь не предоставляет --button-border, кнопка визуально управляется и стили браузера не применяются
  • четная настройка button { border: var(--button-border, initial); } и другие примеры не работают
  • как я могу дать пользователям моих компонентов возможность отстегивать кнопки от стиля по умолчанию, оставляя при этом нетронутымикнопки по умолчанию, когда они решают не применять какие-либо стили кнопок?

Я чувствую, что застрял здесь, и браузер может не получить ответа на эту проблему - я боюсь, что яВам придется либо отказаться от стиля по умолчанию для кнопок в моих компонентах (плохая практика, кнопки по умолчанию должны быть знакомы пользователям), либо отказаться от любого пользовательского стиля для кнопок (плохо для дизайна).rs это точно) - есть ли надежда спасти эту ситуацию?

1 Ответ

0 голосов
/ 16 июня 2019

Попробуйте:

button {
     background: none;
     border: none;
     padding: 0;
}
...