javascript-锚标记单击在CSS滑块中不起作用
作者:互联网
我想在我的项目中使用以下CSS滑块
http://jsfiddle.net/63w9jnqq/1/
它不使用任何JavaScript或jQuery.当我单击除“幻灯片5”以外的任何幻灯片上的链接时,会将我带回到第一个“幻灯片5”,而不是打开新选项卡.这是CSS繁重的代码,我不知道如何解决.我可以使用额外的jQuery或JavaScript来解决此问题.
我尝试了以下jQuery来停止点击操作,但它不起作用
$(document).ready(function(){
$(".slide-gfx a").click(function(event){
event.preventDefault();
});
});
解决方法:
:焦点状态
导致此问题的原因在于,幻灯片依赖CSS的:focus处理来记住状态.这是一个非常临时的处理程序,每当一个新元素被聚焦时就会丢失.我为非交互式元素更多地构建了幻灯片演示,只是为了演示视觉工作-在:focus上很好用
当所有幻灯片都没有聚焦时,幻灯片将还原为幻灯片5(或最终幻灯片).这对我的需求来说很好,但显然不适用于您的用例.当您专注于< a href =“” />元素.
CSS的局限性
不幸的是,没有办法(在当前的CSS中)将一个重点突出的孩子与父母配对-至少我不知道.这将解决纯CSS的问题.您显然可以向下匹配(即parent:focus .child),但这无济于事.您可以使用我当时考虑的The checkbox/radio hack,也可以切换到其他方式使用“记住状态”.
:目标状态
原始演示中的CSS已经被定制为还支持:target作为替代,因此您可以使用少量JS修补当前功能.但是,我不想在较旧的浏览器中依赖它-但是,同样,较旧的浏览器可能仍然很难应对这个系统.
片段和小提琴
该补丁监听:focus事件,并设置URL中的片段以匹配幻灯片的ID.这意味着CSS然后切换到监听:target选择器,这应保持选择正确的幻灯片.
http://jsfiddle.net/63w9jnqq/4/
$('.slide').on('focus',function(e){
window.location.hash = $(this).attr('id');
});
建议
展望未来,我建议您也许应该看一下实现CSS的最新方法.我敢肯定,可以使用许多新的改进来扩展系统-我最近没有时间.甚至可能集成了触摸式事件,使事情更自然地移动友好,尽管这也许只是一厢情愿.
归根结底,即使此解决方案中有很多CSS,还是最好尝试并了解您在项目中使用的代码的每一部分-因为这有助于调试可能会遇到的情况.这里的原始帖子中提到了问题,使用使用:target的解决方案来处理“ sub nav”链接:
Implement a CSS-only slideshow / carousel with next and previous buttons?
标签:javascript,jquery,css3,css-transitions 来源: https://codeday.me/bug/20191012/1898587.html