【问题标题】:Set scrollTop and scrollLeft without JavaScript不使用 JavaScript 设置 scrollTop 和 scrollLeft
【发布时间】:2012-12-17 19:49:32
【问题描述】:

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

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

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

【问题讨论】:

    标签: javascript css scrolltop


    【解决方案1】:

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

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

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

    • 火狐4+
    • Safari 5+
    • 铬 6+
    • Opera 11+
    • IE 10+
    • Android 2.3+

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

    一点解释

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

    演示

    演示将仅在 Safari 和 Chrome 中运行。 IE 和 Firefox 似乎不会在 &lt;iframe&gt; 中触发自动对焦。

    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>

    【讨论】:

    • 您可以创建一个行为类似于可滚动容器的容器,而其父容器具有“溢出:隐藏”属性。通过这种方式,您可以轻松设置边距(例如,在 inline-style attr 中)以具有预滚动效果。
    • @xcy7e웃 您能否创建一个小提琴来演示它或添加您的解决方案作为可能的答案。
    • 用这种技术预滚动多个元素的任何方法? (没有 iframe,尽管它只能在 webkit 中使用)
    • 输入顶部不需要span,只需将输入设置为opacity: 0
    猜你喜欢
    • 2011-05-17
    • 2013-04-01
    • 2014-08-28
    • 2013-06-07
    • 1970-01-01
    • 2013-06-04
    • 1970-01-01
    • 2012-01-22
    相关资源
    最近更新 更多