JavaScript PR

ページ上部に固定バーを表示【JavaScript】

記事内に商品プロモーションを含む場合があります

JavaScriptを使ってページ上部に固定バーを表示する方法をご紹介します。

ページ上部に固定バーを表示するCSSの記述

※固定バー(#topbar)のスタイルを指定してます。必要に応じて変更して下さい。

<style type="text/css">
<!--
body{
	margin:0;
	padding:0;
}
h1{
	font-size:16px;
	font-weight:normal;
	line-height:2.0em;
	text-align:center;
	padding:70px 0 15px 0;
}
p{
	font-size:14px;
	font-weight:normal;
	text-align:center;
}
#idWrap{
	width:700px;
	height:4000px;
	margin:0 auto;
	text-align:left;
}
#topbar{
	position:absolute;
	border: 1px solid black;
	padding: 5px;
	width: 90%;
	visibility: hidden;
	z-index: 100;
	text-align:center;
}
#topbar a{
	color:#333;
	text-decoration:underline;
}
-->
</style>

JavaScriptを使ってページ上部に固定バーを表示するJavaScriptの記述

※固定バー(id=”topbar”)に対してページ上部に表示し、スクロールしても常に上部に固定表示される様にしてます。閉じるリンククリックでclosebar()が実行され、固定バーエリアが非表示になります。

<script type="text/javascript">
var persistclose=0
var startX = 50
var startY = 70
var verticalpos="fromtop"

function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
}

function get_cookie(Name) {
	var search = Name + "="
	var returnvalue = "";
	if (document.cookie.length > 0) {
		offset = document.cookie.indexOf(search)
		if (offset != -1) {
			offset += search.length
			end = document.cookie.indexOf(";", offset);
			if (end == -1) end = document.cookie.length;
			returnvalue=unescape(document.cookie.substring(offset, end))
		}
	}
	return returnvalue;
}

//固定バーを閉じる
function closebar(){
	if (persistclose)
	document.cookie="remainclosed=1"
	document.getElementById("topbar").style.visibility="hidden"
}

function staticbar(){
	barheight=document.getElementById("topbar").offsetHeight
	var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
	var d = document;
	function ml(id){
		var el=d.getElementById(id);
		if (!persistclose || persistclose && get_cookie("remainclosed")=="")
		el.style.visibility="visible"
		if(d.layers)el.style=el;
		el.sP=function(x,y){this.style.left=x+"px";this.style.top=y+"px";};
		el.x = startX;
		if (verticalpos=="fromtop")
		el.y = startY;
		else{
		el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
		el.y -= startY;
		}
		return el;
	}
	window.stayTopLeft=function(){
		if (verticalpos=="fromtop"){
		var pY = ns ? pageYOffset : iecompattest().scrollTop;
		ftlObj.y += (pY + startY - ftlObj.y)/8;
		}
		else{
		var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
		ftlObj.y += (pY - startY - ftlObj.y)/8;
		}
		ftlObj.sP(ftlObj.x, ftlObj.y);
		setTimeout("stayTopLeft()", 10);
	}
	ftlObj = ml("topbar");
	stayTopLeft();
}

if (window.addEventListener)
window.addEventListener("load", staticbar, false)
else if (window.attachEvent)
window.attachEvent("onload", staticbar)
else if (document.getElementById)
window.onload=staticbar
</script>

ページ上部に固定バーを表示するHTMLの記述

※固定バー(id=”topbar”)エリアを用意します。必要に応じて変更して下さい。

<div id="topbar">
固定バーエリアです。  <a href="" onClick="closebar(); return false">閉じる</a>
</div>
<div id="idWrap">
	<br />
	<br />
    <h1>ページ上部に固定バーを常に表示します。下にスクロールしてみて下さい。<br />「閉じる」をクリックするとバーが消えます。</h1>
    <p>jQueryは使用してません。</p>
    
</div><!--/idWrap-->

ページ上部に固定バーを表示するデモページ

ページ上部に固定バーを表示するデモページ

ソース元:Dynamic Drive DHTML scripts- Floating Top Bar script

ソース元:Dynamic Drive DHTML scripts- Floating Top Bar script

固定メニューや広告エリアの表示等で使えそうです。

 
※流用される場合は自己責任でお願いします。
 デモページheadタグ内のGoogleアナリティクスタグは流用しないで下さい。