Muestra las diferencias entre dos versiones de la página.
unidades:04_masdirectivas:10_ngclass [2014/07/31 22:39] admin creado |
unidades:04_masdirectivas:10_ngclass [2014/08/30 09:52] (actual) admin |
||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== 4.10 ng-class ====== | ====== 4.10 ng-class ====== | ||
+ | La directiva ''ng-class'' permite de una forma sencilla añadir y quitar clases CSS a un tag. | ||
+ | La forma de hacerlo es mediante un objeto JavaScript que esté en el ''$scope''. En dicho objeto , el nombre de cada propiedad será el nombre de una clase CSS. Si el valor de dicha propiedad es ''true'' se añadirá la clase CSS al tag y si está a ''false'' se quitará su clase CSS del tag. | ||
+ | |||
+ | Veamos un ejemplo: | ||
+ | |||
+ | Los estilos css serán los siguientes: | ||
+ | <sxh css> | ||
+ | .rojo { | ||
+ | color:red; | ||
+ | } | ||
+ | .subrayado { | ||
+ | text-decoration: line-through; | ||
+ | } | ||
+ | .negrita { | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | </sxh> | ||
+ | |||
+ | <sxh js;highlight: [4]> | ||
+ | var app = angular.module("app", []); | ||
+ | |||
+ | app.controller("PruebaController", function($scope) { | ||
+ | $scope.clasesCss={ | ||
+ | rojo:true, | ||
+ | subrayado:true, | ||
+ | negrita:false | ||
+ | } | ||
+ | }); | ||
+ | </sxh> | ||
+ | |||
+ | * Línea 4: Se declara la propiedad "clasesCss" que contiene 3 propiedades, una por cada uno de las 3 clases CSS. Sólo están a ''true'' las propiedades ''rojo'' y ''subrayado'' por lo que sólo se aplicarán estas 2 clases CSS al elemento. | ||
+ | |||
+ | <sxh html> | ||
+ | <div ng-class="clasesCss">Este es un texto con clases dinámicas</div> | ||
+ | </sxh> | ||
+ | |||
+ | Ahora al aplicar la directiva ''ng-class'' al tag ''<div>'' se aplicarán las clases CSS "rojo" y "subrayado". | ||
+ | |||
+ | Pero ahora todo ésto tiene una ventaja. Al ser valores del $scope los podemos modificar desde AngularJS y automáticamente se modificarán las clases CSS. | ||
+ | |||
+ | Ahora podemos añadir los siguientes tags <input> para modificar desde la propia página las clases CSS que se aplican: | ||
+ | |||
+ | <sxh html> | ||
+ | <input ng-model="clasesCss.rojo" type="checkbox">Aplicar estilo Rojo | ||
+ | <br> | ||
+ | <input ng-model="clasesCss.subrayado" type="checkbox">Aplicar estilo Subrayado | ||
+ | <br> | ||
+ | <input ng-model="clasesCss.negrita" type="checkbox">Aplicar estilo Negrita | ||
+ | <br> | ||
+ | </sxh> | ||
+ | |||
+ | Gracias a estos "checkbox" podemos fácilmente modificar qué estilos se aplican a un tag HTML. | ||
+ | |||
+ | <note> | ||
+ | AngularJS soporta también que en vez de ser la propiedad del ''$scope'' un objeto con las clases sea también un array con el nombre de las clases CSS o un único String con los nombres de las clases separadas por espacios. | ||
+ | |||
+ | Sin embargo, estas 2 formas las veo menos útiles que la que he explicado, pero por supuesto pueden ser mas cómodas de usar según la ocasión. | ||
+ | </note> | ||
===== Ejemplo ===== | ===== Ejemplo ===== | ||
+ | El código completo del ejemplo es: | ||
- | {{url>http://embed.plnkr.co/pe2RVo}} | + | <sxh css;title:style.css> |
+ | .rojo { | ||
+ | color: red; | ||
+ | } | ||
+ | .subrayado { | ||
+ | text-decoration: line-through; | ||
+ | } | ||
+ | .negrita { | ||
+ | font-weight: bold; | ||
+ | } | ||
+ | </sxh> | ||
+ | <sxh html;title:index.html;highlight: [17]> | ||
+ | <!DOCTYPE html> | ||
+ | <html ng-app="app"> | ||
+ | <head> | ||
+ | <link rel="stylesheet" href="style.css"> | ||
+ | <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.js"></script> | ||
+ | <script src="script.js"></script> | ||
+ | </head> | ||
+ | <body ng-controller="PruebaController"> | ||
+ | <input ng-model="clasesCss.rojo" type="checkbox">Aplicar estilo Rojo | ||
+ | <br> | ||
+ | <input ng-model="clasesCss.subrayado" type="checkbox">Aplicar estilo Subrayado | ||
+ | <br> | ||
+ | <input ng-model="clasesCss.negrita" type="checkbox">Aplicar estilo Negrita | ||
+ | <br> | ||
+ | <br> | ||
+ | <div ng-class="clasesCss">Este es un texto con clases dinámicas</div> | ||
+ | |||
+ | </body> | ||
+ | </html> | ||
+ | </sxh> | ||
+ | |||
+ | * Linea 17: Con la directiva ''ng-class'' se indica el nombre de la propiedad que contiene las clases a mostrar. | ||
+ | |||
+ | <sxh js;title:script.js;highlight: [4,5,6,7,8]> | ||
+ | var app = angular.module("app", []); | ||
+ | |||
+ | app.controller("PruebaController", function($scope) { | ||
+ | $scope.clasesCss={ | ||
+ | rojo:true, | ||
+ | subrayado:true, | ||
+ | negrita:false | ||
+ | } | ||
+ | }); | ||
+ | </sxh> | ||
+ | |||
+ | * Linea 4: El objeto con las clases que pueden o no añadirse al tag HTML | ||
+ | |||
+ | {{url>http://embed.plnkr.co/pe2RVo}} | ||
===== Referencias ===== | ===== Referencias ===== | ||
* [[https://docs.angularjs.org/api/ng/directive/ngClass|ng-class]] | * [[https://docs.angularjs.org/api/ng/directive/ngClass|ng-class]] |