Hola a todos.
Bien, mi problema: para una web utilizo un sistema de acordeón a la hora de
mostrar una fiucha de producto que tiene muchisima información, para evitar
scroll excesivo. Hasta ahi bien, funciona sin probemas y es ligero.
Pro, nuestro amigo explorer (n, si si explorer) no renderiza bien un
texto que va en negrita, sale dentado y muy raro, en firefox se ve bien, ni he
probado en opera porque casi aseguraría que tambien se verá bien.
Bueno a continuación os pongo el javascript aunque me huele que no va a tener
mucho que ver por separado, sino que el navegador multiusos...
Ahi va el javascript:
function $(d){
return document.getElementById(d);
}
// set or get the current display style of the div
function dsp(d,v){
if(v==undefined){
return d.style.display;
}else{
d.style.display=v;
}
}
// set or get the height of a div.
function sh(d,v){
// if you are getting the height then display must be block to return the
absolute height
if(v==undefined){
if(dsp(d)!='none' dsp(d)!=''){
return d.offsetHeight;
}
viz = d.style.visibility;
d.style.visibility = 'hidden';
o = dsp(d);
dsp(d,'block');
r = parseInt(d.offsetHeight);
dsp(d,o);
d.style.visibility = viz;
return r;
}else{
d.style.height=v;
}
}
/*
* Variable 'S' defines the speed of the accordian
* Variable 'T' defines the refresh rate of the accordian
*/
s=7;
t=10;
//Collapse Timer is triggered as a setInterval to reduce the height of the div
exponentially.
function ct(d){
d = $(d);
if(sh(d)0){
v = Math.round(sh(d)/d.s);
v = (v1) ? 1 :v ;
v = (sh(d)-v);
sh(d,v+'px');
d.style.opacity = (v/d.maxh);
d.style.filter= 'alpha(opacity='+(v*100/d.maxh)+');';
}else{
sh(d,0);
dsp(d,'none');
clearInterval(d.t);
}
}
//Expand Timer is triggered as a setInterval to increase the height of the div
exponentially.
function et(d){
d = $(d);
if(sh(d)d.maxh){
v = Math.round((d.maxh-sh(d))/d.s);
v = (v1) ? 1 :v ;
v = (sh(d)+v);
sh(d,v+'px');
d.style.opacity = (v/d.maxh);
d.style.filter= 'alpha(opacity='+(v*100/d.maxh)+');';
}else{
sh(d,d.maxh);
clearInterval(d.t);
}
}
// Collapse Initializer
function cl(d){
if(dsp(d)=='block'){
clearInterval(d.t);
d.t=setInterval('ct('+d.id+')',t);
}
}
//Expand Initializer
function ex(d){
if(dsp(d)=='none'){
dsp(d,'block');
d.style.height='0px';
clearInterval(d.t);
d.t=setInterval('et('+d.id+')',t);
}
}
// Removes Classname from the given div.
function cc(n,v){
s=n.className.split(/\s+/);
for(p=0;ps.length;p++){
if(s[p]==v+n.tc){
s.splice(p,1);
n.className=s.join(' ');
break;
}
}
}
//Accordian Initializer
function Accordian(d,s,tc){
// get all the elements that have id as content
l=$(d).getElementsByTagName('div');
c=[];
for(i=0;il.length;i++){
h=l[i].id;
if(h.substr(h.indexOf('-')+1,h.length)=='content'){c.push(h);}
}
sel=null;
//then search through headers
for(i=0;il.length;i++){
h=l[i].id;
if(h.substr(h.indexOf('-')+1,h.length)=='header'){
d=$(h.substr(0,h.indexOf('-'))+'-content');
d.style.display='none';
d.style.overflow='hidden';
d.maxh =sh(d);
d.s=(s==undefined)? 7 : s;
h=$(h);
h.tc=tc;
h.c=c;
// set the onclick function for each header.
h.onclick = function(){
for(i=0;ithis.c.length;i++){
cn=this.c[i];
n=cn.substr(0,cn.indexOf('-'));
if((n+'-header')==this.id){
ex($(n+'-content'));
n=$(n+'-header');
cc(n,'__');
n.className=n.className+' '+n.tc;
}else{
cl($(n+'-content'));
cc($(n+'-header'),'');
}
}
}
if(h.className.match(/selected+/)!=undefined){ sel=h;}
}
}
if(sel!=undefined){sel.onclick();}
}
Bueno pues ahí está, el css asciado es muy simple, nada fuera de lo normal,
quizás sea un error muy común y alguien me pueda orientar por sufrir a nuestro
amigo explorer en sus propias carnes.
Gracias por adelantado y un saludo a todos
-
¿Con Mascota por primera vez? - Sé un mejor Amigo
Entra en Yahoo! Respuestas.
___
Lista de distribución Ovillo
Para escribir a la lista, envia un correo a Ovillo@lists.ovillo.org
Puedes modificar tus datos o desuscribirte en la siguiente dirección: