Ответ 1
: состояние фокусировки
Причина этой проблемы сводится к тому, что слайд-шоу полагается на обработку :focus
CSS для запоминания состояния. Это очень временный обработчик, который теряется всякий раз, когда фокусируется новый элемент. Я построил слайд-шоу больше для неинтерактивных элементов, просто для демонстрационной работы - это отлично работает с :focus
Слайд-шоу возвращается назад к слайду 5 (или концевому слайду), когда ни одна из слайдов не сфокусирована. Это было хорошо для моих нужд, но, очевидно, не для вашего прецедента. Это происходит, когда вы фокусируетесь на своих элементах <a href="" />
.
Ограничения css
К сожалению, нет способа сопоставления (в текущем CSS) до родителя от сфокусированного ребенка - по крайней мере, этого я не знаю. Это позволило бы решить проблему с помощью чистого CSS. Очевидно, что вы можете совпадать вниз (т.е. parent:focus .child
), но это не помогает. Вы можете использовать флажок/радио-хак, который я рассматривал в то время, или вы можете переключиться на использование другого способа "запоминания состояния" ".
: целевое состояние
CSS в оригинальной демонстрации уже был адаптирован для поддержки :target
в качестве альтернативы, поэтому вы можете исправить текущую функциональность небольшим количеством JS. Однако я бы не стал полагаться на это в старых браузерах, но, опять же, старым браузерам, вероятно, было бы сложно справиться с этой системой.
Фрагмент и скрипка
Этот патч прослушивает событие :focus
и устанавливает фрагмент в URL-адресе в соответствии с идентификатором слайда. Это означает, что CSS затем переключается на прослушивание селекторов :target
, что должно сохранить выбранный правый слайд.
http://jsfiddle.net/63w9jnqq/4/
$('.slide').on('focus',function(e){
window.location.hash = $(this).attr('id');
});
Рекомендации
В будущем, я бы предложил, возможно, взглянуть на более современные методы внедрения CSS. Поскольку я уверен, что есть много новых улучшений, которые можно было бы использовать для расширения системы - в последнее время у меня не было времени. Возможно, даже есть возможность интегрировать события touch-style, чтобы сделать вещи более естественными для мобильных устройств, хотя, возможно, это просто принятие желаемого за действительное.
В конце дня, хотя в этом решении много CSS, лучше всего попробовать и понять каждую часть кода, который вы используете в своих проектах, поскольку это помогает отлаживать ситуации, которые могут возникнуть Здесь эта проблема упоминается в исходном сообщении здесь, и решение, использующее :target
, используется для обработки ссылок "sub nav":
Реализовать слайд-шоу/карусель только для CSS со следующими и предыдущими кнопками?