Supongamos que está creando un widget conceptual denominado Awesome Widget y desea protegerlo por completo contra conflictos con elementos circundantes o elementos secundarios que residen como contenido dentro del widget.CSS estilo prevención de conflictos y técnicas de creación de nombres
Lo que no queremos
div ul li {}
Solución 1: CSS combinador niño
Uso del selector de combinador niño CSS para especificar que sólo los niños directos deben ser dirigidos.
.awesomewidget > div > ul > li {}
Solución 2: Clase de espacios de nombre del
Usando aw (Widget impresionante) como espacio de nombres para cada clase, disminuyendo la posibilidad de cualquier otro elemento en la página utilizando ese espacio de nombres exacta + nombre de la clase.
.awesomewidget .aw-container .aw-list .aw-listitem {}
También hay algo así como @namespace en CSS pero eso es solo para XML.
Además de las soluciones 1 y 2, ¿hay otras que se puedan usar? ¿Cuál preferirías? ¿Alguna mejor práctica?
EDIT: ejemplo de un problema que se presenta sin los espacios de nombre adecuado/estilizar la prevención de conflictos
Widget estilo:
.awesomewidget > div ul li {
background-color:red;
}
estilo del usuario:
ul li {
background-color:blue;
}
de marcado:
<div class="awesomewidget">
<div>
<ul>
<li>
<!-- user content starts here -->
<p>I am the user and I want to add some content here. Let's add a list:</p>
<ul>
<li>Why is this list-item red and not blue?</li>
</ul>
<!-- user content ends here -->
</li>
<li>
<!-- user content starts here -->
<!-- user content ends here -->
</li>
</ul>
</div>
</div>
Puedo ver su punto. Pero, ¿qué pasa con el contenido dentro del li (podría ser cualquier elemento en un widget no conceptual) que no forma parte del widget en sí (el contenido) y que es diseñado por otra persona? – DADU
@DADU Mi cerebro acaba de explotar. Contenido que está dentro del widget, pero que no forma parte del widget y que es diseñado por otra persona. ¿Qué significa esto? – rockerest
@rockerest Debo aclarar esto. Supongamos que está creando un widget de pestañas. Usted tiene los botones de pestaña, pero también tiene las secciones de pestaña. Dentro de cada sección de pestaña, el usuario puede agregar su propio contenido HTML y darle un estilo. Entonces el widget es solo un marco. – DADU