[css:htc] IE only behaviors

Pagina: 1
Acties:
  • 147 views sinds 30-01-2008
  • Reageer

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Topicstarter
ze bestaan al een tijdje, maar toevallig ben ik nu pas een keer echt naar gaan kijken; behaviors in IE B) Ik heb nog niet echt een idee van wat er allemaal mee mogelijk is, maar wat er iig onder anderen mee kan is dat je een soort "componentje" bouwt in een htc bestand, en dat kan je in de stylesheet opgeven als "behavior" en linken aan een class of element vanuit je stylesheet.

bijvoorbeeld zoiets:
HTML:
1
2
3
4
5
6
7
8
...
<style type="text/css">
.htcButton   {behavior:url(htcButton.htc);}
</style>
</head>

<body>
<span class="htcButton"> knoppie </span>


IE 5+ snapt dit, en gaat vervolgens het htc'tje bekijken. Dit htc'tje is dan een component wat draait met de scope op dat element. Binnen die htc kan je dus script blokken maken, en binnen functions daarin verwijst "style" dus bijvoorbeeld meteen naar dat htmlElement.style. Zo kan je bijvoorbeeld een button htc'tje maken op deze manier:
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<PUBLIC:COMPONENT>
    <PUBLIC:ATTACH EVENT="oncontentready" ONEVENT="butMouseout()" />
    <PUBLIC:ATTACH EVENT="onmouseover" ONEVENT="butMouseover()" />
    <PUBLIC:ATTACH EVENT="onmouseout" ONEVENT="butMouseout()" />
    <PUBLIC:ATTACH EVENT="onmouseup" ONEVENT="butMouseup()" />

    <SCRIPT LANGUAGE="JScript">

    function butMouseover() {
        style.backgroundColor = buttonOverColor;
    }

    function butMouseout() {
        style.backgroundColor = buttonOffColor;
    }

    function butMouseup() {
        window.document.location = buttonLink;
    }
    
    </SCRIPT>
</PUBLIC:COMPONENT>


de buttonOver- en OffColor en link kan je gewoon in je element zetten:
HTML:
1
2
3
4
5
<span class="htcButton" 
  buttonOverColor="#e0e0e0"
  buttonOffColor="#c0c0c0"
  buttonLink="bestand.ext"
>hoi</span>


En het leuke is dat je natuurlijk niet 1, maar ook 3 of 100 van die spans kan maken die die class gebruiken, en dit is ook maar een simpel voorbeeld van wat er met htc (en hta, nog nix mee gedaan eigenlijk) mogelijk is :D Voordeel is dat je geen script includes nodig hebt, en een algemene modulegewijze aanpak kan hanteren, nadeel is natuurlijk dat het alleen in IE werkt.
Ik ben absoluut geen voorstander van sites onbruikbaar maken voor alles behalve IE, en wat dat betreft is een button een totaal verkeerd voorbeeld, maar het is juist omdat het via je stylesheet werkt en dus genegeerd wordt door browsers die het niet snappen natuurlijk uitermate geschikt om je project wat up te spicen.

Voorbeelden van behaviors die je kan gebruiken zijn bijvoorbeeld "download", waarmee je dynamisch op de achtergrond in 2 regels code files kan inlezen en afhandelen, of "userdata" waarmee je een soort supercookie kan bouwen wat over browsersessies heen op een makkelijke manier data voor je kan onthouden, en dit is uiteraard allemaal eenvoudig in te bouwen in htc/hta. :)

meer info over behaviors o.a. hiero en htc's staan in het menu een stukje naar onder toe.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


  • Willem
  • Registratie: Februari 2001
  • Laatst online: 21:29
Dit lijkt me best leuk.. doet me overigens herinneren aan een thread (kan 'em helaas niet meer vinden) waarin werd gediscusieerd over CSS opmaak en technische functie van elementen. Was er in dat draadje enigszins van overtuigd dat het handig zou zijn als sommige elementen bij CSS zouden worden geimplementeerd alszijnde niet-opmaak.. denk dat dit er toch wel een beetje bij in de buurt komt.

Interesting :)

Motor (of auto) onderhoud bijhouden


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Een beetje slecht gekozen voorbeeld imho omdat dit mouse-over effect natuurlijk ook met standaard CSS2 (mbv pseudoclasses) te bereiken is, ware het niet dat IE pseudo-classes alleen nog maar voor links heeft geimplementeerd :o

Dit werkt namelijk prima in Mozilla:
code:
1
2
3
4
5
<style type="text/css">
.htcButton:hover {
  background-color: #e0e0e0;
}
</style>


Misschien moet Microsoft eens wat meer tijd gaan steken in het implementeren van standaarden dan zelf elke keer weer dingen te gaan verzinnen ;)

Intentionally left blank


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

crisp schreef op 05 november 2002 @ 12:01:
Een beetje slecht gekozen voorbeeld imho omdat dit mouse-over effect natuurlijk ook met standaard CSS2 (mbv pseudoclasses) te bereiken is, ware het niet dat IE pseudo-classes alleen nog maar voor links heeft geimplementeerd :o

Dit werkt namelijk prima in Mozilla:
code:
1
2
3
4
5
<style type="text/css">
.htcButton:hover {
  background-color: #e0e0e0;
}
</style>


Misschien moet Microsoft eens wat meer tijd gaan steken in het implementeren van standaarden dan zelf elke keer weer dingen te gaan verzinnen ;)


En dan te bedenken dat hover een Microsoft-verzinsel is dan later door W3C overgenomen is.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Bosmonster schreef op 05 november 2002 @ 12:07:

[...]


En dan te bedenken dat hover een Microsoft-verzinsel is dan later door W3C overgenomen is.
True :)
Ik zie zelf veel mogelijkheden voor behaviors, maar het feit dat het IE-only is houd me toch tegen. Standaard eigenschappen die verder gaan dan alleen het aanpassen van style-elementen koppelen aan een class is natuurlijk helemaal geen gek idee...

Intentionally left blank


Verwijderd

Nou, ik ben toevallig helemaal gek op htc behaviors. Lekker meteen het script-gedrag werkend voor al je pagina's en het maken van zo'n script is zoveel eenvoudiger dan een standaard script, omdat heel veel dingen al voor je geregeld zijn.
Nadeel is alleen dat het IE only is, maar daar kun je voordeel uit putten. Dat zie je bijvoorbeeld bij webfx met de png-behavior script.

Mozilla heeft trouwens ook zoiets dergelijks -moz bindings of zoiets dergelijks. Kun je ook aanroepen via de stylesheet. Het heet de extensible binding language (xbl). Het is alleen behoorlijk wat ingewikkelder, omdat de scope van je variabelen niet automatisch is afgeschermd voor elk element. Je moet gewoon heel wat meer k**ten om het werkend te krijgen, weet ik uit ervaring.

Ik ben wat dat betreft van plan liever alles in htc en xbl scripts te proppen. Nooit meer browsers afvangen in je script, heerlijk gewoon.

Opera moet wat dat betreft (wanneer ze eindelijk de DOM goed ondersteunen) ook maar eens met zoiets komen (liefst dan met hun eigen binding-manier in de stylesheet, anders zie ik weer problemen opdoemen).

XBL is al geloof ik een standaard goedgekeurd door de W3C, maar ik geloof dat dat ook gaat gebeuren voor HTC componenten, maar dat weet ik allemaal niet zeker.

Verwijderd

http://home.hccnet.nl/m.wargers/test/
Hier staan allerlei dingetjes, gemaakt met htc- en (gedeeltelijk) met xbl bindings. Je moet ze maar eens bekijken in Moz en IE.

Webfx heeft een erg goed artikel gemaakt over -moz-bindings, waar ik veel aan heb gehad:
http://webfx.eae.net/dhtml/xblmarquee/xblmarquee.html

  • Clay
  • Registratie: Oktober 1999
  • Laatst online: 25-02 11:17

Clay

cookie erbij?

Topicstarter
afgezien van het feit dat het ronduit triest is dat IE6 png niet fatsoenlijk ondersteunt is het natuurlijk wel erg vet dat je de transparantie "support" er met behaviors in kan bouwen :D
dat het zo moet is natuurlijk wel suf :{ en als IE7 oid het wel gaat ondersteunen zal je backward compatible moeten blijven, waarschijnlijk doormiddel van dit truukje. Zo blijf je met de "rottende lijken van verouderde applicaties" zitten, als men daar nou eens van leert en het meteen goed doet :) tsjonge jonge.

Instagram | Flickr | "Let my music become battle cries" - Frédéric Chopin


Verwijderd

Het is inderdaad diep treurig dat Microsoft dat nog steeds niet erin gedaan heeft, en wat mij betreft hoeven ze zonder png-ondersteuning geen nieuwe browser uit te brengen.
Ik heb wat dat betreft nog wel een lijstje met wensen trouwens...
Overigens, werkt die png-hack ook niet perfect, want ik kreeg bij bepaalde situaties net twee pixels tussenruimte tussen twee png-paatjes, en dan ziet het er al niet meer uit. :(
Pagina: 1