Esta última solución señalada por
JavierB es poder aplicar más sencillamente la propuesta por
javiermil.
Y después de probarlo, veo que no me sirve. Solamente es útil si no muevo la capa. El IFRAME que se crea automáticamente entre la capa y el select hace que se tape la capa. Pero en el momento que muevo la capa, el IFRAME queda inmóvil en el sitio que fue creado y el efecto corrector se rompe volviendo a quedar la capa por debajo del select.
En el ejemplo mencionado del calendario, en uno de los archivos de configuración para su funcionamiento ('calendar.js'), creo que el siguiente apartado se encarga de realizar el efecto deseado de ocultar ciertos elementos cuando la capa del calendario pasa sobre ellos:
Código:
...
Calendar.prototype.hideShowCovered = function () {
if (!Calendar.is_ie && !Calendar.is_opera)
return;
function getVisib(obj){
var value = obj.style.visibility;
if (!value) {
if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C
if (!Calendar.is_khtml)
value = document.defaultView.
getComputedStyle(obj, "").getPropertyValue("visibility");
else
value = '';
} else if (obj.currentStyle) { // IE
value = obj.currentStyle.visibility;
} else
value = '';
}
return value;
};
var tags = new Array("applet", "iframe", "select");
var el = this.element;
var p = Calendar.getAbsolutePos(el);
var EX1 = p.x;
var EX2 = el.offsetWidth + EX1;
var EY1 = p.y;
var EY2 = el.offsetHeight + EY1;
for (var k = tags.length; k > 0; ) {
var ar = document.getElementsByTagName(tags[--k]);
var cc = null;
for (var i = ar.length; i > 0;) {
cc = ar[--i];
p = Calendar.getAbsolutePos(cc);
var CX1 = p.x;
var CX2 = cc.offsetWidth + CX1;
var CY1 = p.y;
var CY2 = cc.offsetHeight + CY1;
if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) {
if (!cc.__msh_save_visibility) {
cc.__msh_save_visibility = getVisib(cc);
}
cc.style.visibility = cc.__msh_save_visibility;
} else {
if (!cc.__msh_save_visibility) {
cc.__msh_save_visibility = getVisib(cc);
}
cc.style.visibility = "hidden";
}
}
}
};
...
Ahora que no llego a adaptar esto a mi caso de mi capa. Si algún experto de javascript ó DHTML me ayuda a entender el funcionamiento y poder aplicarlo a mi caso...