Tinyscrollbar和tab键交互
Tinyscrollbar and tab key interaction
如何解决与tinyscrollbar的tab键交互问题。当我按tab键跳到不在视图中的输入时,我会得到破坏的布局,滚动条消失,等等。如何解决这个问题?
这就是我所做的:向元素添加一个tabindex
属性,这样元素就可以从选项卡键或鼠标点击接收焦点状态:
<div class="scroll-area" tabindex="1">
<div class="viewport">
<div class="overview">
… CONTENT …
</div>
</div>
<div class="scrollbar">
<span class="track"><span class="thumb"></span></span>
</div>
</div>
接下来,我在TinyScrollbar插件中创建此函数,以添加键盘支持并启用:focus
:上的键盘导航
$.fn.tinyscrollbar = function(params) {
var options = $.extend({}, $.tiny.scrollbar.options, params),
$this = this;
$this.each(function() {
$(this).data('tsb', new Scrollbar($(this), options));
// Enable keyboard support on focus
$this.on('focus', function () {
$(this).on('keydown', function (e) {
if (e.keyCode == 38 || e.keyCode == 37) {
$(this).tinyscrollbar_keystep(40); // step 40px on single keypress
return false;
} else if (e.keyCode == 40 || e.keyCode == 39) {
$(this).tinyscrollbar_keystep(-40); // step -40px on single keypress
return false;
}
});
});
});
return $this;
};
然后,创建.tinyscrollbar_keystep()
以更新.tinyscrollbar_update()
:下方的滚动步骤
$.fn.tinyscrollbar_update = function(sScroll) {
return $(this).data('tsb').update(sScroll);
};
// Add this functionality for scroll update on keypress (in this case)
$.fn.tinyscrollbar_keystep = function(sScroll) {
return $(this).data('tsb').keystep(sScroll);
};
initialize()
后的.keystep
功能
function initialize() { … }
this.keystep = function(sScroll) {
if (oContent.ratio < 1) {
iScroll -= sScroll;
iScroll = Math.min((oContent[options.axis] - oViewport[options.axis]), Math.max(0, iScroll));
oThumb.obj.css(sDirection, iScroll / oScrollbar.ratio);
oContent.obj.css(sDirection, - iScroll);
}
};
演示:http://jsbin.com/zaqogidexese/1/edit
我在这里有类似的情况,这是我对表单输入字段的解决方案:
$(document).on('keydown',function(e) {
switch (e.keyCode ? e.keyCode : e.which) {
case 9: // Tab
if (e.target.localName == 'input') {
content.tinyscrollbar_update($(e.target).position().top);
}
break;
}
});
如果每个输入都有任何包装器元素,请将".position().top"更新为".pparent().position
相关文章:
- 在Windows 10中自动执行例行程序(主要与浏览器交互)
- 使用向下箭头键(与tab键一样)聚焦下一个输入
- 禁用Tab键以进行具有特定Div ID的输入
- Javascript没有't更新DOM,直到用户交互
- Tab键不会't继续chrome/IE11中的表单字段
- angularjs路线过渡如何以交互方式设置动画
- 用于编写与我作为客户端查看的网页交互的脚本的术语(如果有的话)是什么
- 交互.js拖动的项目移动到顶部
- Javascript-iPad Tab键检测,带蓝牙键盘
- 捕捉TAB键按下键向上
- Jquery keep Alive/任何客户端交互
- 制作一个高阶组件,用TypeScript实现反应中继和反应路由器的交互操作
- Noob web开发人员希望添加web设计和交互
- 更改javascript中的tab键行为
- 交互和目标保存冻结应用程序
- /如何使用java脚本在safari浏览器中获取活动的Tab url
- 使用JavaScript验证用户交互/输入-这是一种很好的方法
- Impress.Js正确使用Tab
- 如何在Slack API中与事件交互
- Tinyscrollbar和tab键交互