Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: lnvisible en 17 Diciembre 2013, 18:31 pm



Título: ¿Cómo cambiar el CSS de una página?
Publicado por: lnvisible en 17 Diciembre 2013, 18:31 pm
Quiero añadir y quitar reglas de CSS de una página.

No quiero cambiar el estilo de un elemento concreto, tengo una tabla de dimensiones 100x1000 (eso hace 100000 elementos) y puedo ponerle clases como corresponde a todos ellos. Quiero poner reglas para que se muestren unos u otros, por ejemplo display:none, y luego poder quitarlas...

Todo lo que he encontrado es el
Código:
$('td').css('display', 'none')
de jQuery y eso lo que hace es cambiar el css de los elementos en el html, con el atributo style, no cambiar las reglas css.

¿cómo puedo hacer eso?

GRacias!!


Título: Re: ¿Cómo cambiar el CSS de una página?
Publicado por: raul338 en 17 Diciembre 2013, 18:57 pm
En realidad no se puede cambiar las definiciones de las clases en CSS... solo en inline (atributo style)

Lo que puedes hacer es definir varias clases acorde a lo que necesites y despues juntarlas en los elementos con addClass/RemoveClass


Título: Re: ¿Cómo cambiar el CSS de una página?
Publicado por: lnvisible en 17 Diciembre 2013, 19:38 pm
Son muchos elementos para cambiar el style de todos y cada uno.

Necesitaría una solución que sea más potente.


Título: Re: ¿Cómo cambiar el CSS de una página?
Publicado por: #!drvy en 17 Diciembre 2013, 21:11 pm
Asignales atributos únicos mediante js e identificarlos... luego haces con ellos lo que quieras.

Por ejemplo
Código
  1.   <tr class="trmanage">
  2.      <td class="tdmanage">1</td>
  3.      <td class="tdmanage">2</td>
  4.      <td class="tdmanage">3</td>
  5.      <td class="tdmanage">4</td>
  6.   </tr>
  7.   <tr class="trmanage">
  8.      <td class="tdmanage">5</td>
  9.      <td class="tdmanage">6</td>
  10.      <td class="tdmanage">7</td>
  11.      <td class="tdmanage">8</td>
  12.   </tr>

Código
  1. $(function(){
  2.   assignar('.tdmanage');
  3.   var css = {'background':'#000','color':'#fff'};
  4.   modificar('.tdmanage',0,4,css);
  5.   modificar('.tdmanage',6,7,css);
  6. });
  7.  
  8. var assignar = (function(selector){
  9.   var i = 0;
  10.   $(selector).each(function(){
  11.      $(this).attr('row',i);
  12.      ++i;
  13.   });
  14.   return true;
  15. });
  16.  
  17.  
  18. var modificar = (function(selector,from,to,css){
  19.   for(i=from;i<to;++i){
  20.      $(selector+'[row='+i+']').css(css);
  21.   }
  22.   return true;
  23. });

(http://i.elhacker.net/i?i=h5mWgyXdINo-AJN80aNkimVo) (http://i.elhacker.net/d?i=h5mWgyXdINo-AJN80aNkimVo)

Por supuesto que existirá algún plugin que se encargue mucho mejor de este asunto xD

Saludos


Título: Re: ¿Cómo cambiar el CSS de una página?
Publicado por: alan++ en 18 Diciembre 2013, 22:11 pm
Si queres formularlo a realizar una accion vas a tener que tipo de "accion" va a activar el movimiento en jquery, por el resto si aclaras un poquito mas el efecto que queres o como queres hacerlo seria util


Título: Re: ¿Cómo cambiar el CSS de una página?
Publicado por: lnvisible en 20 Diciembre 2013, 12:02 pm
Al final lo he hecho así, primero genero los css en python:

Código
  1. def generateCSSs():
  2.  for name in getNames():
  3.    with open('files/csss/%s.css'%name,'w') as cssfile:
  4.      cssfile.write('''.%s{
  5.  display:none;        
  6. }
  7. '''%name)

Luego los modifico con esta función que llamo según los eventos que quiero que modifiquen las características de las clases que tengo definidas en cada tr y td.

Código
  1. function cssMod(show, val){
  2.  if(show)
  3.    $('#'+val).remove();
  4.  else
  5.    $('head').append('<link rel="stylesheet" type="text/css" href="files/csss/'+val+'.css" id="'+val+'" />');
  6. }

Y ya está. GRacias a todos igual.