JavaScriptを使ってページ上部に固定バーを表示する方法をご紹介します。
Contents
ディスプレイ広告
ページ上部に固定バーを表示する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アナリティクスタグは流用しないで下さい。