Hola, este es el primer mensaje que escribo a esta lista, pero enhorabuena
por lo buena que es. </pelotilleo :D>
Mi problema es el siguiente. Digamos que aunque CSS es una gran herramienta
para presentación, presenta ciertas limitaciones. El modelo de cajas
cuadradas con únicamente un color y en 2d, no me permite disponer de todo lo
que me gustaría. Por eso me planteé conseguir una presentación estilo
Photoshop (como hacen en CSS zen garden, sin perder semántica), pero con una
diferencia. Yo quiero que mi presentación se redimensione conforme
disminuyo/aumento la pantalla del navegador, o conforme cambio de resolución
o de monitor, algo que los de Css zen garden no han conseguido (pese a que
se autoproclamen triple A).
Entonces, yéndome un poco más hacia mi caso en particular, yo quiero meter
un menú a la izquierda de mi página. Dentro de ese menú quiero meter los
enlaces hacia las distinas secciones (estos enlaces los he puesto con outset
normal e inset en hover, pero eso es otra historia). Este menú con los
enlaces quiero que sea un rectángulo tridimensional con bordes redondeados y
efectos 3d y sombras (esto lo he hecho con photoshop, aplicando varios
estilos de capa a un rectángulo normal negro).
El problema viene con la redimensión que le quiero aplicar a este menú. Para
ello he cortado a la imagen del photoshop en 9 pedazos, cada uno de ellos
representando un borde (lógicamente el centro de la imagen lo he quitado).
Así: a1 --> borde superior izquierdo; a2 --> borde superior medio(me hace
falta porque el rectángulo es 3d); a3 --> borde superior derecho; b1 -->
borde izquierdo medio; b2 --> borde derecho medio; c1 --> borde inferior
izquierdo; c2 --> borde inferior medio; c3 --> borde inferior derecho;
Cada uno de estos pedazos es una nueva imagen. Entonces, posteriormente lo
que hago es meter estas imágenes como divs posicionados absolutamente dentro
de un div padre (la misma técnica que para bordes redondeados, pero en 3d y
con 9 en vez de 4). Esto lo hago para conseguir que mi menú se redimensione.
Entonces el div padre tiene un background negro y le posiciones los nueve
divs con imágenes de fondo. Así consigo que se me redimensione sin notar
nada extraño hasta cierto punto (lógicamente, si la pantalla es muy muy
pequeña, se verá como los bordes no dan disminuído de tamaño, pero eso sería
un caso extremo).
Ahora os pegaré fragmentos de mi código XHTML y CSS para entender mejor el
caso:
<-- XHTML -->
<div id="lista">
<div id="a1"></div>
<div id="a2"></div>
<div id="a3"></div>
<div id="b1"></div>
<div id="b2"></div>
<a id="primero" href="#">Primero</a>
<a id="segundo" href="#">Segundo</a>
<a id="tercero" href="#">Tercero</a>
<a id="cuarto" href="#">Cuarto</a>
<div id="c1"></div>
<div id="c2"></div>
<div id="c3"></div>
</div>
<-- CSS -->
#lista { position: absolute;
width: 12%;
top: 5%;
left: 1%;
padding: 2.3em 0;
background: black; }
/* Posicionando las imágenes del borde para que coincidan con los bordes
reales del div lista (las imagenes cortadas tienen un borde blanco) */
#a1 { position: absolute;
background: url(../imagenes/a1.jpg)
no-repeat;
width: 43px;
height: 43px;
top: 0%;
left: 0%;
z-index: 101; }
#a2 { position: absolute;
background: url(../imagenes/a2.jpg)
repeat-x;
width: 90%;
height: 43px;
top: 0%;
z-index: 100; }
#a3 { position: absolute;
top: 0%;
right: -5%;
background: url(../imagenes/a3.jpg)
no-repeat;
width: 43px;
height: 43px;
z-index: 101; }
/* Primera línea lograda */
/* Segunda línea */
#b1 { position: absolute;
top: 43px;
bottom: 0%;
background: url(../imagenes/b1.jpg);
width: 20px;
left: 0%; }
#b2 { position: absolute;
top: 43px;
bottom: 0%;
right: 0%;
width: 20px;
background: url(../imagenes/b2.jpg)
repeat-y; }
a { display: block;
height: 1.7em;
background: #c9c9c9;
margin-top: .5em;
border: outset;
text-decoration: none;
margin-left: 6%;
margin-right: 6%;
color: #fff;
font-weight: 900;
font-family: arial, sans-serif;
}
a:hover { border: inset;
color: #c9c9c9;
background: #fff; }
-------------------------
Como podéis ver, todos son divs con backgrounds donde posiciono las
imágenes, no meto ninguna etiqueta img. También véis como el a2 le meto un
background repeat-x a la misma imagen, y a b1 no le doy ningún tipo de
repeat pero limito el width para dar la impresión de que únicamente hay un
repeat-y (dando así esa sensación de rectángulo en 3d que se sale hacia
arriba).
¿Mi problema tras esta larga parrafada? Pues que "curiosamente" el Explorer
no interpreta bien el posicionamiento absoluto dentro de elementos padre.
Así, yo al b1 le doy un top:43px para no coincidir con a1 y un bottom: 0%
para que la altura del b1(y así el borde tridimensional izquierdo) se acople
a la altura del rectángulo (div) padre. Pues el explorer no me interpreta
bien esto.
Otra opción que estaba barajando y que probé también es poner un height en
porcentajes, pero todos sabéis la problemática del height 100%... y además:
el explorer me lo interpreta otra vez de forma distinta a los otros
navegadores (opera, firefox). Por lo que puedo poner un height 50% que uno
me lo pondrá como 50% del div padre, que otro me lo pondrá como 50% del
body...
¿Alguna solución?
Por cierto, el código no está acabado y posiblemente tenga fallos después
del b1. Solo estaba aquí rompiéndome la cabeza y cambiando montones de cosas
a ver si doy con la solución. Esto no es el código final ni mucho menos.
Si alguien ha leído todo este rollazo gracias, y si alguien contesta pues
también. Saludos.
_________________________________________________________________
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
_______________________________________________
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:
http://ovillo.org/mailman/listinfo/ovillo