в html верх
Код:
<script type="text/javascript">
document.getelementsbyclassname = function(classname) {
var children = document.getelementsbytagname('*') || document.all;
var elements = new array();
for (var i = 0; i < children.length; i++) {
var child = children[i];
var classnames = child.classname.split(' ');
for (var j = 0; j < classnames.length; j++) {
if (classnames[j] == classname) {
elements.push(child);
break;
}
}
}
return elements;
}
var reflection = {
defaultheight : 0.5,
defaultopacity: 0.5,
add: function(image, options) {
reflection.remove(image);
doptions = { "height" : reflection.defaultheight, "opacity" : reflection.defaultopacity }
if (options) {
for (var i in doptions) {
if (!options[i]) {
options[i] = doptions[i];
}
}
} else {
options = doptions;
}
try {
var d = document.createelement('div');
var p = image;
var classes = p.classname.split(' ');
var newclasses = '';
for (j=0;j<classes.length;j++) {
if (classes[j] != "reflect") {
if (newclasses) {
newclasses += ' '
}
newclasses += classes[j];
}
}
var reflectionheight = math.floor(p.height*options['height']);
var divheight = math.floor(p.height*(1+options['height']));
var reflectionwidth = p.width;
if (document.all && !window.opera) {
/* fix hyperlinks */
if(p.parentelement.tagname == 'a') {
var d = document.createelement('a');
d.href = p.parentelement.href;
}
/* copy original image's classes & styles to div */
d.classname = newclasses;
p.classname = 'reflected';
d.style.csstext = p.style.csstext;
p.style.csstext = 'vertical-align: bottom';
var reflection = document.createelement('img');
reflection.src = p.src;
reflection.style.width = reflectionwidth+'px';
reflection.style.marginbottom = "-"+(p.height-reflectionheight)+'px';
reflection.style.filter = 'flipv progid:dximagetransform.microsoft.alpha(opacity='+(options['opacity']*100)+', style=1, finishopacity=0, startx=0, starty=0, finishx=0, finishy='+(options['height']*100)+')';
d.style.width = reflectionwidth+'px';
d.style.height = divheight+'px';
p.parentnode.replacechild(d, p);
d.appendchild(p);
d.appendchild(reflection);
} else {
var canvas = document.createelement('canvas');
if (canvas.getcontext) {
/* copy original image's classes & styles to div */
d.classname = newclasses;
p.classname = 'reflected';
d.style.csstext = p.style.csstext;
p.style.csstext = 'vertical-align: bottom';
var context = canvas.getcontext("2d");
canvas.style.height = reflectionheight+'px';
canvas.style.width = reflectionwidth+'px';
canvas.height = reflectionheight;
canvas.width = reflectionwidth;
d.style.width = reflectionwidth+'px';
d.style.height = divheight+'px';
p.parentnode.replacechild(d, p);
d.appendchild(p);
d.appendchild(canvas);
context.save();
context.translate(0,image.height-1);
context.scale(1,-1);
context.drawimage(image, 0, 0, reflectionwidth, image.height);
context.restore();
context.globalcompositeoperation = "destination-out";
var gradient = context.createlineargradient(0, 0, 0, reflectionheight);
gradient.addcolorstop(1, "rgba(255, 255, 255, 1.0)");
gradient.addcolorstop(0, "rgba(255, 255, 255, "+(1-options['opacity'])+")");
context.fillstyle = gradient;
if (navigator.appversion.indexof('webkit') != -1) {
context.fill();
} else {
context.fillrect(0, 0, reflectionwidth, reflectionheight*2);
}
}
}
} catch (e) {
}
},
remove : function(image) {
if (image.classname == "reflected") {
image.classname = image.parentnode.classname;
image.parentnode.parentnode.replacechild(image, image.parentnode);
}
}
}
function addreflections() {
var rimages = document.getelementsbyclassname('reflect');
for (i=0;i<rimages.length;i++) {
var rheight = null;
var ropacity = null;
var classes = rimages[i].classname.split(' ');
for (j=0;j<classes.length;j++) {
if (classes[j].indexof("rheight") == 0) {
var rheight = classes[j].substring(7)/100;
} else if (classes[j].indexof("ropacity") == 0) {
var ropacity = classes[j].substring(8)/100;
}
}
reflection.add(rimages[i], { height: rheight, opacity : ropacity});
}
}
var previousonload = window.onload;
window.onload = function () { if(previousonload) previousonload(); addreflections(); }
</script>в html низ
Код:
<script type="text/javascript">
document.getelementsbyclassname = function(classname) {
var children = document.getelementsbytagname('*') || document.all;
var elements = new array();
for (var i = 0; i < children.length; i++) {
var child = children[i];
var classnames = child.classname.split(' ');
for (var j = 0; j < classnames.length; j++) {
if (classnames[j] == classname) {
elements.push(child);
break;
}
}
}
return elements;
}
var reflection = {
defaultheight : 0.5,
defaultopacity: 0.5,
add: function(image, options) {
reflection.remove(image);
doptions = { "height" : reflection.defaultheight, "opacity" : reflection.defaultopacity }
if (options) {
for (var i in doptions) {
if (!options[i]) {
options[i] = doptions[i];
}
}
} else {
options = doptions;
}
try {
var d = document.createelement('div');
var p = image;
var classes = p.classname.split(' ');
var newclasses = '';
for (j=0;j<classes.length;j++) {
if (classes[j] != "reflect") {
if (newclasses) {
newclasses += ' '
}
newclasses += classes[j];
}
}
var reflectionheight = math.floor(p.height*options['height']);
var divheight = math.floor(p.height*(1+options['height']));
var reflectionwidth = p.width;
if (document.all && !window.opera) {
/* fix hyperlinks */
if(p.parentelement.tagname == 'a') {
var d = document.createelement('a');
d.href = p.parentelement.href;
}
/* copy original image's classes & styles to div */
d.classname = newclasses;
p.classname = 'reflected';
d.style.csstext = p.style.csstext;
p.style.csstext = 'vertical-align: bottom';
var reflection = document.createelement('img');
reflection.src = p.src;
reflection.style.width = reflectionwidth+'px';
reflection.style.marginbottom = "-"+(p.height-reflectionheight)+'px';
reflection.style.filter = 'flipv progid:dximagetransform.microsoft.alpha(opacity='+(options['opacity']*100)+', style=1, finishopacity=0, startx=0, starty=0, finishx=0, finishy='+(options['height']*100)+')';
d.style.width = reflectionwidth+'px';
d.style.height = divheight+'px';
p.parentnode.replacechild(d, p);
d.appendchild(p);
d.appendchild(reflection);
} else {
var canvas = document.createelement('canvas');
if (canvas.getcontext) {
/* copy original image's classes & styles to div */
d.classname = newclasses;
p.classname = 'reflected';
d.style.csstext = p.style.csstext;
p.style.csstext = 'vertical-align: bottom';
var context = canvas.getcontext("2d");
canvas.style.height = reflectionheight+'px';
canvas.style.width = reflectionwidth+'px';
canvas.height = reflectionheight;
canvas.width = reflectionwidth;
d.style.width = reflectionwidth+'px';
d.style.height = divheight+'px';
p.parentnode.replacechild(d, p);
d.appendchild(p);
d.appendchild(canvas);
context.save();
context.translate(0,image.height-1);
context.scale(1,-1);
context.drawimage(image, 0, 0, reflectionwidth, image.height);
context.restore();
context.globalcompositeoperation = "destination-out";
var gradient = context.createlineargradient(0, 0, 0, reflectionheight);
gradient.addcolorstop(1, "rgba(255, 255, 255, 1.0)");
gradient.addcolorstop(0, "rgba(255, 255, 255, "+(1-options['opacity'])+")");
context.fillstyle = gradient;
if (navigator.appversion.indexof('webkit') != -1) {
context.fill();
} else {
context.fillrect(0, 0, reflectionwidth, reflectionheight*2);
}
}
}
} catch (e) {
}
},
remove : function(image) {
if (image.classname == "reflected") {
image.classname = image.parentnode.classname;
image.parentnode.parentnode.replacechild(image, image.parentnode);
}
}
}
function addreflections() {
var rimages = document.getelementsbyclassname('reflect');
for (i=0;i<rimages.length;i++) {
var rheight = null;
var ropacity = null;
var classes = rimages[i].classname.split(' ');
for (j=0;j<classes.length;j++) {
if (classes[j].indexof("rheight") == 0) {
var rheight = classes[j].substring(7)/100;
} else if (classes[j].indexof("ropacity") == 0) {
var ropacity = classes[j].substring(8)/100;
}
}
reflection.add(rimages[i], { height: rheight, opacity : ropacity});
}
}
var previousonload = window.onload;
window.onload = function () { if(previousonload) previousonload(); addreflections(); }
</script>











