Top Banner
LESS, UN PREPROCESADOR CSS ADOLFO SANZ DE DIEGO SEPTIEMBRE 2014
141

LESS un preprocesador CSS

Jun 13, 2015

Download

Technology

Empiezo con una breve introducción, contando qué es 'Less' y cuales son sus principales ventajas.

Sigo explicando las distintas formas con las que podemos trabajar con 'Less'

En tercer lugar, hago un breve resumen de las principales características, entrando seguidamente a explicar con más detalle cada una de ellas: variables, extends, mixins, mixins paramétricos, mixins condicionales, merges, ...

Para terminar, enumero las distintas funciones que posee, ya sean de numéricas, de texto o relacionadas con el color.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: LESS un preprocesador CSS

LESS,UNPREPROCESADORCSS

ADOLFOSANZDEDIEGOSEPTIEMBRE2014

Page 2: LESS un preprocesador CSS

1ELAUTOR

Page 3: LESS un preprocesador CSS

1.1ADOLFOSANZDEDIEGOAntiguoprogramadorwebJEE(6años)Hoyendía:ProfesordeFP(6años):Hardware,SistemasOperativosRedes,Programación

FormadorFreelance(3años):Java,AndroidJavaScript,jQueryJSF,Spring,HibernateGroovy&Grails

Page 4: LESS un preprocesador CSS

1.2ALGUNOSPROYECTOSFundadory/ocreador:HackathonLovers:TweetsSentiment:MarkdownSlides:

Co-fundadory/oco-creador:PeliTweets:PasswordManagerGenerator:

http://hackathonlovers.comhttp://tweetssentiment.com

https://github.com/asanzdiego/markdownslides

http://pelitweets.com

http://pasmangen.github.io

Page 5: LESS un preprocesador CSS

1.3¿DONDEENCONTRARME?Minick:asanzdiegoAboutMe:GitHub:Twitter:Blog:LinkedIn:Google+:

http://about.me/asanzdiegohttp://github.com/asanzdiegohttp://twitter.com/asanzdiego

http://asanzdiego.blogspot.com.eshttp://www.linkedin.com/in/asanzdiego

http://plus.google.com/+AdolfoSanzDeDiego

Page 6: LESS un preprocesador CSS

2INTRODUCCIÓN

Page 7: LESS un preprocesador CSS

2.1¿QUÉES?Lessesunpre-procesadordeCSS.Añadecaracterísticascomovariables,mixins,funciones,etc.

Page 8: LESS un preprocesador CSS

2.2VENTAJASElCSSesasímásfácildemantener,personalizableyextensible.Less(conrespectoaotrospre-procesadoresCSS)tieneunasintaxisparecidaaCSS.

Page 9: LESS un preprocesador CSS

2.3CARACTERÍSTICASLesssepuedeejecutardesdeNodeJS,desdeunnavegador,odesdeRhino.Ademásexistenmuchasherramientasquepermitencompilarlosarchivosyverloscambiosencaliente.

Page 10: LESS un preprocesador CSS

3USANDOLESS

Page 11: LESS un preprocesador CSS

3.1INSTALACIÓNLaformamássencilladeinstalarLess,esatravésdelanpm,elgestordepaquetesdeNodeJS:$npminstall-gless

Page 12: LESS un preprocesador CSS

3.2LÍNEADECOMANDOSUnavezinstalado,sepuedecompilardesdelalíneadecomandos:$lesscstyles.less>styles.css

Page 13: LESS un preprocesador CSS

3.3DESDENODEJS(I)Elsiguientecódigo:

varless=require('less');

less.render('.class{width:(1+1)}',function(e,css){console.log(css);});

Page 14: LESS un preprocesador CSS

3.4DESDENODEJS(II)Sacaráporpantalla:

.class{width:2;}

Page 15: LESS un preprocesador CSS

3.5CONRHINORhinotepermiteusarJavaScriptdesdeunaMáquinaVirtualdeJavajava-jarjs.jar-fless-rhino-<version>.jslessc-rhino-<version>.jsstyles.lessstyles.css

Page 16: LESS un preprocesador CSS

3.6DESDEELNAVEGADOR(I)Eslaformamásfácilparaempezar,peronoesrecomendableusarloasíenproducción.Serecomiendapre-compilarusandoNodeJS,Rhino,ounadelasmuchasherramientasdetercerosdisponibles.

Page 17: LESS un preprocesador CSS

3.7DESDEELNAVEGADOR(II)Enlazartuarchivolessquequierasprecompilar:

<linkrel="stylesheet/less"type="text/css"href="styles.less"/>

Page 18: LESS un preprocesador CSS

3.8DESDEELNAVEGADOR(II)Descargar:

Enlazareljsdeless:https://github.com/less/less.js/archive/master.zip

<scriptsrc="less.js"type="text/javascript"></script>

Page 19: LESS un preprocesador CSS

3.9DESDEELNAVEGADOR(III)Consejos;Enlazatusarchivosaprecompilarantesquelalibreríadeless.Sihaymásdeunarchivoaprecompilar,estossecompilandeformaindependiente.

Page 20: LESS un preprocesador CSS

4CARACTERÍSTICAS

Page 21: LESS un preprocesador CSS

4.1VARIABLES(I)Elsiguientecódigo:

@nice-blue:#5B83AD;@light-blue:@nice-blue+#111;

#header{color:@light-blue;}

Page 22: LESS un preprocesador CSS

4.2VARIABLES(II)Lescompilaa:

#header{color:#6c94be;}

Nota:lasvariablessonenrealidad"constantes"yaquesólopuedenserdefinidasunavez.

Page 23: LESS un preprocesador CSS

4.3EXTENDSonunaformadeherencia:

.animal{background-color:black;color:white;}.bear{&:extend(.animal);background-color:brown;}

Page 24: LESS un preprocesador CSS

4.4MIXINS(I)LosMixinssonunaformadereutilizarpropiedadesyadefinidas:Imaginemoslaclase.bordered:.bordered{border-top:dotted1pxblack;border-bottom:solid2pxblack;}

Page 25: LESS un preprocesador CSS

4.5MIXINS(II)Lopodemosusarasí:

#menua{color:#111;.bordered;}

.posta{color:red;.bordered;}

Nota:Ademásdeclases,tambiénsepuedenutilizar#idscomomixins.

Page 26: LESS un preprocesador CSS

4.6REGLASANIDADAS(I)SupongamosquetenemoselsiguienteCSS:

#header{color:black;}#headera{color:blue;}#headera:hover{color:red;}

Page 27: LESS un preprocesador CSS

4.7REGLASANIDADAS(II)PuesconLesssepuedeescribirasí:

#header{color:black;a{color:blue;&:hover{color:red;}}}

Sepuedenusarpseudo-elementos,yllamaralselectorpadreactual,con&:

Page 28: LESS un preprocesador CSS

4.8MEDIASQUERIESANIDADAS(I)Elsiguientecódigo:

@mediascreen{.screencolor{color:green;}}@mediascreenand(min-width:768px){.screencolor{color:red;}}@mediatv{.screencolor{color:black;}}

Page 29: LESS un preprocesador CSS

4.9MEDIASQUERIESANIDADAS(II)Sepodríaescribir:

.screencolor{@mediascreen{color:green;@media(min-width:768px){color:red;}}@mediatv{color:black;}}

Page 30: LESS un preprocesador CSS

4.10OPERACIONES(I)Lesspuedehaceroperacionesconnúmeros,coloresovariables.Ademássabediferenciarcuandoesunnúmeroouncolor.

Page 31: LESS un preprocesador CSS

4.11OPERACIONES(II)@base:5%;@filler:@base*2;@other:@base+@filler;@base-color:#888/4;

background-color:@base-color+#111;height:100%/2+@other;

Page 32: LESS un preprocesador CSS

4.12FUNCIONESLessdisponedeunavariedaddefuncionesmatemáticas,quemanipulancadenas,yquetransformanloscolores:@base:#f04615;@list:200,500,1200;

.class{width:extract(@list,3);color:saturate(@base,5%);background-color:lighten(@base,25%);}

Page 33: LESS un preprocesador CSS

4.13NAMESPACES(I)Aveces,podemosquereragruparmixins,pormotivosdeorganización,osimplementeparaencapsularlos.

Page 34: LESS un preprocesador CSS

4.14NAMESPACES(II)Veamoscomopodemosagruparvariosmixins:

#bundle{.button{border:1pxsolidblack;background-color:grey;}.tab{...}.citation{...}}

Page 35: LESS un preprocesador CSS

4.15NAMESPACES(III)Ahorapodemosutilizarelmixin.buttonqueestáenelnamespace#bundledeestaforma:#headera{color:orange;#bundle>.button;}

Page 36: LESS un preprocesador CSS

4.16SCOPELosámbitosdelasvariablesenLessesmuysimilaraotroslenguajes:@var:red;

#page{@var:white;#header{color:@var;//white}}

Page 37: LESS un preprocesador CSS

4.17COMENTARIOSCon//...ycon/*...*/

/*Onehellofablockstylecomment!*/@var:red;

//Getinline!@var:white;

Page 38: LESS un preprocesador CSS

4.18IMPORTS//foo.lessisimported@import"foo";

//foo.lessisimported@import"foo.less";

//foo.phpimportedasalessfile@import"foo.php";

//foo.cssimportedasacssfile@import"foo.css";

Page 39: LESS un preprocesador CSS

5VARIABLES

Page 40: LESS un preprocesador CSS

5.1¿PORQUÉ?(I)Lasvariablesseusanparanotenerquerepetirconstantementelosmismosvalores,conloqueseconsigueademásuncódigomásfácildemantener:a,.link{color:#428bca;}.widget{color:#fff;background:#428bca;}

Page 41: LESS un preprocesador CSS

5.2¿PORQUÉ?(II)ConLessquedaría:

@color:#428bca

a,.link{color:@color;}.widget{color:#fff;background:@color;}

Page 42: LESS un preprocesador CSS

5.3SELECTORES(I)Tambiénsepuedenusarcomoselectores:

@mySelector:banner;

.@{mySelector}{font-weight:bold;line-height:40px;margin:0auto;}

Page 43: LESS un preprocesador CSS

5.4SELECTORES(II)CompiladoconLessquedaría:

.banner{font-weight:bold;line-height:40px;margin:0auto;}

Page 44: LESS un preprocesador CSS

5.5URLSTambiénsepuedenusarURLs:

@images:"../img";

body{color:#444;background:url("@{images}/white-sand.png");}

Page 45: LESS un preprocesador CSS

5.6PROPIEDADES(I)Tambiénsepuedenusarcomopropiedades:

@property:color;

.widget{@{property}:#0ee;background-@{property}:#999;}

Page 46: LESS un preprocesador CSS

5.7PROPIEDADES(II)CompiladoconLessquedaría:

.widget{color:#0ee;background-color:#999;}

Page 47: LESS un preprocesador CSS

5.8NOMBRESDELASVARIABLES(I)Tambiénsepuedenusarvariablescomonombresdeotrasvariables:@fnord:"Iamfnord.";@var:"fnord";content:@@var;

Page 48: LESS un preprocesador CSS

5.9NOMBRESDELASVARIABLES(II)CompiladoconLessquedaría:

content:"Iamfnord.";

Page 49: LESS un preprocesador CSS

5.10CARGAPEREZOSA(I)Lasvariablesnotienenqueserdeclaradasantesdeserutilizados.Esoesválido:.lazy-eval{width:@var;}

@var:@a;@a:9%;

Page 50: LESS un preprocesador CSS

5.11CARGAPEREZOSA(II)CompiladoconLessquedaría:

.lazy-eval{width:9%;}

Page 51: LESS un preprocesador CSS

5.12ÁMBITOS(I)Aldefinirunavariabledosveces,seutilizalaúltimadefinicióndelavariable:@var:0;.class{@var:1;.brass{@var:2;three:@var;@var:3;}one:@var;}

Page 52: LESS un preprocesador CSS

5.13ÁMBITOS(II)CompiladoconLessquedaría:

.class{one:1;}.class.brass{three:3;}

Page 53: LESS un preprocesador CSS

6EXTEND

Page 54: LESS un preprocesador CSS

6.1CASODEUSO(I)Imaginoquetenemoslosiguiente:

.animal{background-color:black;color:white;}

Yqueremostenerunsubtipodeanimalquesobrescribalapropiedadbackground-color.

Page 55: LESS un preprocesador CSS

6.2CASODEUSO(II)Podemoshacerlosiguiente:

<aclass="animalbear">Bear</a>

.animal{background-color:black;color:white;}.bear{background-color:brown;}

Page 56: LESS un preprocesador CSS

6.3CASODEUSO(III)Opodemossimplificarelhtmlyusarextend:

<aclass="bear">Bear</a>

.animal{background-color:black;color:white;}.bear{&:extend(.animal);background-color:brown;}

Page 57: LESS un preprocesador CSS

6.4REDUCEELTAMAÑODELCSS(I)Ejemplodemixin:

.my-inline-block(){display:inline-block;font-size:0;}.thing1{.my-inline-block;}.thing2{.my-inline-block;}

Page 58: LESS un preprocesador CSS

6.5REDUCEELTAMAÑODELCSS(II)Lesslocompilaa:

.thing1{display:inline-block;font-size:0;}.thing2{display:inline-block;font-size:0;}

Page 59: LESS un preprocesador CSS

6.6REDUCEELTAMAÑODELCSS(III)Conextends:

.my-inline-block{display:inline-block;font-size:0;}.thing1{&:extend(.my-inline-block);}.thing2{&:extend(.my-inline-block);}

Page 60: LESS un preprocesador CSS

6.7REDUCEELTAMAÑODELCSS(IV)Lesslocompilaa:

.my-inline-block,.thing1,.thing2{display:inline-block;font-size:0;}

Page 61: LESS un preprocesador CSS

7MIXINS

Page 62: LESS un preprocesador CSS

7.1SELECTORESSepuedenhacerMixinstantoconselectoresdeclasecomoconselectoresdeidentificación:.a,#b{color:red;}.mixin-class{.a();}.mixin-id{#b();}

Page 63: LESS un preprocesador CSS

7.2NOEXPORTARMIXINS(I)SinoquieresqueelMixinseaexportadoalCSS,utilizalosparéntesis:.my-mixin{color:black;}.my-other-mixin(){background:white;}.class{.my-mixin;.my-other-mixin;}

Page 64: LESS un preprocesador CSS

7.3NOEXPORTARMIXINS(II)Lesslocompilaa:

.my-mixin{color:black;}.class{color:black;background:white;}

Page 65: LESS un preprocesador CSS

7.4PSEUDO-CLASES(I)LosMixinstambiénsoportanpseudo-clases:

.my-hover-mixin(){&:hover{border:1pxsolidred;}}button{.my-hover-mixin();}

Page 66: LESS un preprocesador CSS

7.5PSEUDO-CLASES(II)Lesslocompilaa:

button:hover{border:1pxsolidred;}

Page 67: LESS un preprocesador CSS

7.6NAMESPACES(I)Podemoscrearunnamespaceconvariosmixins:#outer{.inner{color:red;}}

Page 68: LESS un preprocesador CSS

7.7NAMESPACES(II)ParallamaralMixin,losparentesis,elespacioyel>esopcional,asíquesepuedehacerdetodasestasformas:#outer>.inner;#outer>.inner();#outer.inner;#outer.inner();#outer.inner;#outer.inner();

Page 69: LESS un preprocesador CSS

7.8!IMPORTANTKEYWORD(I)DetrásdeunMixin,alcompilarponetodocomoimportante:.foo(){background:#f5f5f5;color:#fff;}.unimportant{.foo();}.important{.foo()!important;}

Page 70: LESS un preprocesador CSS

7.9!IMPORTANTKEYWORD(II)Lesslocompilaa:

.unimportant{background:#f5f5f5;color:#fff;}.important{background:#f5f5f5!important;color:#fff!important;}

Page 71: LESS un preprocesador CSS

8MIXINSPARAMÉTRICOS

Page 72: LESS un preprocesador CSS

8.1PARÁMETROS(I)LosMixinstambiénpuedetomarparámetros:.border-radius(@radius){-webkit-border-radius:@radius;-moz-border-radius:@radius;border-radius:@radius;}

#header{.border-radius(4px);}

Page 73: LESS un preprocesador CSS

8.2PARÁMETROS(II)Lesslocompilaa:

#header{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}

Page 74: LESS un preprocesador CSS

8.3VALORPORDEFECTO(I)LosMixinstambiénpuedetomarparámetrosconunvalorpordefecto:.border-radius(@radius:5px){-webkit-border-radius:@radius;-moz-border-radius:@radius;border-radius:@radius;}

#header{.border-radius;}

Page 75: LESS un preprocesador CSS

8.4VALORPORDEFECTO(II)Lesslocompilaa:

#header{-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}

Page 76: LESS un preprocesador CSS

8.5PARÁMETROSMÚLTIPLES(I)Losparámetrossepuedensepararporcoma(,)oporpuntoycoma(;).Serecomiendaelpuntoycoma(;).

Page 77: LESS un preprocesador CSS

8.6PARÁMETROSMÚLTIPLES(II)Lacoma(,)tienedoblesentido:sepuedeinterpretarcomounseparadordeparámetrosMixinocomoseparadordeloselementosdeunalista.Sielcompiladorencuentraalmenosunpuntoycoma(;)asumequelosargumentosseseparanporpuntoycomayloscomaspertenecenalistas.

Page 78: LESS un preprocesador CSS

8.7PARÁMETROSMÚLTIPLES(III).name(1,2,3;something,else)2parámetros,cadaunoesunalista

.name(1,2,3)3parámetros,cadaunocontieneunnúmero

.name(1,2,3;)1parámetro,queesunalista

.name(@param1:red,blue;)1parámetro,conunalistacomovalorpredeterminado

Page 79: LESS un preprocesador CSS

8.8PARÁMETROSMÚLTIPLES(IV)Sepuedetenervariosmixinsconelmismonombreyelmismonúmerodeparámetros,puesLessutilizarátodoslosposibles:.mixin(@color){color:@color;}.mixin(@color;@padding:2){padding:@padding;}.mixin(@color;@padding;@margin:2){margin:@margin;}.some.selectordiv{.mixin(#008000);}

Page 80: LESS un preprocesador CSS

8.9PARÁMETROSMÚLTIPLES(V)Lesslocompilaa:

.some.selectordiv{color-1:#008000;padding-2:2;}

Page 81: LESS un preprocesador CSS

8.10PARÁMETROSCONNOMBRES(I)Sepuedenusarparámetrosconnombre:

.mixin(@color:black;@margin:10px;@padding:20px){...}.class1{.mixin(@margin:20px;@color:#33acfe);}.class2{.mixin(#efca44;@padding:40px);}

Page 82: LESS un preprocesador CSS

8.11PARÁMETROSCONNOMBRES(II)Lesslocompilaa:

.class1{color:#33acfe;margin:20px;padding:20px;}.class2{color:#efca44;margin:10px;padding:40px;}

Page 83: LESS un preprocesador CSS

8.12@ARGUMENTS(I)Podemoscogertodoslosparámetrosdeentradajuntos:.box-shadow(@x:0;@y:0;@blur:1px;@color:#000){

-webkit-box-shadow:@arguments;-moz-box-shadow:@arguments;box-shadow:@arguments;}.big-block{.box-shadow(2px;5px);}

Page 84: LESS un preprocesador CSS

8.13@ARGUMENTS(II)Lesslocompilaa:

.big-block{-webkit-box-shadow:2px5px1px#000;-moz-box-shadow:2px5px1px#000;box-shadow:2px5px1px#000;}

Page 85: LESS un preprocesador CSS

8.14...PodemospermitirqueelMixinadmitavariosparámetros://matches0-Narguments.mixin(...){

//matchesexactly0arguments.mixin(){

//matches0-1arguments.mixin(@a:1){

//matches0-Narguments.mixin(@a:1;...){

//matches1-Narguments.mixin(@a;...){

Page 86: LESS un preprocesador CSS

8.15@RESTCogetodoslosparámetrosde...:

.mixin(@a;@rest...){

/*@restrecogetodoslosparámetrosdespuésde@a*/

/*@argumentsrecogetodoslosparámetros(incluido@a)*/}

Page 87: LESS un preprocesador CSS

8.16PATTERNMATCHING(I)Siqueremosqueseejecuteunmixindependiendodelvalordeunavariable:.mixin(dark;@color){color:darken(@color,10%);}.mixin(light;@color){color:lighten(@color,10%);}.mixin(@_;@color){/*all*/display:block;}

@switch:light;

.class{.mixin(@switch;#888);}

Page 88: LESS un preprocesador CSS

8.17PATTERNMATCHING(II)Lesslocompilaa:

.class{color:#a2a2a2;display:block;}

Page 89: LESS un preprocesador CSS

8.18MIXINSCOMOFUNCIONES(I)Todaslasvariablesdefinidasenunmixinsonvisiblesypuedenserutilizadosenelámbitodedondeesllamado:.mixin(){@width:100%;@height:200px;}

.caller{.mixin();width:@width;height:@height;}

Page 90: LESS un preprocesador CSS

8.19MIXINSCOMOFUNCIONES(II)Lesslocompilaa:

.caller{width:100%;height:200px;}

Page 91: LESS un preprocesador CSS

8.20MIXINSCOMOFUNCIONES(III)Otroejemplo:

.average(@x,@y){@average:((@x+@y)/2);}

div{

//"call"themixin.average(16px,50px);

//useits"return"valuepadding:@average;}

Page 92: LESS un preprocesador CSS

8.21MIXINSCOMOFUNCIONES(IV)Lesslocompilaa:

div{padding:33px;}

Page 93: LESS un preprocesador CSS

9MIXINSCONDICIONALES

Page 94: LESS un preprocesador CSS

9.1SINTAXIS(I)MuyparecidaalasMediaQueries:

.mixin(@a)when(lightness(@a)>=50%){background-color:black;}.mixin(@a)when(lightness(@a)<50%){background-color:white;}.mixin(@a){color:@a;}.class1{.mixin(#ddd)}.class2{.mixin(#555)}

Page 95: LESS un preprocesador CSS

9.2SINTAXIS(II)Lesslocompilaa:

.class1{background-color:black;color:#ddd;}.class2{background-color:white;color:#555;}

Page 96: LESS un preprocesador CSS

9.3OPERADORESSepuedenusarlosoperadores>,>=,=,=<,<@media:mobile;

.mixin(@a)when(@media=mobile){...}

.mixin(@a)when(@media=desktop){...}

.max(@a;@b)when(@a>@b){width:@a}

.max(@a;@b)when(@a<@b){width:@b}

Page 97: LESS un preprocesador CSS

9.4ANDComoenlasMediaQueries,usandoANDtodaslassentenciassetienenquecumplir:.mixin(@a)when(isnumber(@a))and(@a>0){...}

Page 98: LESS un preprocesador CSS

9.5COMA(,)ComoenlasMediaQueries,separarsentenciasconcomas(,)equivaleaunOR,porloqueseentraráenelMixinencuantosecumplaunadelassentencias:.mixin(@a)when(@a>10),(@a<-10){...}

Page 99: LESS un preprocesador CSS

9.6NOTComoenlasMediaQueries,usandoNOTseniegaunasentencia:.mixin(@b)whennot(@b>0){...}

Page 100: LESS un preprocesador CSS

9.7COMPROBARTIPOSTenemoslassiguientesfuncionesparacomprobartipos:isnumberisstringiscoloriskeywordisurl

Page 101: LESS un preprocesador CSS

9.8COMPROBARUNIDADESTenemoslassiguientesfuncionesparacomprobarunidades:ispixelisemispercentageisunit

Page 102: LESS un preprocesador CSS

9.9LOOPS(I)LosMixinssepuedenllamarasímismos.Conestarecursividadsepuedencrearloops:.loop(@counter)when(@counter>0){

//nextiteration.loop((@counter-1));

//codeforeachiterationwidth:(10px*@counter);}

div{.loop(5);//launchtheloop}

Page 103: LESS un preprocesador CSS

9.10LOOPS(II)Lesslocompilaa:

div{width:10px;width:20px;width:30px;width:40px;width:50px;}

Page 104: LESS un preprocesador CSS

9.11LOOPS(III)PodríamoshacerungriddeCSS:

.generate-columns(4);

.generate-columns(@n,@i:1)when(@i=<@n){

.column-@{i}{width:(@i*100%/@n);}.generate-columns(@n,(@i+1));}

Page 105: LESS un preprocesador CSS

9.12LOOPS(IV)Lesslocompilaa:

.column-1{width:25%;}.column-2{width:50%;}.column-3{width:75%;}.column-4{width:100%;}

Page 106: LESS un preprocesador CSS

10MERGE

Page 107: LESS un preprocesador CSS

10.1¿QUÉES?Permitecombinarpropiedadesconcoma(,)oconespacio(),enunasolapropiedad.

Page 108: LESS un preprocesador CSS

10.2COMA(I)Ejemploconcoma(,):

.mixin(){box-shadow+:inset0010px#555;}.myclass{.mixin();box-shadow+:0020pxblack;}

Page 109: LESS un preprocesador CSS

10.3COMA(II)Lesslocompilaa:

.myclass{box-shadow:inset0010px#555,0020pxblack;}

Page 110: LESS un preprocesador CSS

10.4ESPACIO(I)Ejemploconespacio():

.mixin(){transform+_:scale(2);}.myclass{.mixin();transform+_:rotate(15deg);}

Page 111: LESS un preprocesador CSS

10.5ESPACIO(II)Lesslocompilaa:

.myclass{transform:scale(2)rotate(15deg);}

Page 112: LESS un preprocesador CSS

10.6EXPLICITOParaprevenircualquierjoininvoluntario,mergerequierequepongas+o+_deformaexplícitaenladeclaracióndecadaunodelosjois.

Page 113: LESS un preprocesador CSS

11SELECTORPADRE

Page 114: LESS un preprocesador CSS

11.1ELOPERADOR&(I)Eloperador&representaelselectorpadre,ysueleserusadoparamodificarclasesousarpseudoclases:a{color:blue;&:hover{color:green;}}

Page 115: LESS un preprocesador CSS

11.2ELOPERADOR&(II)Lesslocompilaa:

a{color:blue;}

a:hover{color:green;}

Page 116: LESS un preprocesador CSS

11.3CLASESREPETITIVAS(I)Otrouso,apartedelaspseudoclases,eseldeproducirnombresdeclasesrepetitivos:.button{&-ok{background-image:url("ok.png");}&-cancel{background-image:url("cancel.png");}&-custom{background-image:url("custom.png");}}

Page 117: LESS un preprocesador CSS

11.4CLASESREPETITIVAS(II)Lesslocompilaa:

.button-ok{background-image:url("ok.png");}.button-cancel{background-image:url("cancel.png");}.button-custom{background-image:url("custom.png");}

Page 118: LESS un preprocesador CSS

11.5MULTIPLES&(I)Sepuederepetirelpadre:

.link{&+&{color:red;}&&{color:green;}&&{color:blue;}&,&ish{color:cyan;}}

Page 119: LESS un preprocesador CSS

11.6MULTIPLES&(II)Lesslocompilaa:

.link+.link{color:red;}.link.link{color:green;}.link.link{color:blue;}.link,.linkish{color:cyan;}

Page 120: LESS un preprocesador CSS

11.7MULTIPLES&(III)Otroejemplo:

.grand{.parent{&>&{color:red;}&&{color:green;}&&{color:blue;}&,&ish{color:cyan;}}}

Page 121: LESS un preprocesador CSS

11.8MULTIPLES&(IV)Lesslocompilaa:

.grand.parent>.grand.parent{color:red;}.grand.parent.grand.parent{color:green;}.grand.parent.grand.parent{color:blue;}.grand.parent,.grand.parentish{color:cyan;}

Page 122: LESS un preprocesador CSS

11.9CAMBIARELORDEN(I)Enalgunoscasopuedeserutilcambiarelordendelhijoconrespectoalpadre:.header{.menu{border-radius:5px;.no-borderradius&{background-image:url('img.png');}}}

Page 123: LESS un preprocesador CSS

11.10CAMBIARELORDEN(II)Lesslocompilaa:

.header.menu{border-radius:5px;}.no-borderradius.header.menu{background-image:url('img.png');}

Page 124: LESS un preprocesador CSS

11.11EXPLOSIÓNCOMBINATORIA(I)Eloperador&puedeserusadoparagenerartodaslasposiblespermutacionesdelosselectorespadre:a,ul,li{border-top:2pxdotted#366;&+&{border-top:0;}}

Page 125: LESS un preprocesador CSS

11.12EXPLOSIÓNCOMBINATORIA(II)Lesslocompilaa:

a,ul,li{border-top:2pxdotted#366;}

a+a,a+ul,a+li,ul+a,ul+ul,ul+li,li+a,li+ul,li+li{border-top:0;}

Page 126: LESS un preprocesador CSS

12FUNCIONES

Page 127: LESS un preprocesador CSS

12.1RESUMEN

MiscFunctionsStringFunctionsListFunctionsMathFunctionsTypeFunctionsColorFunctions

http://lesscss.org/functions/

Page 128: LESS un preprocesador CSS

12.2MISCFUNCTIONS

colorconvertdata-uridefaultunitget-unitsvg-gradient

http://lesscss.org/functions/#misc-functions

Page 129: LESS un preprocesador CSS

12.3STRINGFUNCTIONS:

escapee%formatreplace

http://lesscss.org/functions/#string-functions

Page 130: LESS un preprocesador CSS

12.4LISTFUNCTIONS

lengthextract

http://lesscss.org/functions/#list-functions

Page 131: LESS un preprocesador CSS

12.5MATHFUNCTIONS(I)

ceilfloorpercentageroundsqrtabspowmodminmax

http://lesscss.org/functions/#math-functions

Page 132: LESS un preprocesador CSS

12.6MATHFUNCTIONS(II)

sinasincosacostanatanpi

http://lesscss.org/functions/#math-functions

Page 133: LESS un preprocesador CSS

12.7TYPEFUNCTIONS

isnumberisstringiscoloriskeywordisurlispixelisemispercentageisunit

http://lesscss.org/functions/#type-functions

Page 134: LESS un preprocesador CSS

12.8COLORDEFINITIONFUNCTIONS

rgbrgbaargbhslhslahsvhsva

http://lesscss.org/functions/#color-definitions

Page 135: LESS un preprocesador CSS

12.9COLORCHANNELFUNCTIONS

huesaturationlightnesshsvhuehsvsaturationhsvvalueredgreenbluealphalumaluminance

http://lesscss.org/functions/#color-channel

Page 136: LESS un preprocesador CSS

12.10COLOROPERATIONFUNCTIONS

saturatedesaturatelightendarkenfadeinfadeoutfadespinmixgreyscalecontrast

http://lesscss.org/functions/#color-operations

Page 137: LESS un preprocesador CSS

12.11COLORBLENDINGFUNCTIONS

multiplyscreenoverlaysoftlighthardlightdifferenceexclusionaveragenegation

http://lesscss.org/functions/#color-blending

Page 138: LESS un preprocesador CSS

13ACERCADE

Page 139: LESS un preprocesador CSS

13.1LICENCIAEstastransparenciasestánhechascon:MarkdownSlides:

EstastransparenciasestánbajounalicenciaCreativeCommonsReconocimiento-CompartirIgual3.0:

https://github.com/asanzdiego/markdownslides

http://creativecommons.org/licenses/by-sa/3.0/es

Page 140: LESS un preprocesador CSS

13.2FUENTESTransparencias:

Código:

https://github.com/asanzdiego/curso-interfaces-web-2014/tree/master/04-less/slides

https://github.com/asanzdiego/curso-interfaces-web-2014/tree/master/01-less/src

Page 141: LESS un preprocesador CSS

13.3BIBLIOGRAFÍADocumentaciónoficialdeLesshttp://lesscss.org