Я поставил перед собой задачу создать визуально динамичный и интерактивный опыт только в HTML и CSS (без Javascript). До сих пор я не сталкивался ни с одной необходимой мне функцией, которую не мог бы сделать в чистом CSS и HTML. Этот, возможно, немного сложнее.
Мне нужно , чтобы пользователь с двойного щелчка <a>
, <input type="submit">
и <button>
тегов. Это сделано для того, чтобы они не могли дважды отправить форму или случайно сделать 2 запроса GET на URL. Как это можно сделать в чистом CSS? Даже если мы не можем установить disabled
без JS, должна быть некоторая техника маскирования или комбинация стилей, которые могут справиться с этим здесь в 2020 году.
Вот простой пример попытки:
.clicky:focus{
display: none;
pointer-events: none;
}
<a href="#down" class="clicky">test</a>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p id="down">target</p>
К сожалению, это отключает его до того, как по какой-то причине произойдет фактическое событие нажатия. Может быть, якоря не лучший способ проверить? Я буду продолжать делать дальнейшие попытки.
pointer-events: all
по умолчанию, но не в состояниях: active или: focus? Как установитьpointer-events: none
для этих государств?el:active, el:focus
сочетании с указателями-событиямиОтветы:
Одна идея состоит в том, чтобы иметь слой, который появляется сверху элемента после первого щелчка, чтобы избежать второго.
Вот основная идея, где я буду рассматривать продолжительность
1s
между двумя щелчками, которую вы можете уменьшить. Попробуйте нажать кнопку / ссылку, и вы заметите, что вы можете нажать снова только после1s
.Я добавляю небольшой оверлей, чтобы лучше увидеть трюк
источник
<a>
тегом<a href="#" onclick="console.log('lalala')">Click me</a>
чтобы связать с остальным кодом ничего не регистрируется в консоли. imho значит ссылка не нажата<a>
тегом. Я пробовал тестировать с помощью кнопок отправки, но мониторинг сетевого инспектора странный и противоречивый. Когда я нажимаю на ссылку, она не срабатывает. Если вы установите цель для привязки и нажмете ссылку, она отключит ссылку, но не перейдет к привязке.Первое решение
Идея состоит в том, чтобы использовать
radio button
состояние:checked
для внесения изменений. Мы прячемсяradio
круг и когда:checked
для<a>
макияжаpointer-events: none;
и дляbuttons
с различными типами мы прячем их и показатьdisabled
те.Второе решение
Этот подходит для
links
. Идея состоит в том, чтобы использовать:target
.element
Во-первых, цель скрыта. Тогда, когда целевое использование:target
дляpointer-events: none;
оф<a>
.Показать фрагмент кода
источник