Template:Uppsala-SwedenTemplatetest

From 2011.igem.org

(Difference between revisions)
Line 12: Line 12:
-
<script language="javascript" src="http://www.fiendish.demon.co.uk/FloatLayer.js"></script>
+
<script type="text/javascript">
 +
 
 +
/////////////////////////////////////////////////////////////////////
 +
 
 +
var FloatLayers      = new Array();
 +
var FloatLayersByName = new Array();
 +
 
 +
function addFloatLayer(n,offX,offY,spd){new FloatLayer(n,offX,offY,spd);}
 +
function getFloatLayer(n){return FloatLayersByName[n];}
 +
function alignFloatLayers(){for(var i=0;i<FloatLayers.length;i++)FloatLayers[i].align();}
 +
 
 +
function getXCoord(el) {
 +
x=0;
 +
while(el){
 +
x+=el.offsetLeft;
 +
el=el.offsetParent;
 +
}
 +
return x;
 +
}
 +
function getYCoord(el) {
 +
y=0;
 +
while(el){
 +
y+=el.offsetTop;
 +
el=el.offsetParent;
 +
}
 +
return y;
 +
}
 +
 
 +
/////////////////////////////////////////////////////////////////////
 +
 
 +
FloatLayer.prototype.setFloatToTop=setTopFloater;
 +
FloatLayer.prototype.setFloatToBottom=setBottomFloater;
 +
FloatLayer.prototype.setFloatToLeft=setLeftFloater;
 +
FloatLayer.prototype.setFloatToRight=setRightFloater;
 +
FloatLayer.prototype.initialize=defineFloater;
 +
FloatLayer.prototype.adjust=adjustFloater;
 +
FloatLayer.prototype.align=alignFloater;
 +
 
 +
function FloatLayer(n, offX, offY, spd) {
 +
this.index=FloatLayers.length;
 +
 
 +
FloatLayers.push(this);
 +
FloatLayersByName[n] = this;
 +
 
 +
this.name    = n;
 +
this.floatX  = 0;
 +
this.floatY  = 0;
 +
this.tm      = null;
 +
this.steps  = spd;
 +
this.alignHorizontal=(offX>=0) ? leftFloater : rightFloater;
 +
this.alignVertical  =(offY>=0) ? topFloater : bottomFloater;
 +
this.ifloatX = Math.abs(offX);
 +
this.ifloatY = Math.abs(offY);
 +
}
 +
 
 +
/////////////////////////////////////////////////////////////////////
 +
 
 +
function defineFloater(){
 +
this.layer  = document.getElementById(this.name);
 +
this.width  = this.layer.offsetWidth;
 +
this.height = this.layer.offsetHeight;
 +
this.prevX  = this.layer.offsetLeft;
 +
this.prevY  = this.layer.offsetTop;
 +
}
 +
 
 +
function adjustFloater() {
 +
this.tm=null;
 +
if(this.layer.style.position!='absolute')return;
 +
 
 +
var dx = Math.abs(this.floatX-this.prevX);
 +
var dy = Math.abs(this.floatY-this.prevY);
 +
 
 +
if (dx < this.steps/2)
 +
cx = (dx>=1) ? 1 : 0;
 +
else
 +
cx = Math.round(dx/this.steps);
 +
 
 +
if (dy < this.steps/2)
 +
cy = (dy>=1) ? 1 : 0;
 +
else
 +
cy = Math.round(dy/this.steps);
 +
 
 +
if (this.floatX > this.prevX)
 +
this.prevX += cx;
 +
else if (this.floatX < this.prevX)
 +
this.prevX -= cx;
 +
 
 +
if (this.floatY > this.prevY)
 +
this.prevY += cy;
 +
else if (this.floatY < this.prevY)
 +
this.prevY -= cy;
 +
 
 +
this.layer.style.left = this.prevX;
 +
this.layer.style.top  = this.prevY;
 +
 
 +
if (cx!=0||cy!=0){
 +
if(this.tm==null)this.tm=setTimeout('FloatLayers['+this.index+'].adjust()',50);
 +
}else
 +
alignFloatLayers();
 +
}
 +
 
 +
function setLeftFloater(){this.alignHorizontal=leftFloater;}
 +
function setRightFloater(){this.alignHorizontal=rightFloater;}
 +
function setTopFloater(){this.alignVertical=topFloater;}
 +
function setBottomFloater(){this.alignVertical=bottomFloater;}
 +
 
 +
function leftFloater(){this.floatX = document.body.scrollLeft + this.ifloatX;}
 +
function topFloater(){this.floatY = document.body.scrollTop + this.ifloatY;}
 +
function rightFloater(){this.floatX = document.body.scrollLeft + document.body.clientWidth - this.ifloatX - this.width;}
 +
function bottomFloater(){this.floatY = document.body.scrollTop + document.body.clientHeight - this.ifloatY - this.height;}
 +
 
 +
function alignFloater(){
 +
if(this.layer==null)this.initialize();
 +
this.alignHorizontal();
 +
this.alignVertical();
 +
if(this.prevX!=this.floatX || this.prevY!=this.floatY){
 +
if(this.tm==null)this.tm=setTimeout('FloatLayers['+this.index+'].adjust()',50);
 +
}
 +
}
 +
 
 +
 
 +
</script>
<script language="javascript">
<script language="javascript">

Revision as of 15:34, 6 July 2011



Here is a <div> that just contains some text. It can be floated as you will see.

Now press the button to see what happens next.

Interesting effects and functionality can be achieved on Web pages by the use of floating content, or layers. By floating I mean content that moves about the page, and that does not appear in a fixed location with respect to the page layout. The content may move to follow window scrolling such that it is always visible in the window for example. Imagine how handy this type of functionality could be when displaying a large number of rows in a table when a series of buttons need to be provided for actioning the selection of some rows. Without a scroll sensitive floating button-bar, the table would either require button duplication in amongst the rows, duplication of the buttons at the top and bottom, or a bunch of frames to allow the user to easily select some rows and action them. With the floating controls, the user could scroll away, selecting rows as required, then simply action them using constantly in-view buttons. Calling this floating content a layer, although semantically and conceptually convenient, is not quite right. Layers as such do not exist in Web pages. Netscape used to have a tag that provided much of the same functionality, but today this does not exist. Instead, floating content is achieved with the use of position controlled

s. However, we shall still refer to the floating content as a layer for the sake of convenience. With the advent of Cascading Style Sheets (CSS) and the integration of the Document Object Model (DOM) into JavaScript, the positioning and control of
s has become an everyday task. Interesting effects and functionality can be achieved on Web pages by the use of floating content, or layers. By floating I mean content that moves about the page, and that does not appear in a fixed location with respect to the page layout. The content may move to follow window scrolling such that it is always visible in the window for example. Imagine how handy this type of functionality could be when displaying a large number of rows in a table when a series of buttons need to be provided for actioning the selection of some rows. Without a scroll sensitive floating button-bar, the table would either require button duplication in amongst the rows, duplication of the buttons at the top and bottom, or a bunch of frames to allow the user to easily select some rows and action them. With the floating controls, the user could scroll away, selecting rows as required, then simply action them using constantly in-view buttons. Calling this floating content a layer, although semantically and conceptually convenient, is not quite right. Layers as such do not exist in Web pages. Netscape used to have a tag that provided much of the same functionality, but today this does not exist. Instead, floating content is achieved with the use of position controlled
s. However, we shall still refer to the floating content as a layer for the sake of convenience. With the advent of Cascading Style Sheets (CSS) and the integration of the Document Object Model (DOM) into JavaScript, the positioning and control of
s has become an everyday task. Interesting effects and functionality can be achieved on Web pages by the use of floating content, or layers. By floating I mean content that moves about the page, and that does not appear in a fixed location with respect to the page layout. The content may move to follow window scrolling such that it is always visible in the window for example. Imagine how handy this type of functionality could be when displaying a large number of rows in a table when a series of buttons need to be provided for actioning the selection of some rows. Without a scroll sensitive floating button-bar, the table would either require button duplication in amongst the rows, duplication of the buttons at the top and bottom, or a bunch of frames to allow the user to easily select some rows and action them. With the floating controls, the user could scroll away, selecting rows as required, then simply action them using constantly in-view buttons. Calling this floating content a layer, although semantically and conceptually convenient, is not quite right. Layers as such do not exist in Web pages. Netscape used to have a tag that provided much of the same functionality, but today this does not exist. Instead, floating content is achieved with the use of position controlled
s. However, we shall still refer to the floating content as a layer for the sake of convenience. With the advent of Cascading Style Sheets (CSS) and the integration of the Document Object Model (DOM) into JavaScript, the positioning and control of
s has become an everyday task.