CSS Diseño: Listas de Doma “CSS Design: Taming Lists”
Ya en julio de 1999 yo estaba en las listas de correo electrónico pontificar sobre las virtudes de las hojas de estilo. Algunas cosas nunca cambian.
Lo que ha cambiado es la forma en que pienso en CSS, y la estructura subyacente de (X) HTML a los que se aplica. Por ejemplo, me parece que la mayoría de las páginas en la web contiene un menú de enlaces en un área de navegación. Estos son a menudo marcado como una cadena de enlaces, a menudo en DIVs separados o párrafos. Estructuralmente, sin embargo, son una lista de enlaces, y debe ser marcado como tal.
Por supuesto, la razón de que no los marca en esa forma es que no queremos que una bala en la frente de cada eslabón de nuestra zona de navegación. En un artículo anterior señalé varias técnicas para el uso de CSS para el diseño de una página web. Una de las técnicas utilizadas para la manipulación de una lista de visualización horizontal y no vertical.
En este artículo, voy a demostrar cómo utilizar CSS para llevar listas de difícil de manejar bajo control. Es hora de que les diga a las listas de cómo comportarse, en lugar de dejar que vuele en su página web.
Preparando el escenario
Para efectos de este artículo, yo estoy usando listas desordenadas. El CSS puede aplicar el mismo, con resultados similares, así como listas ordenadas. Salvo disposición en contrario, todos los ejemplos en este artículo se utiliza el siguiente código para las listas
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5 haremos un poco más de tiempo para wrap</li>
</ul>
Cada lista simplemente se coloca dentro de un DIV diferentes, y el CSS está escrito de modo que el comportamiento de la lista es determinada por el DIV es pulgadas cada div tiene una regla de base:
#base {
border: 1px solid #000;
margin: 2em;
width: 10em;
padding: 5px;
}
* Item 2
* Item 3
* Item 4
* Item 5 haremos un poco más de tiempo para wrap
A veces, el guión, por defecto de una lista es demasiado para el diseño que está trabajando. Sin embargo, simplemente cambiando el margen o el relleno de la UL no funciona para todos los navegadores. Para que la lista alineado a la izquierda, por ejemplo, tiene que cambiar tanto el margen y el relleno. Esto es porque Internet Explorer y Opera optado por crear el guión con el margen izquierdo, mientras que Mozilla / Netscape uso de relleno. Para mayor información consulte el artículo DevEdge consonancia Lista sangría.
En el siguiente ejemplo, tanto el margen izquierdo y padding-left de la UL en el DIV se ponen a cero:
* Item 2
* Item 3
* Item 4
* Item 5 haremos un poco más de tiempo para wrap
* Item 2
* Item 3
* Item 4
* Item 5 haremos un poco más de tiempo para wrap
Tal vez usted ha tenido un proyecto que requiere una bala personalizado. Si es así, podría haber marcado en una tabla con una columna que contiene las viñetas de imagen GIF alineado arriba ya la derecha, y la otra columna con el contenido de lo que debería haber sido LI. Con CSS es posible utilizar una imagen como una bala. Si el navegador no soporta esta parte del CSS (o no hacer imágenes), la bala por defecto será usada (o puede especificar una bala HTML diferente si lo desea).
La norma se ve algo como esto:
list-style-image: url(bullet.gif);
}
* Item 2
* Item 3
* Item 4
* Item 5 haremos un poco más de tiempo para wrap
list-style: disc url(bullet.gif) inside;
list-style-type: disc;
list-style-image: url(bullet.gif);
list-style-position: inside;
}

list-style: none;
margin-left: 0;
padding-left: 1em;
text-indent: -1em;
}
El HTML contendrá nuestro UL estándar, pero con cualquier carácter o entidad HTML que desea utilizar en lugar de la viñeta anterior, el contenido del elemento de la lista. En nuestro caso vamos a utilizar », el derecho de cita ángulo doble:».
content: “\00BB \0020″;
}
Listas de verdad en línea
¿Quién dice que una lista tiene que ser alineada verticalmente con balas colgando del lado izquierdo de cada tema? Tal vez desea que la estructura de una lista ordenada de enlaces, pero visualmente que desea que se vea como una barra de navegación vertical en la página web. O tal vez usted quiere que su lista de enlaces que se alineen horizontalmente en la parte superior de la página.
Esto se aplica a algo más que listas de enlaces. Hay veces en que es posible que tenga a la lista de varios elementos, en medio de un párrafo, tal vez una lista de libros que desea leer. Estructuralmente, tiene sentido para marcar esto como una lista, pero presentationally puede que no desee cortar el flujo del párrafo. CSS para el rescate de nuevo!
Dado que esta lista no será separado y en sí mismo, no voy a ponerla en el DIV de base que las listas anteriores han habitado. Esta vez, el margen de beneficio será un párrafo, seguido por la misma lista, seguido de otro párrafo.
Te oigo llorar, “Foul! Pensé que íbamos a poner una lista dentro de un párrafo, no entre dos párrafos. ”
A lo que contesto: “Bueno, sí. Pero (X) HTML no permite una lista que aparecen dentro de un párrafo. Sin embargo, con la ayuda de nuestra hoja de estilo, que es como se verá en la página web “.
Esto es lo que los estilos parecidos a estos:
border: 1px solid #000;
margin: 2em;
width: 80%;
padding: 5px;
font-family: Verdana, sans-serif;
}
#inline-list p {
display: inline;
}
#inline-list ul, #inline-list li {
display: inline;
margin: 0;
padding: 0;
color: #339;
font-weight: bold;
}
Los resultados están por debajo de (la lista aparece en negrita y azul):
content: “, “;
}
#inline-list-gen ul li.last:after {
content: “. “;
}
Y luego está el texto que sigue a la lista en el párrafo. Uno o dos frases es suficiente para el ejemplo.
#h-contain {
padding: 5px;
border: 1px solid #000;
margin-bottom: 25px;
}
Los dos ejemplos siguientes utilizan el mismo UL como en los ejemplos anteriores, pero sin el elemento de la lista final con su texto adicional. También incluyen una clase adicional que separa una de la LIS en la lista.
Un carácter de canalización, |, a menudo se utiliza para diferenciar entre las opciones. Se trata de un evidente carácter de separación, y puede servir de ejemplo para agregar a la lista de artículos de las fronteras:
margin-left: 0;
padding-left: 0;
display: inline;
}
margin-left: 0;
padding: 3px 15px;
border-left: 1px solid #000;
list-style: none;
display: inline;
}
#pipe ul li.first {
margin-left: 0;
border-left: none;
list-style: none;
display: inline;
}
margin-left: 0;
padding-left: 0;
display: inline;
}
#tabs ul li {
margin-left: 0;
margin-bottom: 0;
padding: 2px 15px 5px;
border: 1px solid #000;
list-style: none;
display: inline;
}
#tabs ul li.here {
border-bottom: 1px solid #ffc;
list-style: none;
display: inline;
}
Nota: Esta técnica fue ofrecida por Randal Rust, y luego riffed por muchos en el css-discuss lista de correo electrónico
Senderos Breadcrumb
Otra lista de enlaces que normalmente tiene una orientación horizontal en una página web es lo que se conoce como breadcrumbing. Pan rallado mostrará dónde usted está en la jerarquía de un sitio, a partir de la página de inicio y la perforación hasta la sección actual o la página. Si usted realmente quiere hacer el marcado sentido, usted quiere crear una serie de listas anidadas, ya que cada nueva sección forma parte de la sección antes de que:
<ul>
<li>Home
<ul>
<li>» Products
<ul>
<li>» Computers
<ul>
<li>» Software</li>
</ul></li>
</ul></li>
</ul></li>
</ul>
</div>
* Home» Products» Computers» Software
color: #ccc;
background-color: #006;
padding: 3px;
margin-bottom: 25px;
}
#bread ul {
margin-left: 0;
padding-left: 0;
display: inline;
border: none;
}
#bread ul li {
margin-left: 0;
padding-left: 2px;
border: none;
list-style: none;
display: inline;
}
content: “\0020 \0020 \0020 \00BB \0020″;
color: #ff9;
}
#bread-gen ul li.first:before {
content: ” “;
}
Me gustaría terminar con una aplicación real de algunas de las técnicas que se han discutido aquí. Usaremos un UL estándar que contiene enlaces para crear un menú dinámico con efectos de la libración. Con el fin de obtener los efectos de la libración vamos a dejar que la UL proporcionan la estructura y los estilos de anclaje proporcionará la mayoría de los efectos visuales.
<ul>
<li><a href=”#”>Home</a></li>
<li><a href=”#”>Hidden Cameras</a></li>
<li><a href=”#”>CCTV Cameras</a></li>
<li><a href=”#”>Employee Theft</a></li>
<li><a href=”#”>Helpful Hints</a></li>
<li><a href=”#”>F.A.Q</a></li>
<li><a href=”#”>About Us</a></li>
<li><a href=”#”>Contact Us</a></li>
</ul>
</div>
width: 12em;
border-right: 1px solid #000;
padding: 0 0 1em 0;
margin-bottom: 1em;
font-family: ‘Trebuchet MS’, ‘Lucida Grande’,
Verdana, Lucida, Geneva, Helvetica,
Arial, sans-serif;
background-color: #90bade;
color: #333;
}
list-style: none;
margin: 0;
padding: 0;
border: none;
}
#button li {
border-bottom: 1px solid #90bade;
margin: 0;
}
display: block;
padding: 5px 5px 5px 0.5em;
border-left: 10px solid #1958b7;
border-right: 10px solid #508fc4;
background-color: #2175bc;
color: #fff;
text-decoration: none;
width: 100%;
}
html>body #button li a {
width: auto;
}
#button li a:hover {
border-left: 10px solid #1c64d1;
border-right: 10px solid #5ba3e0;
background-color: #2586d7;
color: #fff;
}
Hay una solución en esta parte de la hoja de estilo. Para establecer los vínculos activos para el ancho de la DIV, hice display: block;. Esto funciona para todo, pero IE / Windows. Si usted le da al bloque un ancho explícita del 100%, entonces IE / Windows juega a lo largo. Pero hacer esto crea problemas con IE5/Mac y Netscape / Mozilla. Así que he usado el selector de hijo “>” para redefinir el ancho de automóviles. Desde IE / Windows no entiende selectores de hijos, se ignora la regla. IE5/Mac, Opera y Netscape / Mozilla seguir la regla, y todo el mundo está feliz.
La regla para la: hover pseudo-clase crea los cambios de color en el fondo y las fronteras cuando los vínculos son moused más.
El estilo y la lista de marcado (alrededor de 1K vale la pena), sustituyó sobre 5K de JavaScript y de marcado de mesa, por no hablar de otro modo 8K o de imágenes para los efectos de vuelco. También hizo el marcado más legible y más fácil de actualizar, puesto que ya no es necesario crear nuevas imágenes, si cambia un enlace del nombre. Ahora simplemente modificar el texto. Usted puede ver el resultado final en el contexto de la página en el sitio web de Vigilancia de Activos.
Punta del Iceberg
Lo creas o no, acabamos de arañado la superficie de lo que se puede hacer para modificar las listas con las hojas de estilo. No voy a pretender que todas las técnicas presentadas aquí son la CSS más práctico que usted va a venir a través, pero espero que te hacen pensar acerca de cómo utilizar CSS puede liberar el uso de marcas más estructurada.
fuente: alistapart