インラインフレーム(IFrame要素)内のHTMLドキュメントを自動横スクロールするJavaScriptサンプル。
サンプル(実装例)
実装例(サンプル)の動作について
- このページを読み込むと、インラインフレーム(IFrame要素)内のHTMLドキュメントを、自動的に横スクロールする。
- 1つ目から3つ目のdiv要素ごとに、2秒間一時停止する。
- 最後の3つ目のdiv要素までスクロールすると、1つ目のdiv要素を表示する位置まで急いでスクロールする。
ソースコード
JavaScript
<script type="text/javascript">
window.onload = function () {
setTimeout( "autoScroll()", 2000 );
}
var $scrollX = 0;
var $boxWidth = 300;
var $boxCounts = 3;
function autoScroll() {
var $sampleIFrame = document.getElementById( "sampleIFrame" );
if( $scrollX <= $boxWidth * ( $boxCounts - 1 ) ){
$sampleIFrame.contentWindow.scrollTo( ++$scrollX, 0 );
if( $scrollX % $boxWidth == 0 ){
setTimeout( "autoScroll()", 2000 );
}else{
setTimeout( "autoScroll()", 10 );
}
}else{
var $intervalID = setInterval(
function(){
scrollX( --$scrollX );
},
1
);
function scrollX( $scrollX ) {
$sampleIFrame.contentWindow.scrollTo( $scrollX, 0 );
if( $scrollX == 0 ){
clearInterval( $intervalID );
setTimeout( "autoScroll()", 2000 );
}
}
}
}
</script>
window.onload = function () {
setTimeout( "autoScroll()", 2000 );
}
var $scrollX = 0;
var $boxWidth = 300;
var $boxCounts = 3;
function autoScroll() {
var $sampleIFrame = document.getElementById( "sampleIFrame" );
if( $scrollX <= $boxWidth * ( $boxCounts - 1 ) ){
$sampleIFrame.contentWindow.scrollTo( ++$scrollX, 0 );
if( $scrollX % $boxWidth == 0 ){
setTimeout( "autoScroll()", 2000 );
}else{
setTimeout( "autoScroll()", 10 );
}
}else{
var $intervalID = setInterval(
function(){
scrollX( --$scrollX );
},
1
);
function scrollX( $scrollX ) {
$sampleIFrame.contentWindow.scrollTo( $scrollX, 0 );
if( $scrollX == 0 ){
clearInterval( $intervalID );
setTimeout( "autoScroll()", 2000 );
}
}
}
}
</script>
HTML
<iframe id="sampleIFrame" src="http://alphasis.info/wp-content/uploads/2014/02/javascript-sample-autoScroll-IFrame-width.html"></iframe>
CSS
<style>
#sampleIFrame {
margin: 0;
padding: 0;
width: 300px;
height: 300px;
overflow: hidden;
line-height: 1.5em;
font-size: 16px;
border: 1px solid gray;
border-radius: 10px;
background-color: yellow;
text-align: center;
}
</style>
#sampleIFrame {
margin: 0;
padding: 0;
width: 300px;
height: 300px;
overflow: hidden;
line-height: 1.5em;
font-size: 16px;
border: 1px solid gray;
border-radius: 10px;
background-color: yellow;
text-align: center;
}
</style>
インラインフレーム内のHTMLドキュメント
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>サンプルページ</title>
<style>
body {
margin: 0;
padding: 0;
}
#sampleBox {
width: 900px;
height: 900px;
text-align: center;
font-size: 16px;
}
#sampleBox div {
float: left;
width: 300px;
height: 300px;
background-color: yellow;
}
</style>
</head>
<body>
<div id="sampleBox">
<div style="background-color: lightblue;">
1つ目
</div>
<div>
2つ目
</div>
<div style="background-color: pink;">
3つ目
</div>
</div>
<div style="clear: left;"></div>
</body>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<title>サンプルページ</title>
<style>
body {
margin: 0;
padding: 0;
}
#sampleBox {
width: 900px;
height: 900px;
text-align: center;
font-size: 16px;
}
#sampleBox div {
float: left;
width: 300px;
height: 300px;
background-color: yellow;
}
</style>
</head>
<body>
<div id="sampleBox">
<div style="background-color: lightblue;">
1つ目
</div>
<div>
2つ目
</div>
<div style="background-color: pink;">
3つ目
</div>
</div>
<div style="clear: left;"></div>
</body>