LAYERの位置固定Fixed layer
  /⌒ヽ
 / ´_ゝ`)
 |    /   すいません、ちょっと前通りますね…
 | /| |
// | |
U  .U

関数部分
ページをスクロールしても、常に画面定位置にレイヤーを移動、配置するスクリプト。以下対応browser。Win n4 n6 n7 moz e4 e5 e6 o6 o7 / Mac n4 n6 n7 moz e4.5 e5 o6 s1/ Linux n4 n6 n7 / moz o7

◎fixedLAYER('レイヤー名',座標起点,X軸座標,Y軸座標)
レイヤー名: 固定するレイヤー名を記述。
座標起点 : 固定するレイヤーの位置を表す座標の起点を記述する。
rightTop…右上、rightBottom…右下、leftBottom…左下、leftTop…左上、center…中央。

function startFix(){
fixedLAYER('aaa','座標起点',X軸座標,Y軸座標)
}

function fixedLAYER(layName,posString,offSetX,offSetY){
if(!window.fixedLAYER[layName]){
//--ブラウザ判定
this.ie = !!document.all
this.n4 = !!document.layers
this.w3c = !!document.getElementById
this.ua = navigator.userAgent
this.mac45 = ua.indexOf('MSIE 4.5; Mac_PowerPC') != -1
this.mac5 = ua.indexOf('MSIE5.0;Mac_PowerPC') != -1
this.macie = ua.indexOf('Mac_PowerPC') !=-1 && ie
this.moz = ua.indexOf('Gecko') !=-1
this.opr = !!window.opera if(this.ie&&!(this.mac45)){
window.onscroll = window.onresize = startFix
}

if(this.n4)
window.onresize = function(){ location.reload() }
window.fixedLAYER[layName] = true
}

offSetX = parseInt(offSetX,10)
offSetY = parseInt(offSetY,10)

if( posString == 'rightTop' ){

if(this.ie&&!this.opr)
offLeft = document.body.clientWidth + offSetX
else offLeft = window.innerWidth + offSetX
if(this.ie&&!this.opr)
offTop = offSetY
else offTop = offSetY

} else if( posString == 'rightBottom' ){

if(this.ie&&!this.opr)
offLeft = document.body.clientWidth + offSetX
else offLeft = window.innerWidth + offSetX
if(this.ie&&!this.opr)
offTop = document.body.clientHeight + offSetY
else offTop = window.innerHeight + offSetY

} else if( posString == 'leftBottom' ){

if(this.ie&&!this.opr)
offLeft = offSetX
else offLeft = offSetX
if(this.ie&&!this.opr)
offTop = document.body.clientHeight + offSetY
else offTop = window.innerHeight + offSetY

} else if( posString == 'center' ){

if(this.ie&&!this.opr)
offLeft = document.body.clientWidth/2 + offSetX
else offLeft = window.innerWidth/2 + offSetX
if(this.ie&&!this.opr)
offTop = document.body.clientHeight/2+ offSetY
else offTop = window.innerHeight/2 + offSetY

} else {

if(this.ie&&!this.opr)
offLeft = offSetX
else offLeft = offSetX
if(this.ie&&!this.opr)
offTop = offSetY
else offTop = offSetY

}

offLeft = parseInt(offLeft,10)
offTop = parseInt(offTop,10)

if(document.all&&!this.opr){
var mx = document.body.scrollLeft + offLeft
var my = document.body.scrollTop + offTop
} else {
var mx = self.pageXOffset + offLeft
var my = self.pageYOffset + offTop
}

if(document.getElementById){ //e5,e6,n6,n7,m1,o6,o7,s1用
document.getElementById(layName).style.left = mx
document.getElementById(layName).style.top = my
} else if(document.all){ //e4用
document.all(layName).style.pixelLeft = mx
document.all(layName).style.pixelTop = my
} else if(document.layers) //n4用
document.layers[layName].moveTo(mx,my)

if(!(this.ie&&!this.mac45) || this.opr){
clearTimeout(fixedLAYER[layName])
fixedLAYER[layName]=setTimeout("fixedLAYER('"+layName+"','"+posString+"','" +offSetX+"','"+offSetY+"')",1000)
}
}




呼出部分
呼び出し。

<body onload="startFix()">




タグ記述部分
関数で指定したレイヤーネームのレイヤーに適用される。

<div id="aaa">
このレイヤーはスクロールしても絶えず定位置に表示される。
定位置と言うよりは、むしろページスクロールに合わせて必死に喰らい付いてくるって感じだが(w
</div>






© 2004 maki All rights reserved.