ScrollTopおよびscrollLeftプロパティについて質問があります。 JavaScript(jquery)を使用せずにdivでこれらのプロパティを設定したいと思います。これは可能ですか?私の問題は、HTMLコードを解釈するプログラムがあり、プログラムがコードを解釈するときにスクロールしたdivの値がゼロになることです。プログラムはscrollTopまたはscrollLeft値を読み取ることができません。次のようなHTMLタグが存在します。
<div scrollLeft="300" scrollTop="200"></div>
これはCSS/HTMLのみでは不可能だと思います。
次のブラウザーで動作するソリューションを作成しました。
それは本当に少しハックですので、それを使用するかどうかを確認してください。 :)
ちょっとした説明
<input>
フィールドでHTML5属性autofocus
を使用しました。これは入力に焦点を合わせるため、ビューポートに入力する必要があります。そのため、指定された位置までスクロールします。ハイライトされたアウトラインを取り除き、入力をまったく表示しないようにするには、いくつかのスタイルを設定する必要があります。しかし、これはまだSafariに1つの点滅ピクセルを持たせているので、オーバーレイのように動作するスパンでトリックを行いました。 display: none
を使用するだけではオートフォーカスがトリガーされないことに注意してください(これはSafariでのみテストされています)。
デモ
デモはSafariで実行され、Chromeのみ。IEとFirefoxは<iframe>
でオートフォーカスを起動しないようです。
[〜#〜] css [〜#〜]
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;
}
[〜#〜] html [〜#〜]
<div class="outer">
<div class="inner">
<input type="text" autofocus></input>
<span></span>
</div>
</div>