【问题标题】:keyboard navigation with pure css3纯css3的键盘导航
【发布时间】:2012-06-25 02:33:58
【问题描述】:

有没有办法在没有 js 或任何 js 库的情况下仅使用 css3 将键盘导航添加到链接?具体来说,我用一堆图像创建了一个纯 css3 灯箱效果,但我想使用左右键在图像之间导航而不点击屏幕上的任何位置,并使用转义来获得“取消”按钮的效果(类似于关闭)

【问题讨论】:

  • css 用于布局和样式,除了 :hover 之类的东西,它没有事件,也不能对键盘输入做出反应。这是 Javascript 的工作。
  • 你现在如何处理过渡(从图像 a 到图像 b)?请向我们展示代码,以便我们帮助您制作适合您的东西。虽然它必须是 javascript,但它可以是纯 javascript。
  • jsfiddle.net/darkyen/NUtnX @MarcB 但 HTML CAN!

标签: javascript css keyboard navigation lightbox


【解决方案1】:

使用 Cascading Style Sheets 几乎不可能实现您的要求,您可以为序列设置动画以进行计时或使用 CSS 执行动画、过渡等操作,但您无法仅使用 CSS 完成您想做的事情!

原因

  1. 级联样式表用于制作页面的视觉元素而不是 UX
  2. Css 没有与键盘交互的方法。

您可以添加一点 javascript 来实现这一点。但是因为你不想使用 javascript 你被卡住了!

复选框破解

使用复选框单选框可以达到这样的效果,但最初又是焦点 需要带。这可以使用自动对焦属性来完成..

所以这个小提琴应该可以解决你的问题。

http://jsfiddle.net/darkyen/NUtnX/

但我想事先警告您,任何“模糊”都会导致此操作失败。所以下面列出了更好的 javascript 代码变体

JavaScript 代码

实现您想要的 javascript 代码将包含非常少的 javascript 说你的标记是

所以你可以简单地分配一个 lil javascript

(function(){
 var slide = 0,  // Current slide 
     max   = 10, // Maximum Number of slides
 ele = document.getElementById("show");
     document.addEventListener('keydown',function(e){
          e.preventDefault();
          e.stopPropagation(); // To stop more event stuff and default behaviour
          key = e.keyCode; // To find out what key is this 
          if( key === 39 ){
              // Right arrow 
              // Aha we incremented the value!
              slide++;
              slide %= (max+1);
              // Increase the value of slide by 1 and keep em in limits
          }else if( key === 37){
              slide = (--slide >= 0)?slide: ( slide + max );
              // Will decrement the slide value by 1 and if they are less then 0 then   will cycle it to the last slide 
          }  

          ele.className.replace(/slide[0-9]/gi,'slide'+slide);                 
          // wasn't hard now was it ?     
     });
 })();

上面的最小 javascript 将完成更改幻灯片的任务,或者您始终可以看到 impress.js 的源代码

【讨论】:

  • +1 用于漂亮的复选框黑客!它唯一的问题是在 Safari 下使用它并不容易,因为默认情况下它从不关注单选按钮(除非你按下选项选项卡)。可能可以对其进行返工以与文本字段 + tab/shift-tab 一起使用。
  • 就我个人而言,我建议 OP 对旧浏览器使用“javascript”和优雅降级 :-) 但是是的,我们可能会使用 alt 属性对其进行重新处理
猜你喜欢
  • 2016-06-21
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
相关资源
最近更新 更多