カテゴリー別アーカイブ: DOM

指定した要素を下にスクロールさせる/スクロールした値を取得する – scrollTop

指定した要素を下にスクロールさせる/スクロールした値を取得するには scrollTop プロパティを使用します。

scrollTop:取得する場合の書き方

取得する要素.scrollTop;

scrollTop:変更する場合の書き方

変更する要素.scrollTop = 変更する数理;

例1:#element が下にスクロールされている値をクリックして取得し表示する(#text へ表示)。

css で親の #example 要素よりも子要素が縦のサイズが大きく指定されていいます。overflow: auto; が #example には指定されている為縦にスクロールできるようになっています。

HTML

<div id="example">
    <div class="textbox">
        <p>↓ボタンをクリックでスクロール</p>
        <p>↓</p>
        <p>↓ボタンをクリックでスクロール</p>
        <p>↓</p>
    </div>
</div>
<button id="sc_btn">クリックで下50pxずつへスクロールします</button>

CSS

#example{
	width: 500px;
	height:200px;
	padding: 10px;
	background: #eee;
	border: solid 1px #666;
	overflow: auto;
}
.textbox{
	height: 1000px;
	margin: 0;
	padding: 0;
}
p{
	margin: 0 0 100px;
}

JavaScript

ボタン #sc_btn をクリックすると#example が下に何pxスクロールされたかを #text へ表示します。

window.onload = init;
function init(){

var element = document.getElementById('example');
var btn = document.getElementById('sc_btn');
var text = document.getElementById('text');

    btn.onclick = function(){
        var elementTop = element.scrollTop ;
        text.innerHTML = elementTop;
    };
    
};

サンプル

下のグレーのボックス #example の横にでているスクロールバーを下に動かし、ボタンをクリックしてみて下さい。現在のスクロールされている値が表示されます。

例2:#element の下のボタンをクリックして下に 50px ずつスクロールさせる。

HTML

<div id="example">
    <p>スクロールしてボタンをクリック→</p>
</div>
<button id="sc_btn">左へスクロールした値を取得します→</button>
<p id="text">0</p>

CSS

#example{
	width: 500px;
	height:100px;
	padding: 10px;
	background: #eee;
	border: solid 1px #666;
	overflow: auto;
}
p{
	width: 1000px;
	margin: 0;
	padding: 0;
}

JavaScript

ボタン #sc_btn をクリックすると #example のスクロール移動値が 50px ずつ足されて下へ移動します。

window.onload = init;
function init(){

var element = document.getElementById('example');
var btn = document.getElementById('sc_btn');

    btn.onclick = function(){
        element.scrollTop += 50;
    };
    
};  

サンプル

下のグレーのボックス #example 下のボタンをクリックすると下へ50pxずつスクロールします。

指定した要素を左側にスクロールさせる/スクロールした値を取得する – scrollLeft

指定した要素を左側にスクロールさせる/スクロールした値を取得するには scrollLeft プロパティを使用します。

scrollLeft:取得する場合の書き方

取得する要素.scrollLeft;

scrollLeft:変更する場合の書き方

変更する要素.scrollLeft = 変更する数理;

例1:#element が左にスクロールされている値をクリック(#sc_btn をクリック)して取得して表示する(#text へ表示)。

css で親の #example 要素よりも子の p 要素が横幅が大きく指定されていいます。overflow: auto; が #example には指定されている為横にスクロールできるようになっています。

HTML

<div id="example">
    <p>スクロールしてボタンをクリック→</p>
</div>
<button id="sc_btn">左へスクロールした値を取得します→</button>
<p id="text">0</p>

CSS

#example{
	width: 500px;
	height:100px;
	padding: 10px;
	background: #eee;
	border: solid 1px #666;
	overflow: auto;
}
p{
	width: 1000px;
	margin: 0;
	padding: 0;
}

JavaScript

ボタン #sc_btn をクリックすると#example が左に何pxスクロールされたかを #text へ表示します。

window.onload = init;
function init(){

var element = document.getElementById('example');
var btn = document.getElementById('sc_btn');
var text = document.getElementById('text');

    btn.onclick = function(){
        var elementLeft = element.scrollLeft;
        text.innerHTML = elementLeft;
    };
};  

サンプル

下のグレーのボックス #example の下にでているスクロールバーを左に動かし、ボタンをクリックしてみて下さい。現在のスクロールされている値が表示されます。

例2:#element の下のボタンをクリックして左に 50px ずつスクロールさせる。

css で親の #example 要素よりも子の p 要素が横幅が大きく指定されていいます。overflow: auto; が #example には指定されている為横にスクロールできるようになっています。

HTML

<div id="example">
    <p>スクロールしてボタンをクリック→</p>
</div>
<button id="sc_btn">ボタンをクリックで左へスクロールします→</button>

CSS

#example{
	width: 500px;
	height:100px;
	padding: 10px;
	background: #eee;
	border: solid 1px #666;
	overflow: auto;
}
p{
	width: 1000px;
	margin: 0;
	padding: 0;
}

JavaScript

ボタン #sc_btn をクリックすると #example のスクロール移動値が 50px ずつ足されて移動します。

window.onload = init;
function init(){

var element = document.getElementById('example');
var btn = document.getElementById('sc_btn');

    btn.onclick = function(){
        element.scrollLeft += 50;
    };
    
};   

サンプル

下のグレーのボックス #example 下のボタンをクリックすると左へ50pxずつスクロールします。

指定した要素のスクロール分も合わせた横幅を取得する – scrollWidth

指定した要素のスクロール分も合わせた横幅を取得するには scrollWidth プロパティを使用します。ピクセル単位となり、paddingを含む内側の幅になります。(border、margin は含みません)clientWidth と同じような値の取り方ですが、このプロパティの場合は本来スクロールされて見えない部分(overflow: auto などで要素の一部がスクロールされている場合)も含めた値になります。

scrollWidth:書き方

調べたい要素.scrollWidth;

例:#element のスクロールされている部分も含めた横幅を取得する。

HTML

<div id="example">
    <p>Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

#example{
	width: 400px;
	height:100px;
	padding: 15px;
	margin: 10px;
	background: #ccc;
	border: solid 1px #666;
	overflow: auto;
}
p{
	width: 600px;
	background: red;
	margin: 0;
	padding: 0;
}

JavaScript

var element = document.getElementById('example');
var elementWidth = element.scrollWidth ; 
console.log(elementWidth);

結果

600px (p要素の横幅)+ 15px(padding値)の合計 615 と値が返ってきました。
#element のスクロールされている部分も含めた横幅を取得した結果

取得するのは以下の赤の部分とpadding値になります。
scrollWidth で取得する部分 

指定した要素のスクロール分も合わせた高さを取得する – scrollHeight

指定した要素のスクロール分も合わせた高さを取得するには scrollHeight プロパティを使用します。ピクセル単位となり、paddingを含む内側の幅になります。(border、margin は含みません)clientHeight と同じような値の取り方ですが、このプロパティの場合は本来スクロールされて見えない部分(overflow: auto などで要素の一部がスクロールされている場合)も含めた値になります。

scrollHeight:書き方

調べたい要素.scrollHeight;

例:#element のスクロールされている部分も含めた内側の高さを取得する。

HTML

<div id="example">
    <p>Text1のテキスト</p>
    <p>Text2のテキスト</p>
    <p>Text3のテキスト</p>
    <p>Text4のテキスト</p>
    <p>Text5のテキスト</p>
    <p>Text6のテキスト</p>
    <p>Text7のテキスト</p>
</div>

CSS

#example{
	width: 400px;
	height:100px;
	padding: 15px;
	margin: 10px;
	background: #ccc;
	border: solid 1px #666;
	overflow: auto;
}
p{
	height: 25px;
	background: red;
	margin: 0;
	padding: 0;
}

JavaScript

var element = document.getElementById('example');
var elementHeight = element.scrollHeight  ; 
console.log(elementHeight);

結果

25px (p要素の高さ)× 7(p要素の数)+ 30px(padding値)の合計 205 と値が返ってきました。
#element のスクロールされている部分も含めた内側の高さを取得した結果

取得するのは以下の赤の部分とpadding値になります。
scrollHeightで取得される部分

指定した要素の外側の高さを取得する – offsetHeight

指定した要素の外側の高さを取得するには offsetHeight プロパティを使用します。ピクセル単位となり、border、margin 、paddingを含む外側の幅になります。

offsetHeight:書き方

調べたい要素.offsetHeight;

例:#element の外側の高さを取得する。

HTML

<div>
    <p id="example">Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

#example{
	height:100px;
	padding: 10px;
	margin: 10px;
	background: #ccc;
	border: solid 1px #666;
}

JavaScript

var element = document.getElementById('example');
var elementHeight = element.offsetHeight  ; 
console.log(elementHeight); 

結果

高さとmargin padding border を含めた値が返ってきました。
#element の外側の高さを取得した結果

指定した要素の外側の横幅を取得する – offsetWidth

指定した要素の外側の横幅を取得するには offsetWidth プロパティを使用します。ピクセル単位となり、border、margin 、paddingを含む外側の幅になります。

offsetWidth:書き方

調べたい要素.offsetWidth;

例:#element の外側の横幅を取得する。

HTML

<div>
    <p id="example">Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

#example{
	width:450px;
	padding: 10px;
	margin: 10px;
	background: #ccc;
	border: solid 1px #666;
}

JavaScript

var element = document.getElementById('example');
var elementWidth = element.offsetWidth  ; 
console.log(elementWidth); 

結果

横幅とmargin padding border を含めた値が返ってきました。
#element の外側の横幅を取得した結果

指定した要素の親要素のうち一番近い position の指定がある要素を取得する – offsetParent

指定した要素の親要素のうち一番近い、CSS の position が relative、absolute、fixed の何れかが設定されている要素を取得するには、offsetParent プロパティを使用します。

offsetParent:書き方

調べたい要素.offsetParent;

例:#element の親要素以上で position が設定されている要素を取得する。

HTML

<div>
    <section>
        <h1>exampleTitle</h1>
        <p id="example">Text1のテキスト</p>
        <p>Text2のテキスト</p>
    </section>
</div>

CSS

div{
	position:relative;
}
#example{
	margin: 15px;
	background: #ccc;
}

JavaScript

var element = document.getElementById('example');
var elementParent = element.offsetParent  ; 
console.log(elementParent);  

結果

一番近い要素で position:relative が設定されているのが div なので div要素が返されました。
#element の親要素以上で position が設定されている要素を取得した結果

指定した要素のドュメント左からの値を取得する – offsetLeft

指定した要素のドュメント左からの値を取得するには offsetLeft プロパティを使用します。ピクセル単位となます。

offsetLeft:書き方

調べたい要素.offsetLeft;

例:#element の左からの位置を取得する。

HTML

<div id="example">
    <p>Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

body{
	margin: 0;
	padding: 0;
}
#example{
	margin: 15px;
}

JavaScript

var element = document.getElementById('example');
var elementleft = element.offsetLeft  ; 
console.log(elementleft); 

結果

margin の値が左側から15px となっているので、15px と値が返されました。
#element の左からの位置を取得した結果

指定した要素のドュメント上部からの値を取得する – offsetTop

指定した要素のドュメント上部からの値を取得するには offsetTop プロパティを使用します。ピクセル単位となます。

offsetTop:書き方

調べたい要素.offsetTop;

例:#element の上部からの位置を取得する。

HTML

<div id="example">
    <p>Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

#example{
	margin: 15px;
}

JavaScript

var element = document.getElementById('example');
var elementTop = element.offsetTop  ; 
console.log(elementTop);  

結果

margin の値がトップから15px となっているので、15px と値が返されました。
#element の上部からの位置を取得した結果

指定した要素の左のボーダーの幅を取得する – clientLeft

指定した要素の左のボーダーの幅を取得するには clientLeft プロパティを使用します。ピクセル単位となり、margin、padding は含みません。

clientLeft:書き方

調べたい要素.clientLeft;

例:#element の左のボーダーの幅を取得する。

HTML

<div id="example">
    <p>Text1のテキスト</p>
    <p>Text2のテキスト</p>
</div>

CSS

#example{
	border: solid 10px #666;
}

JavaScript

var element = document.getElementById('example');
var elementBdrLeft = element.clientLeft;   
console.log(elementBdrLeft);

結果

ボーダーのCSS設定は10pxになっていますので、10 という数字が返されました。
#element の左のボーダーの幅を取得した結果

#element のブラウザでの表示