2009-04-08 40 views
5

mi página HTML contiene un div con un id llamado "main", y estoy incluyendo otra página HTML en mi página HTML, que contiene un div con el mismo id ("principal"). Necesito agregar un espacio de nombre a la identificación ("principal") de mi página HTML.cómo usar espacios de nombres en css?

Incluyo encabezado, pie de página de otro sitio e incluyo el contenido de mi sitio en esa página HTML. Si los otros sitios usan la misma identificación que usa mi sitio, aquí se está produciendo el conflicto.

En esta página HTML se incluyen dos archivos css. Si ambos contienen la misma clase con un estilo diferente, aquí hay un problema.

Necesito aplicar mi archivo CSS a mi código y otro al código restante. ¿algún cuerpo puede resolver mi problema?

Respuesta

1

Estoy de acuerdo con todos hasta ahora, en que no hay una capacidad nativa de espacio de nombres CSS y que si tiene control (o deseo/capacidad) para editar su HTML entonces ese es el mejor enfoque.

Una manera de automatizar el proceso sería escribir un script (PERL, PHP, .NET, etc.) para analizar el HTML que está incorporando y reemplazar cualquier ID existente o clases con una versión modificada.

es decir, se convierte en <tag id="theID" class="theClass anotherClass"><tag id="NAMESPACEtheID" class="NAMESPACEtheClass NAMESPACEanotherClass">

Usted puede lograr esto con algunas expresiones regulares creativas, aunque sería más difícil conseguir si hay código Javascript que tendría que ser modificado también.

En lo que respecta al rendimiento, esto sería un gran éxito dependiendo del tamaño del archivo y probablemente desee almacenar el resultado en caché, o reescribir el archivo original.

¡Avíseme si decide ir por esa ruta, la idea en realidad suena un poco intrigante y podría tener un lugar en mi caja de herramientas!

0

Usa el nombre del segundo div en el ID del segundo div. Por ejemplo, si la segunda página se llama signup.html, use main_signup

2

¿Hay algo acerca de los elementos que contienen los divs que los distinguen unos de otros? Si existe, puede prefijar su declaración css con el elemento contenedor y especificar un estilo único para ambos divs.

Ej:

#main 
{Style} 
.container #main 
{Another style} 

Como ya se ha mencionado, si usted tiene el control sobre el HTML, sería conveniente especificar una clase diferente para ambos elementos o un identificador único para cada uno de ellos.

+0

me ganaste. La función de actualización automática en las respuestas es agradable. – IEnumerator

+0

No es correcto tener los mismos identificadores en el documento HTML, ¿o sí? – Sergey

+0

Técnicamente no, pero parece que John tiene un control limitado de cómo se llaman los elementos. – Sam152

4

dos cosas:

  • Suena como que necesita una clase, no una identificación.
  • Use hojas de estilo incrustadas si desea aplicar diferencias por página entre estilos.

Usar la misma ID en este caso sería definitivamente una cuestión de vivir con broken windows. Si tiene control sobre la situación, debe actualizar el código HTML en lugar de invitar a una mayor confusión más adelante.

+1

¡No necesita hojas de estilo incrustadas para obtener diferencias por página! Usted acaba de poner una identificación en la etiqueta del cuerpo. – AmbroseChapel

+0

No es mi preferencia, ya que puede desordenar los archivos CSS. Tuvimos esta discusión en el trabajo el otro día. Puede romperse a solo eso: preferencia. Aquí hay un grupo de personas que discuten sobre esto: http://www.webmasterworld.com/css/3115364.htm Veo ambos lados, es bueno tener todas sus reglas en un solo lugar. – cgp

2

Una página con una identificación duplicada no es válida. Incluso si logras orientar los elementos por separado combinando el id con las clases, no se garantiza que funcione con todos los navegadores.

Para hacer una página válida, los elementos deben tener una identificación única.

1

En resumen, no existe el espacio de nombres en CSS. Utilice una de las soluciones alternativas que proponen :)

Cuestiones relacionadas