javascript - 不使用 JavaScript 设置 scrollTop 和 scrollLeft

标签 javascript css scrolltop

我对 scrollTopscrollLeft 属性有疑问。我想在不使用 JavaScript (jQuery) 的情况下在我的 div 中设置这些属性。这可能吗?

我的问题是,我有一个解释 HTML 代码的程序,当程序解释代码时,我滚动的 div 的值为零。程序无法读取 scrollTopscrollLeft 值。存在一个 HTML 标签,例如:

<div scrollLeft="300" scrollTop="200"></div>

最佳答案

恐怕仅使用 CSS/HTML 是不可能的。

编辑 [05.01.2012] - 一个可能的解决方案

我创建了一个适用于以下浏览器的解决方案:

  • 火狐 4+
  • Safari 5+
  • Chrome 6+
  • 歌剧 11+
  • IE 10+
  • Android 2.3+

它真的有点hacky,所以看看你是否会使用它。 :)

一点解释

我使用了 HTML5 属性 autofocus<input> 上- field 。由于这将聚焦输入,因此必须将其放入视口(viewport)中。因此它将滚动到给定的位置。要摆脱突出显示的轮廓并完全看不到输入,您必须设置一些样式。但这仍然迫使 Safari 有一个闪烁的像素,所以我用跨度做了一个技巧,它就像一个覆盖层。请注意,您不能简单地使用 display: none因为这不会触发自动对焦(仅在 Safari 中测试过)。

演示

演示将仅在 Safari 和 Chrome 中运行。 IE 和 Firefox 似乎不会在 <iframe> 中触发自动对焦.

div.outer {
  height: 100px;
  width: 100px;
  overflow: auto;
}

div.inner {
  position: relative;
  height: 500px;
  width: 500px;
}

div.inner>input {
  width: 1px;
  height: 1px;
  position: absolute;
  z-index: 0;
  top: 300px;
  left: 200px;
  border: 0;
  outline: 0;
}

div.inner>span {
  width: 1px;
  height: 1px;
  position: absolute;
  z-index: 1;
  top: 300px;
  left: 200px;
  background: white;
}
<div class="outer">
  <div class="inner">
    <input type="text" autofocus></input>
    <span></span>
  </div>
</div>

关于javascript - 不使用 JavaScript 设置 scrollTop 和 scrollLeft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14139091/

相关文章:

javascript - 使用 JQuery next() 和 find() 在悬停的 div 上找到下一个最接近的类给定元素并显示它

css - 从 child 身上移除变换和透视。 not() 并重新指定不起作用

javascript - 滚动到可滚动 div 中特定类的顶部 - 每次单击向上/向下按钮

javascript - 对象属性在 console.log 中显示为未定义

javascript - 为什么控制台输出作为函数出现?

javascript - 中心 .css 按钮,显示 javascript Content Locker 和显示 java Alert onClick

html - 使用全局变量来包含 css

jquery - 滚动到 DIV 的垂直中间

javascript - 如何使用 animate 和scrollTop 将浏览器窗口的滚动条或 div 滚动条设置为增量滚动?

javascript - 检查 Canvas 是否为黑色