Видаліть повний стиль кнопки / подати 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.