Tengo una lista de ul has dentro. ¿Es posible dividir la lista en 3 columnas?
La estructura de mi html es así:
<ul>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
<li>Test</li>
</ul>
Problema: No puedo editar directamente la página y dividir la lista en 3 ul. Debo editarlo a través de CSS.
Producción: El resultado final debe tener 3 columnas. Y editado a través de CSS
Por favor, ayúdame.
visión del mono
ul {
-webkit-column-count: 3;
-moz-column-count: 3;
column-count: 3;
}
-
Al menos en WebKit, esto eliminará las viñetas de la lista.
– Ry-
♦12 de septiembre de 2014 a las 3:06
-
Hola. Intenté tu respuesta pero no funciona para Mozilla y Chrome.
– Redshot
12 de septiembre de 2014 a las 3:06
-
@minitech
li:before {content: '● ';font-size: 10px;}
🙂– visión de mono
12 de septiembre de 2014 a las 3:13
-
Si utiliza:
list-style-position: inside;
Verás las balas.–Jeff Mattson
3 sep 2017 a las 19:32
-
¿Soy el único que dijo “WOAH, esto es ASÍ de simple?”. Iba a calcular el número de columnas, hacer algunas cosas difíciles de html/css, etc.
– Víctor
27 mayo 2018 a las 16:50
mohammad usman
CSS3 flexbox
también puede hacer esto también:
ul {
flex-direction: column;
flex-wrap: wrap;
display: flex;
height: 100vh;
}
ul li {
flex: 1 0 25%;
}
Arriba css creará el siguiente diseño:
+--------------------+
| 01 | 05 | 09 |
+--------------------+
+--------------------+
| 02 | 06 | 10 |
+--------------------+
+--------------------+
| 03 | 07 | 11 |
+--------------------+
+--------------------+
| 04 | 08 | 12 |
+--------------------+
* {box-sizing: border-box;}
body {
margin: 0;
}
.list {
flex-direction: column;
list-style: none;
flex-wrap: wrap;
height: 100vh;
display: flex;
padding: 0;
margin: 0;
}
.list li {
border-bottom: 1px solid #fff;
border-right: 1px solid #fff;
flex: 1 0 25%;
padding: 10px;
color: #fff;
}
.col1 {
background: blue;
}
.col2 {
background: orange;
}
.col3 {
background: green;
}
<ul class="list">
<li class="col1">Test 1</li>
<li class="col1">Test 2</li>
<li class="col1">Test 3</li>
<li class="col1">Test 4</li>
<li class="col2">Test 5</li>
<li class="col2">Test 6</li>
<li class="col2">Test 7</li>
<li class="col2">Test 8</li>
<li class="col3">Test 9</li>
<li class="col3">Test 10</li>
<li class="col3">Test 11</li>
<li class="col3">Test 12</li>
</ul>
En caso de que desee el siguiente diseño:
+-----------------------+
| 1 | 2 | 3 | 4 |
+-----------------------+
+-----------------------+
| 5 | 6 | 7 | 8 |
+-----------------------+
+-----------------------+
| 9 | 10 | 11 | 12 |
+-----------------------+
puedes usar el siguiente css:
ul {
flex-wrap: wrap;
display: flex;
}
ul li {
flex: 1 0 25%;
}
* {box-sizing: border-box;}
body {
margin: 0;
}
.list {
list-style: none;
flex-wrap: wrap;
display: flex;
padding: 0;
margin: 0;
}
.list li {
border-bottom: 1px solid #fff;
flex: 1 0 25%;
padding: 10px;
color: #fff;
}
.list li:nth-child(4n + 1) {
background: blue;
}
.list li:nth-child(4n + 2) {
background: orange;
}
.list li:nth-child(4n + 3) {
background: green;
}
.list li:nth-child(4n + 4) {
background: purple;
}
<ul class="list">
<li>Test 1</li>
<li>Test 2</li>
<li>Test 3</li>
<li>Test 4</li>
<li>Test 5</li>
<li>Test 6</li>
<li>Test 7</li>
<li>Test 8</li>
<li>Test 9</li>
<li>Test 10</li>
<li>Test 11</li>
<li>Test 12</li>
</ul>
Devin
si no le gusta la respuesta del recuento de columnas (a mí también me gusta, pero es cierto que el soporte es “dudoso”, especialmente en IE), simplemente puede hacer esto:
ul li{width:33.333333%; float:left;}
o incluso
ul{display:block;}
ul li{display:inline-block;}
Pero de esta manera tendrás 3 columnas aunque en diferente orden: en lugar de
1 4 7
2 5 8
3 6 9
tendras
1 2 3
4 5 6
7 8 9
así que considere los pros y los contras.
Personalmente, usaría la respuesta de monkeyinsight, pero si necesita otra opción, aquí tiene
-
Gracias. En mi opinión, el enfoque ul{display:block;} ul li{display:inline-block;} es la mejor opción.
–Leonardo
26 de marzo de 2018 a las 22:09
-
¿Qué hace la coma en
width:33,333333%
? ¿Las comas son intercambiables con los puntos en números/porcentajes?– Empleado
1 de enero de 2019 a las 5:50
-
es un error tipográfico de autocorrección, en mi idioma y configuración regional (español, Argentina), las comas reemplazan los puntos
– Devin
2 de enero de 2019 a las 2:00
Usando la cuadrícula CSS
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="index.css">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<div class="cont">
<ul class="list">
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
<li class="list-item">*</li>
</ul>
</div>
</body>
</html>
y el css
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.list {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
Manifestación: https://codepen.io/anthony_718/pen/ExgyKGr
Ver developer.mozilla.org/en-US/docs/Web/CSS/columns para obtener más información sobre las propiedades utilizadas en la respuesta de monkeyinsight.
– Ry-
♦
12 de septiembre de 2014 a las 3:14