I don't know if this will help (does not depend on jQuery):
http://webdevel.blogspot.com/2006/06/create-css-class-javascript.html

It's not been compared with using jQuery to alter CSS, but I think it
may be faster. It modifies the CSS properties directly (replaces them
with what you enter). It adds a <style> to a page if one does not
exist (i.e. there are no stylesheets linked, or <style> elements in
the document).

On Jul 4, 10:39 am, Gordon <[EMAIL PROTECTED]> wrote:
> When working with jquery and javascript in general I have found that
> manipulating DOM attributes, especially those associated with the
> appearence of an element, can be rather slow.  In one script I am
> working on I have to animate a group of elements at once, but each
> element has to get a different top and left position. This means that
> each element must get its own top and left styles.
>
> Another thing the loop has to do is change the width and height of the
> elements being processed, but in this case all elements get the same
> dimensions.
>
> The loop currently manipulates 4 attributes per element (style.width,
> style.height, style.top, style.left) and can get rather slow when
> working with a large number of elements.
>
> this.each (function (thisElemNum)
> {
>         var elem = $(this);
>         // Calculate the new position and dimensions for the element
>         var newProps    = {
>                 left    : someLeftVal,
>                 top     : someTopVal,
>                 width   : 100,
>                 height  : 100
>         };
>         elem.animate (newProps, speed)
>
> });
>
> (The width and height can change from one invokation of the loop to
> the next, but for each invokation they remain constant for all
> iterations)
>
> One idea that occured to me is that instead of animating the width and
> height on a per-element basis, I could use CSS to define the width and
> height and then animate those attributes by changing the width and
> height degined in the stylesheet.  This would mean only animating 2
> attributes per element, plus a further 2 in the stylesheet as opposed
> to 4 attributes per element, which should hopefully lead to a
> considerable speedup.  I would give all the elements a class, define a
> width and height for that class in the stylesheet and then change that
> with animate() in order to change the width and height of all elements
> similtaniously.
>
> The only problem is I have no idea how to go about doing it.  Is doing
> what I want to be able to do even possible?  If so, how do I get at
> the stylesheet node and manipulate it like I would a DOM element?

Reply via email to