Удалите полный стиль кнопки HTML / отправьте

99

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

Но когда я нажимаю кнопку, она немного перемещается вверх, из-за этого выглядит не по форме. Есть ли состояние клика css или mousedown? Я не знаю, что вызывает это состояние.

Я знаю, что это не так уж и важно, но иногда важны мелочи.

Саиф Бечан
источник

Ответы:

74

Я предполагаю, что когда вы говорите `` нажмите кнопку, она немного переместится вверх '', вы говорите о состоянии нажатия кнопки мыши для кнопки, и что когда вы отпускаете кнопку мыши, она возвращается в свое нормальное состояние ? И что вы отключаете рендеринг кнопки по умолчанию, используя:

input, button, submit { border:none; } 

Если так..

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

Это моя последняя разметка:

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

Даррен
источник
137

Я думаю, это обеспечивает более тщательный подход:

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
Я не думаю, что у фона есть «нет» - и! Important никуда не годится.
sheriffderek
4
Обычно, когда вы делаете это, вы хотите переопределить существующие стили, существующие для кнопки. Редко, когда вы хотите сделать это с чистым, нестилизованным HTML, поэтому использование !important. Тем не менее, я удалил его, поскольку это решение ситуации. background: noneполностью действителен: stackoverflow.com/questions/20784292/…
Кевин Лири
Каждому свое относительно! Важно. Не думаю, что смогу работать над проектом, в котором меня заставили использовать. RE: 'none' Вот ссылка, которая лучше, чем сообщение SO. Когда вы используете «фон» отдельно, вы действительно используете сокращение и стираете все атрибуты.
sheriffderek
Я сводил себя с ума от разницы между стилизацией изображения и текста внутри кнопки и тем, что он выглядел так же, как и за пределами <button/>... в моем случае, font: inherit;помогло. Спасибо!
Kate
3
Я думаю, что в целях доступности вы, вероятно, захотите оставить этот план там. в противном случае, когда вы перемещаетесь по нему, вы не видите визуальной подсказки, где вы находитесь. отличный ответ!
Джон Хупер
46

В вашем вопросе написано "Internet Explorer", но для тех, кто интересуется другими браузерами, теперь вы можете использовать all: unsetкнопки, чтобы изменить их стиль.

Это не работает в IE, но хорошо поддерживается везде.

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стиль. (Но я не думаю , что есть что - нибудь еще . Что нам нужно повторно добавить для целей a11y вы знаете что - нибудь делать?)
Dan Fabulich
8

Попробуйте удалить границу с кнопки:

input, button, submit
{
  border:none;
}
Сарфраз
источник
4

В бутстрапе 4 проще всего. Вы можете использовать классы: bg-transparentиborder-0

ВалРоб
источник
+ shadow-noneдля меня и этого достаточно. Спасибо!
Bachet
0

Думаю дело в кнопке "активное" состояние.

Мидхат
источник
Это должно быть активное состояние, для этого вы правы +1. Но я не смог заставить его работать должным образом
Саиф Бечан
«Я думаю» - это не ответ.
shinzou
0

Добавьте простой стиль вашей кнопке

.btn {
    background: none;
    color: inherit;
    border: none;
    padding: 0;
    font: inherit;
    cursor: pointer;
    outline: inherit;
}
СоуМитя чаухан
источник