2009-09-08 12 views
13

Ejemplo:¿Hay alguna manera de ocultar el enésimo artículo en una lista con CSS?

<ul class="mybuttons"> 
    <li class="mybutton"></li> 
    <li class="mybutton"></li> 
    <li class="mybutton"></li> 
</ul> 

¿Es posible ocultar el segundo elemento con CSS?

+0

Gracias por añadir mucho valor a esta pregunta. – GollyJer

+0

Es importante porque si tiene la palabra "Diseñador" en el título de su trabajo, entonces debe hacer la pregunta en http://www.doctype.com. De lo contrario, la pregunta está bien aquí en SO. No lo pregunté al azar – EBGreen

+0

¿De dónde sacas el título de mi trabajo? – GollyJer

Respuesta

27

nth-child es de hecho la forma en CSS.

En CSS puro, la sintaxis es simplemente

li.mybutton:nth-child(2){ 
    display:none; 
} 

nth-of-type(2) obras en este caso también.

Editar: Aunque esta es la respuesta de CSS, como se señaló, esto es CSS3 e implementado only in some browsers. IE y FF3 e inferiores no son compatibles de forma nativa. Implementado en FF3.5, Konqueror e incorrectamente en Chrome, Safari y Opera. nth-of-type() implementaciones son mejores.

El soporte en buscadores más antiguos requerirá javascript (simplificado con jQuery, et al). El selector jQuery se describe en los documentos Selectors/nthChild, y lo anterior se puede lograr con $("li.mybutton:nth-child(2)").hide().

+2

Funcionó perfectamente. Gracias Bill. Para el registro, esta es una implementación de CSS3 y, como afirma Jon Galloway, solo es compatible con los navegadores "modernos". http://www.webdevout.net/browser-support-css#css3pseudoclasses – GollyJer

+1

No creo que esta sea una solución real en este momento a menos que pueda requerir a sus usuarios que ejecuten las versiones más recientes de navegadores que no sean IE. –

+0

@Jon, es una verdadera solución a * su * pregunta. Pidió CSS ​​y lo etiquetó CSS, así que le di la respuesta CSS. Pero agregaré una advertencia a la respuesta. –

8

n-th child pseudo selectors hacer esto, pero todavía no son compatibles y no lo serán por un tiempo. Necesitarás Javascript/jQuery o escribir una clase especial para los artículos que deseas ocultar o simplemente ocultar los artículos directamente.

Así es como usted lo haría con jQuery:

$("ul.mybuttons li:nth-child(2)").hide(); 
+0

Gracias por la respuesta Jon. Para aclarar ... JQuery tiene procedimientos internos que procesan los pseudo selectores CSS3 pasados ​​como parámetros, lo que hace que esta solución sea compatible con el navegador. Solo tengo acceso al CSS a los fines de esta pregunta, pero vale la pena verificar mi comprensión para futuros proyectos. Gracias de nuevo. – GollyJer

+1

Sí, jQuery tiene un motor de selección muy avanzado que maneja CSS3 + y es compatible con IE6. –

0
ul.mybuttons li:first-child { 
    display:none; 
} 
0

que se estableció por primera vez la segunda li como class = "hidden_li" en el archivo HTML.

Ejemplo:

<ul class="mybuttons"> 
<li class="mybutton"></li> 
<li class="mybutton" class="hidden_li"></li> 
<li class="mybutton"></li> 
</ul> 

entonces voy a diseñarlo como esto:

.hidden_li{ 
    visibility : hidden; 
    height : 0px; 
    width : 0px; 
    margin : 0px; 
    padding : 0px; 
    overflow : hidden; 
} 
Cuestiones relacionadas