2010-09-23 9 views
12

Permítanme comenzar diciendo que realmente me gusta Superfish (& jQuery). Lamentablemente, esto, al parecer? - no ofrece soporte de cuadros cruzados fuera de la caja.Solución cruzada de navegador para menús desplegables en marcos?

Situación: sitio web extranet, que consta de 2 fotogramas, divididos horizontalmente. El marco superior (el más pequeño) contiene un menú. Al pasar el cursor sobre este menú, el contenido "desplegable" se muestra en el cuadro inferior (por encima de los otros elementos, por supuesto). Aquí hay un ejemplo (y de hecho, la solución que estamos usando hoy): http://javascript.cooldev.com/scripts/coolmenu/demos/frames/

¿Alguien sabe una manera de construir una solución limpia (usando HTML/CSS estándar y tan poco como sea posible)? ¡Cualquier ayuda sería apreciada! :)

+1

Hice algo similar a lo que está buscando. Aquí está el sitio web que utilicé para ayudarme: [menú desplegable de Pure Css] (http://csswizardry.com/2011/02/creating-a-pure-css-dropdown-menu/) – Jeff

+2

¿Por qué es necesario? ser marcos? ¿No hay muchas técnicas mejores si no las usas? – Bergi

Respuesta

4

Si la única razón por la que está usando un marco es para mantener los menús en la parte superior de la ventana, entonces simplemente puede usar position: fixed en el CSS.

1

Puede utilizar un menú de CSS puro (como http://csswizardry.com/2011/02/creating-a-pure-css-dropdown-menu/). No estoy seguro de por qué la navegación está en un marco diferente, pero esto le dará la funcionalidad y flexibilidad para mover las listas desplegables hacia arriba o hacia abajo (ajustando las propiedades de relleno/margen/superior en CSS) para que se ajusten al parte inferior del marco.

12

Supongo que los ejércitos tomarán el asunto de "zanjar tus marcos", así que no lo haré. Supongo que se ha informado de alternativas sin marco y ha llegado a la conclusión de que necesita marcos (por la razón [absurda]).

La historia corta es: no se puede salir de un marco, lo mismo que no se puede romper por la ventana. Todo el contenido está contenido dentro del marco/ventana; no hay forma de que el contenido se filtre.

Dicho esto, le quedan dos opciones.

  1. Su documento de nivel superior pasa a ser un documento normal contiene dos marcos flotantes, y todos los documentos se sirve desde el mismo host (SOP). En este caso, su marco de menú puede crear elementos en el marco principal que realmente se superponen con los iframes. Por lo tanto, podría colocar un elemento dentro del fotograma principal para que aparezca debajo del elemento correspondiente del marco de menú, mientras lo tiene z-indexado sobre el marco de contenido
  2. Su fotograma principal es un documento de conjunto de marcos y por lo tanto no lo hace t tomar cualquier contenido que no sean marcos. Estás de suerte. Lo único que puede hacer es hacer que su cuadro de menú haga el mismo truco descrito en (1), pero añada los elementos de menú al marco de contenido.

Cualquiera de las dos opciones es una mierda. Si tiene la opción, abandone sus marcos. Cualquier lenguaje tonto del lado del servidor (php, ruby, python, ...) le permite extraer componentes a menudo reutilizados (como una navegación) en archivos separados y vincularlos en cualquier otro documento que tenga. SSI podría ser una opción, también.

+0

Me encanta esta respuesta. Me gustaría conocer el caso de negocio de OP para mantenerlo en marcos. Podría ser perfectamente razonable ... Además, ¿no se admiten marcos en HTML5? –

+0

No sé acerca de los documentos de marcos reales. Nunca he visto una etiqueta '' en ninguna parte, así que supongo que están fuera de escena. '