Видаліть повний стиль кнопки / подати HTML


94

Чи є спосіб повністю видалити стиль кнопки в Internet Explorer? Я використовую спрайт css для своєї кнопки, і все виглядає нормально.

Але коли я натискаю кнопку, вона трохи рухається до верху, і це виглядає нестандартно. Чи існує стан css-клацання або миша? Я не знаю, що викликає цей стан.

Я знаю, що це не дуже велика справа, але іноді важливі дрібниці.

Відповіді:


71

Я припускаю, що коли ви говорите " натисніть кнопку, вона трохи переміститься вгору ", ви говорите про стан клацання миші для кнопки, і що коли ви відпускаєте клацання миші, вона повертається до свого нормального стану ? І що ви відключаєте рендеринг кнопки за замовчуванням, використовуючи:

input, button, submit { border:none; } 

Якщо так..

Особисто я виявив, що ви насправді не можете зупинити / перевизначити / відключити цю власну дію IE, що змусило мене трохи змінити розмітку, щоб дозволити цей рух і не впливати на загальний вигляд кнопки для різних станів.

Це моя остаточна націнка:

<span class="your-button-class">
    <span>
        <input type="Submit" value="View Person">
    </span>
</span>


131

Я думаю, що це забезпечує більш ретельний підхід:

button, input[type="submit"], input[type="reset"] {
	background: none;
	color: inherit;
	border: none;
	padding: 0;
	font: inherit;
	cursor: pointer;
	outline: inherit;
}
<button>Example</button>


2
Я не думаю, що у фоновому режимі є "нічого" - і! Важливе - це не добре.
шерифдерек

4
Зазвичай, коли ви робите це, ви хочете замінити існуючі стилі, які існують для кнопки. Рідко ви хочете зробити це за допомогою чистого, нестильового HTML, отже, використання !important. Це означає, що я видалив це, оскільки це рішення ситуації. background: noneцілком дійсний: stackoverflow.com/questions/20784292/…
Кевін Лірі,

Для кожного своє відносно! Важливого. Не думаю, що я міг би працювати над проектом, де мене змусили використовувати. RE: 'none' Ось посилання, яке краще, ніж повідомлення SO. Коли ви використовуєте `` фон '' сам по собі, ви дійсно використовуєте стенографію та розбираєте всі атрибути.
шерифдерек

Я зводив себе з розуму через різницю між стилізацією зображення та деяким текстом усередині кнопки та тим, що він виглядає так само, як і за межами <button/>... у моєму випадку я font: inherit;зробив трюк. Дякую!
Кейт

3
Я думаю, що для цілей доступності ви, мабуть, хочете залишити цей план там. в іншому випадку, коли ви перекладаєте його, немає візуального сигналу, де ви знаходитесь. чудова відповідь!
Джон Хупер,

43

На вашому запитанні написано "Internet Explorer", але для тих, хто цікавиться іншими браузерами, тепер ви можете скористатися ним all: unset кнопки для стилізації.

Це не працює в IE або Edge 18, але добре підтримується скрізь.

https://caniuse.com/#feat=css-all

Попередження про кольори Safari: встановлення тексту colorкнопки після використання all: unsetможе не вдатися в Safari 13.1 через помилку в WebKit . (Помилка буде виправлена ​​в Safari 14 і новіших версіях.) " all: unsetВстановлено -webkit-text-fill-colorчорний, і це замінює колір". Якщо вам потрібно встановити текст colorпісля використання all: unset, обов’язково встановіть один colorі -webkit-text-fill-colorтой же колір.

Попередження про доступність: Для користувачів, які не використовують вказівник миші, не забудьте повторно додати якийсь :focusстиль, наприклад button:focus { outline: orange auto 5px }для доступності клавіатури .

І не забувайте cursor: pointer. all: unsetвидаляє всі стилі, включаючи cursor: pointer, що робить курсор миші схожим на вказівну руку, коли ви наводите курсор на кнопку. Ви майже напевно хочете повернути це назад.

button {
  all: unset;
  color: blue;
  -webkit-text-fill-color: blue;
  cursor: pointer;
}

button:focus {
  outline: orange 5px auto;
}
<button>check it out</button>


1
Дякую за це!
Уілл

Це недоцільно з міркувань доступності. Наприклад, вам потрібно буде додати назад усі outlineстилі для стану :focusелемента.
Девін

@Devin Чудовий момент! Я оновив свою публікацію пропозицією повторно додати outlineстиль. (Але я не думаю, що є щось інше, що нам потрібно додати для цілей 11y. Ви що-небудь знаєте?)
Ден Фабуліч


4

У bootstrap 4 це найпростіше. Ви можете використовувати класи: bg-transparentіborder-0


+ shadow-noneдля мене, і цього достатньо. Дякую!
Баш

0

Я думаю, що це кнопка "активний" стан.


Це має бути активний стан, ви маєте рацію +1 за це. Але я не змусив його працювати належним чином
Саїф Бечан,

"Я думаю" - це не відповідь.
shinzou
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.