如何知道元素在屏幕上是否可见.如果没有,请滚动页面
How to know if an element is visible on the screen. If not, scroll the page
我正在尝试建立一个弹出窗口,就像这里的那个。在这种情况下,当我单击CUSTOMISE
按钮时,按钮下方会出现一个窗口。如果元素在屏幕上不完全可见,则页面向下或向上滚动,直到完全可见
我能够达到一半的结果:
$('body').on('click',"#"+ID,function () {
var $this = $(this);
$('#attr-div-'+baseId).css({
top: $this.position().top+55,
}).show();
});
如何滚动页面,直到元素完全可见?谢谢
这样的东西应该有效,但对更大的想法进行篡改会有所帮助:
$('body').on('click', "#"+ID, function() {
var popup = $('#attr-div-'+baseId);
var offset = $(this).offset().top+55;
popup.css('top', offset).show();
$(window).scrollTop(offset+popup.height()-$(this).height());
});
假设它没有固定的位置——如果它在窗户下面,你就必须重新定位。
它可以被细化(当然也可以动画化,而不是即时的):
http://codepen.io/anon/pen/dPBNWY?editors=001
我找到了解决方案:
$('body').on('click',"#"+ID,function () {
var $this = $(this);
$('#attr-div-'+baseId).css({
top: $this.position().top+55,
}).show();
$('html, body').animate({
scrollTop: $('#attr-div-'+baseId).offset().top-55
}, 1000);
});
这并不完全是我想要的,但它允许我使弹出窗口始终可见。
相关文章:
- 如何知道元素在屏幕上是否可见.如果没有,请滚动页面
- 可以转换显示属性吗?如果没有,什么'这是最好的解决方案
- 如果没有互联网连接,Android WebView离线消息
- 如果没有历史记录,我如何隐藏图像或按钮onclick=;历史.go(-1);
- 如果没有从下拉列表中选择任何值,则允许使用php、mysql、javascript将文本框添加到mysql表中
- 如果没有Ember中的控制器,我如何更改查询参数
- 如果没有添加PHP&Javascript
- 如果没有其他函数链接到promise,则默认行为
- 如果没有document.ready(),我怎么能拥有多个javascript函数呢
- 如果没有任何输入,如何启用按钮
- iframe中的iframe没有滚动
- 有没有一个javascript库可以生成这样的垂直切片背景图像?如果没有,我怎么能创建它
- Jquery自动完成:如果没有选择任何项目,则使tab键选择第一个项目
- 如果设置了位置,如何在每个状态下检查路由器ui,如果没有,则转到登录页
- 如何从网站获得apple touch图标,如果没有;不存在,则显示收藏夹
- 自动单击按钮(如果没有类)
- 如果没有使用跨浏览器表达式的滚动条,则无法获取屏幕宽度
- 如果用户在没有滚动条的情况下使用滚轮滚动,则触发
- 隐藏滚动条,如果没有必要-Ace编辑器
- 如果没有内容,请停止滚动