CSS no es un lenguaje de programación. CSS3 tiene un poco de lógica aquí o allá, pero no switch()
.
para sus propósitos, la solución más sencilla, con mucho, es un toque de JavaScript, suministrados aquí suponiendo que se utiliza jQuery:
var $navLis = $('nav[role=navigation] > ul > *');
$navLis.addClass('count'+$navLis.length); // add a class to every li indicating
// total number of list items
Luego, en el CSS:
nav[role=navigation] li { /* default styling & width */ }
nav[role=navigation] li.count2 { /* your conditional styling */ }
nav[role=navigation] li.count5 { /* your conditional styling */ }
/* etc */
o simplemente establecer el ancho directamente con jQuery:
$navLis.style('width', (100/$navLis.length)+'%');
Si demanda CSS puro, luego saca tu sombrero de lógica y mira el CSS3 selectors specification. Puede construir un código CSS bizantino y bastante frágil para la lógica falsa, como el siguiente selector.
nav[role=navigation] li:first-child + nav[role=navigation] li:last-child {
/* matches last of two items if a list has only two items */
}
Si está utilizando un CMS que sabe el número de elementos que se va a poner en la lista, entonces se puede obtener de lujo en su base de servidor mediante la adición de pequeños trozos de PHP para el CSS:
<?php header('Content-type: text/css');
if (isset($_GET['navcount']) && $_GET['navcount'] != "") {
$navcount = $_GET['navcount'];
} else { $navcount = 5.0; } // Default value
?>
/* ... your css code here... */
nav[role="navigation"] li {
float: left;
width: <?php echo (100.0/$navcount); ?>%;
}
a continuación, solicitar el guión CSS/PHP como esta de su HTML:
<link rel="stylesheet" type="text/css" href="/path/to/style.php?navcount=5" />
hay algunas grandes herramientas que hay para hojas de estilo de escritura que se mezclan abajo muy bien en CSS, y algunos incluso ofrecen PHP i implementaciones para hacerlo de forma dinámica. La extensión de CSS más fuerte en este momento es Sass, que tiene el tipo de sintaxis que está buscando.Recomiendo usar Sass a través del Compass, que es un marco para Sass que realmente le da algunos dientes. Puede analizar Sass en CSS sobre la marcha en PHP usando phamlp
Aunque Compass (y Sass) son herramientas geniales, conectarlas a un proyecto existente podría ser más problemático que su valor. Es posible que solo quiera hacer una lógica simple usando Javascript.
Publicación bastante completa, gracias! – wonea