修改jQuery.ScrollTo插件将元素滚动到页面中心(垂直/水平)或尽可能靠近中心
modify jQuery.ScrollTo plugin to scroll element to center of page (vertical/horizontal) or as close to center as possible
链接
当滚动到位于当前滚动位置左侧的元素时,只有一半的元素可见。
理想情况下,整个元素应该是可见的,甚至应该位于页面的中心。
在检查源代码后,插件如何决定停止滚动的时间还不清楚。
我知道有一个偏移设置可以用来调整最终滚动位置,但它只在垂直轴上,元素的大小会有所不同,所以我不想每次都更改该设置,而是找到一个通用的解决方案,自动调整要滚动到的元素的大小/位置并将其居中。
我最终从头开始编写了一个小型的轻量级实现。它假设要滚动到的元素是可滚动容器的直接子元素。它在css转换规模上下文中工作,因为它不依赖于$.position((
function scrollIntoView($target) {
var $parent = $target.parent(),
top = parseInt($target.css('top')),
left = parseInt($target.css('left')),
height = $target.height(),
width = $target.width(),
bottom = top + height,
right = left + width,
xCenter = left + width / 2,
yCenter = top + height / 2,
sWidth = $parent[0].scrollWidth,
sheight = $parent[0].scrollHeight,
pWidth = $parent.width(),
pHeight = $parent.height(),
destLeft, destTop; // the destination values for scroll left and top of the parent
// if element does not overfow on an axis, scroll to zero for that axis;
destTop = bottom < pHeight ? 0 : bottom - pHeight / 2 - height / 4;
destLeft = right < pWidth ? 0 : right - pWidth / 2 - width / 4;
$parent.animate({ scrollLeft: destLeft, scrollTop: destTop }, 600);
}
相关文章:
- 跟踪jqplot垂直折线图的鼠标位置
- 如何设置自定义垂直滑块Jquery的动画
- 使用Jquery Issue垂直重新排序Divs
- 简单的垂直上一个和下一个按钮代码点击上下移动jQuery
- 无法将文本与图片垂直对齐
- CodeMirror.禁用垂直滚动条
- 阻止文本区域垂直滚动
- 计算一个垂直于直线的点
- 使用jquery垂直对齐动态加载的图像
- 如何使 DIV 中的内容垂直对齐
- HTML中的垂直进度条
- 使用地理坐标,对更靠近用户的对象进行排序'的位置
- 如何在响应视频上垂直居中文本
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 悬停时展开垂直下拉菜单,而不是单击
- 通过使用jQuery对元素重新排序来模拟CSS Column垂直内容流
- CSS堆栈角度重复水平而非垂直
- 我需要帮助弄清楚一旦窗口的垂直高度被滚动,如何切换一个元素
- 如何垂直淡出文本,类似于Amazon'的产品说明
- 修改jQuery.ScrollTo插件将元素滚动到页面中心(垂直/水平)或尽可能靠近中心