2012-03-02 12 views
5

Después de buscar en SO encontré this como la mejor respuesta para mi necesidad de tener esquinas redondeadas para las tablas.Mesas de esquina redondeadas con LESS

que me llevan a la siguiente fragmento de CSS:

.greytable tr:first-child th:first-child { 
    -moz-border-radius-topleft: 5px; 
    -webkit-border-top-left-radius: 5px; 
    border-top-left-radius: 5px; 
} 

.greytable tr:first-child th:last-child { 
    -moz-border-radius-topright: 5px; 
    -webkit-border-top-right-radius: 5px; 
    border-top-right-radius: 5px; 
} 

.greytable tr:last-child td:first-child { 
    -moz-border-radius-bottomleft: 5px; 
    -webkit-border-bottom-left-radius: 5px; 
    border-bottom-left-radius: 5px; 
} 

.greytable tr:last-child td:last-child { 
    -moz-border-radius-bottomright: 5px; 
    -webkit-border-bottom-right-radius: 5px; 
    border-bottom-right-radius: 5px; 
} 

Ahora me gustaría saber cómo podría simplificar todo esto con menos. He probado el siguiente código MENOS:

.border-radius (@v, @h, @radius: 5px) { 
    [email protected]@h: @radius; 
    [email protected]@h: @radius; 
    [email protected]@h: @radius; 
} 

e invocarla (por la esquina superior izquierda):

.greytable tr:first-child th:first-child { 
    .border-radius('top', 'left') 
} 

Pero no funciona (error en la segunda línea del fragmento menos) .

¡Gracias de antemano!

Respuesta

7

Puede que tenga que utilizar la sintaxis de interpolación de cadenas, intente esto:

.border-radius (@v, @h, @radius: 5px) { 
    [email protected]{v}@{h}: @radius; 
    [email protected]{v}[email protected]{h}-radius: @radius; 
    [email protected]{v}[email protected]{h}-radius: @radius; 
} 

Me gustaría añadir que WebKit y Mozilla son en gran parte a la velocidad con la border-radius propiedad estándar, y los prefijos de proveedores se están convirtiendo en obsoleto para ello.


EDITAR: Parece que la interpolación de cadenas no está funcionando para esta tarea (el código anterior no compilará), así que aquí tiene un mixin solución que en realidad será más fácil de usar:

.rounded-table(@radius) { 
    tr:first-child th:first-child { 
     -moz-border-radius-topleft: @radius; 
     -webkit-border-top-left-radius: @radius; 
     border-top-left-radius: @radius; 
    } 
    tr:first-child th:last-child { 
     -moz-border-radius-topright: @radius; 
     -webkit-border-top-right-radius: @radius; 
     border-top-right-radius: @radius; 
    } 
    tr:last-child td:first-child { 
     -moz-border-radius-bottomleft: @radius; 
     -webkit-border-bottom-left-radius: @radius; 
     border-bottom-left-radius: @radius; 
    } 
    tr:last-child td:last-child { 
     -moz-border-radius-bottomright: @radius; 
     -webkit-border-bottom-right-radius: @radius; 
     border-bottom-right-radius: @radius; 
    } 
} 

Uso:

.greytable { 
    .rounded-table(10px) 
} 

salida:

.greytable tr:first-child th:first-child { 
    -moz-border-radius-topleft: 10px; 
    -webkit-border-top-left-radius: 10px; 
    border-top-left-radius: 10px; 
} 
.greytable tr:first-child th:last-child { 
    -moz-border-radius-topright: 10px; 
    -webkit-border-top-right-radius: 10px; 
    border-top-right-radius: 10px; 
} 
.greytable tr:last-child td:first-child { 
    -moz-border-radius-bottomleft: 10px; 
    -webkit-border-bottom-left-radius: 10px; 
    border-bottom-left-radius: 10px; 
} 
.greytable tr:last-child td:last-child { 
    -moz-border-radius-bottomright: 10px; 
    -webkit-border-bottom-right-radius: 10px; 
    border-bottom-right-radius: 10px; 
} 
+0

He solucionado el error de mi hardcoding, puede editar en consecuencia. ¡Muchas gracias! – janosrusiczki

+0

Todavía no funcionará, al menos con WinLess. – janosrusiczki

+0

Sí, estoy perplejo y demasiado cansado para resolverlo en este momento. Me registraré mañana y veré cómo te las arreglaste. –

Cuestiones relacionadas