[HTML] onMouseover vreet cpu ?

Pagina: 1
Acties:

  • DeFeCt
  • Registratie: Juli 2000
  • Laatst online: 16-08 09:54

DeFeCt

je wéét toch

Topicstarter
Ik heb, dacht ik, een heel simpel onMouseovertje op een td staan die een class veranderd, maar als ik in mijn taskmanager kijk dan schiet de CPU usage naar 60% tot 70%.

Bij mijn collega die mijn prototype in .NET heeft gehangen schiet de boel zelfs naar 80% tot 90% en wordt de boel retetraag..

Iemand enig idee wat hier aan de hand kan zijn?

de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<!-- resultitem -->
<tr>
<td id="item" class="item" onMouseover="this.className='itemSelected'" onMouseout="this.className='item'">
<h1>Header</h1>
<p class="resultDescription">blabla</p>  
</td>
</tr>
<!-- horizontal row -->
<tr>
<td class="hrImageWhite"></td>
</tr>
<!-- resultitem -->     
<tr>
<td id="item" class="itemAlternate" onmouseover="this.className='itemSelected'" onmouseout="this.className='itemAlternate'">
<h1>Header</h1>
<p class="resultDescription">blieblie</p>  
</td>
</tr>      
<!-- horizontal row -->

Flickr


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

Ik denk dat het veranderen van je styleclasses gewoon slecht geimplementeerd is in de brwosers. Heb je het alleen in IE of ook in Mozilla?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

dynamisch een class wijzigen vreet idd performance, je kan beter gewoon direct de style-attributen wijzigen.

Intentionally left blank


  • DeFeCt
  • Registratie: Juli 2000
  • Laatst online: 16-08 09:54

DeFeCt

je wéét toch

Topicstarter
crisp schreef op 03 October 2003 @ 17:19:
dynamisch een class wijzigen vreet idd performance, je kan beter gewoon direct de style-attributen wijzigen.
call me stupid, maar hoe gaat dat dan? Voor mijn gevoel doe ik dat namelijk nu ook?

Flickr


  • André
  • Registratie: Maart 2002
  • Laatst online: 19-08 12:30

André

Analytics dude

JavaScript:
1
element.style.width = "100px";

Zo gaat dat, en dat kun je dan in een functie zetten die je aanroept vanuit je onmouse* events.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

DeFeCt schreef op 03 October 2003 @ 17:22:
[...]


call me stupid, maar hoe gaat dat dan? Voor mijn gevoel doe ik dat namelijk nu ook?
Stel dat het enige verschil tussen die 2 classes de achtergrondkleur is, dan is dit vele malen efficienter:

HTML:
1
2
<td onmouseover="this.style.backgroundColor='red'"
    onmouseout="this.style.backgroundColor='green'">bla</td>


dan hoeft de browser niet eerst een lookup te doen in de stylesheet :)

Intentionally left blank


  • DeFeCt
  • Registratie: Juli 2000
  • Laatst online: 16-08 09:54

DeFeCt

je wéét toch

Topicstarter
crisp schreef op 03 oktober 2003 @ 17:28:
[...]
dan hoeft de browser niet eerst een lookup te doen in de stylesheet :)
ok, tnx!

Zou het dan misschien nog helpen om de css inline te zetten?

...enniewee... weekend! bedankt heren.

Flickr


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:21

crisp

Devver

Pixelated

DeFeCt schreef op 03 October 2003 @ 17:33:
[...]
ok, tnx!

Zou het dan misschien nog helpen om de css inline te zetten?

...enniewee... weekend! bedankt heren.
Of je de initiele style inline doet of via een class maakt volgens mij weinig uit, dit zal hooguit een klein effect hebben op de rendertijd, maar waarschijnlijk niet echt meetbaar.

Ik snap wel dat je dit liever via classes zou willen doen (style op 1 plek, ook dynamische stylen), maar in dit geval is het offer (performance) te groot. Mogelijk dat toekomstige browserversies hier beter mee om kunnen gaan.

In Mozilla kan je trouwens gewoon dit doen, heb je geen script nodig:

Cascading Stylesheet:
1
2
3
4
5
6
td {
  background-color: red;
}
td:hover {
  background-color: green;
}

[ Voor 35% gewijzigd door crisp op 03-10-2003 18:16 ]

Intentionally left blank

Pagina: 1