Múltiples li flotantes a izquierda y derecha

4 minutos de lectura

avatar de usuario
SaurabhLP

Estoy tratando de hacer una barra lateral personalizada en wordpress, tengo todos los elementos y la información en li’s, lo que estoy tratando de hacer es cambiar la mitad del total de li’s a la izquierda y la otra mitad a la derecha…

Lo que estoy usando es float/clear left and right, eso no parece funcionar como yo quería…

Estructura HTML: –

<ul>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
    <li class="right">Right</li>
</ul>

El CSS: –

.left { float:left; width:50%; clear:left; }
.right { float:right; width:50%; clear:right }

jsviolín

  • Funciona como se esperaba. jsfiddle.net/B3YLp

    – Alex G.

    1 de abril de 2013 a las 13:37

Si está dispuesto a renunciar a su disco de estilo de lista (según el navegador), puede hacerlo fácilmente sin flotadores ni modificar su marcado.

http://jsfiddle.net/Duejc/2/

ul {
    -webkit-columns: 2;
    -moz-columns: 2;
    columns: 2;
}

  • esto es lo que estoy buscando, pero no es compatible con IE ninguna solución para esto…

    – SaurabhLP

    2 de abril de 2013 a las 5:13

  • Lo único que puedes hacer es encontrar un polyfill adecuado. A ver si funciona este: github.com/BetleyWhitehorne/CSS3MultiColumn

    – cimarrón

    02/04/2013 a las 10:55

avatar de usuario
Axente Paul

¿Por qué no lo frenas así, según el caso? 🙂

<ul class="left">
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
    <li>Left</li>
</ul>

<ul class="right">

    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
    <li>Right</li>
</ul>

.left{
float: left;
width: 50%; }

.right{
float: right;
width: 50%; }

o hazlo como dice @Xander 🙂

  • Sí, me gusta más este porque es más fácil ver la intención del HTML.

    – Colin De Clue

    1 de abril de 2013 a las 14:05

  • estoy trabajando en wordpress para esto tengo que personalizar la estructura HTML, ese es un proceso bastante largo…

    – SaurabhLP

    2 de abril de 2013 a las 5:04

  • Excelente una lista de datos aparte y convertirla en dos listas solo para fines de visualización no hace ningún sentido semánticamente.

    – CBroe

    3 de abril de 2013 a las 7:58

avatar de usuario
Alex

Mezcla tu HTML. cuando un elemento es cleared lo hace contra el elemento flotante previamente; en tu caso, fue el sexto elemento despejando el quinto:

<ul>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
    <li class="left">Left</li>
    <li class="right">Right</li>
</ul>

jsviolín

  • Aunque el HTML/CSS está bien, lo encontraría un poco difícil en cuanto a semántica y mantenimiento. prefiero ver a ul elementos para agrupar los enlaces izquierdo y derecho respectivamente.

    – Marc Audet

    1 de abril de 2013 a las 14:02

  • @MarcAudet cierto. agrupar el contenido en “columnas” sería un enfoque más fácil de mantener. sin embargo, mi respuesta ayuda a aclarar/ilustrar el problema de por qué las columnas están sesgadas; y mas importante como cleararena floatfunción s…

    – Alex

    1 de abril de 2013 a las 14:07


  • Estoy de acuerdo con @Xander: es bueno, así que vea que se discuten ambas opciones, ya que ambas son útiles según el contenido que se marque.

    – Marc Audet

    01/04/2013 a las 14:10

  • ya que estoy usando widgets de wordpress para que wordpress no adapte dinámicamente esa cosa porque los widgets se pueden organizar como el usuario quiera ser …

    – SaurabhLP

    2 de abril de 2013 a las 5:28

Hecho con marcas y estilos simples.
http://codepen.io/ruinunes/pen/bpgpZV

HAML:

%ul.chat
  %li.stamp 
    Saturday
    %span 20:32
  %li.left Who is it?
  %li.right It's Little Nero's, sir. I have your pizza.
  %li.left Leave it on the doorstep and get the hell outta here
  %li.stamp 
    Saturday
    %span 20:33
  %li.right Okay, but what about the money?
  %li.left What money?
  %li.right Well, you have to pay for your pizza, sir.
  %li.left Is that a fact? How much do I owe you?
  %li.left Keep the change, ya filthy animal!
  %li.right Cheapskate.

SCSS

ul.chat {
  font-family: sans-serif;
  list-style:none;
  margin: 0 auto;
  padding: 0;
  width: 50%;

  li {
    margin-bottom: 10px;
    display: inline-block;
    border-radius: 8px;
    padding: 10px;

    &.left { 
      background: #e3e3e3;
      float:left;
      margin-right: 50%;
      width:50%;
      border-top-left-radius: 0;
    }

    &.right {
      background: #6CCE66;
      color: #fff;
      float: right;
      width: 50%;
      border-top-right-radius: 0;
    }

    &.stamp {
      color: #666;
      font-size: 80%;
      text-align: center;
      width: 100%;
      span {
        color: #999;
      }
    }
  }

}

¿Ha sido útil esta solución?