táblázatban hover-"szerű" sorkijelölés :)
Sziasztok!
CSS-ben a táblázatsort-t érintő hover-el megoldott kurzorkövető sorszínezést, hogyan tudom böngészőfüggetlenül megvalósítani? (ff,ie,op)
kell valami js-es bűvészkedés? ie-t, hogyan tudom rávenni legegyszerűbben?
nem csicsa lenne, hanem fontos használhatóságot segítő funkció. sokoszlopos széles táblázatom van sok hasonló adattal, ahol látni kell mi van mivel egysorban.
■ CSS-ben a táblázatsort-t érintő hover-el megoldott kurzorkövető sorszínezést, hogyan tudom böngészőfüggetlenül megvalósítani? (ff,ie,op)
kell valami js-es bűvészkedés? ie-t, hogyan tudom rávenni legegyszerűbben?
nem csicsa lenne, hanem fontos használhatóságot segítő funkció. sokoszlopos széles táblázatom van sok hasonló adattal, ahol látni kell mi van mivel egysorban.
Javascript-el
kis kötözködés :)
szerencsésebb a fenti használata, emigyen :)
igazából így kéne
ez az új szintaxis, csak IE alatt (még?) nem megy :S
üdv t
Csshover
<script language="JScript">
/**
* Pseudos - V1.30.050121 - hover & active
* ---------------------------------------------
* Peterned - http://www.xs4all.nl/~peterned/
* (c) 2005 - Peter Nederlof
*
* Credits - Arnoud Berendsen
* - Martin Reurings
* - Robert Hanson
*
* howto: body { behavior:url("csshover.htc"); }
* ---------------------------------------------
*/
var currentSheet, doc = window.document, activators = {
onhover:{on:'onmouseover', off:'onmouseout'},
onactive:{on:'onmousedown', off:'onmouseup'}
}
function parseStylesheets()
{
var sheets = doc.styleSheets, l = sheets.length;
for(var i=0; i<l; i++)
parseStylesheet(sheets[i]);
}
function parseStylesheet(sheet)
{
if(sheet.imports) {
try {
var imports = sheet.imports, l = imports.length;
for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
} catch(securityException){}
}
try {
var rules = (currentSheet = sheet).rules, l = rules.length;
for(var j=0; j<l; j++) parseCSSRule(rules[j]);
} catch(securityException){}
}
function parseCSSRule(rule)
{
var select = rule.selectorText, style = rule.style.cssText;
if(!(/(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i).test(select) || !style) return;
var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
var affected = select.replace(/:hover.*$/, '');
var elements = getElementsBySelect(affected);
currentSheet.addRule(newSelect, style);
for(var i=0; i<elements.length; i++)
new HoverElement(elements[i], className, activators[pseudo]);
}
function HoverElement(node, className, events)
{
if(!node.hovers) node.hovers = {};
if(node.hovers[className]) return;
node.hovers[className] = true;
node.attachEvent(events.on,
function() { node.className += ' ' + className; });
node.attachEvent(events.off,
function() { node.className =
node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}
function getElementsBySelect(rule)
{
var parts, nodes = [doc];
parts = rule.split(' ');
for(var i=0; i<parts.length; i++) {
nodes = getSelectedNodes(parts[i], nodes);
} return nodes;
}
function getSelectedNodes(select, elements)
{
var result, node, nodes = [];
var classname = (/\.([a-z0-9_-]+)/i).exec(select);
var identify = (/\#([a-z0-9_-]+)/i).exec(select);
var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
for(var i=0; i<elements.length; i++) {
result = tagName? elements[i].all.tags(tagName):elements[i].all;
for(var j=0; j<result.length; j++) {
node = result[j];
if((identify && node.id != identify[1]) || (classname && !(new RegExp('\\b' +
classname[1] + '\\b').exec(node.className)))) continue;
nodes[nodes.length] = node;
}
} return nodes;
}
</script>
Kimásol->beilleszt->elment csshover.htc néven
Használata: css fájlban
Ha gond, hogy kiakad tőle a validator, akkor If IE-z!
Így az IE is minden elemre tudni fogja a hovert.
Arra figyelj, az IE a csshover.htc fájl elérését nem a css fájltól, hanem a html fájltól nézi!
Csatlakozom
CSS->be:
csshover, yoo
Egyébként van már belőle 1.42-es verzió itt http://www.xs4all.nl/~peterned/csshover.html
A másik, amire figyelni kell, hogy az IE nagyon allergiás az XSS-re, ezért ha valami.hu/csshover.htc-ként hívod meg, akor nem lehetsz a www.valami.hu alatt, mert hmm... nem tölti be, legalábbis nekem meggyűlt vele a bajom...
Illetve, hogy a WinXP SP2 óta a htc-fájlok csak megfelelő headerrel kiadva fogadja el az IE, ezt meg néhány apache nem tartalmazza. Ha nem a Tied a szerver, akkor vagy .htaccess a megdolás (ha engedélyezett), vagy egy lehetséges és egyszerű 'workaround': (a http://www.hoeben.net/node/83 oldalon van még más is, meg nem csak PHPs is, de az alján az enyém, amit ide bemásolok ;) )
És végül, de nem utolsó sorban (sörben) az alternatív megoldás:
http://dean.edwards.name/IE7/ Ez a (szerintem nagyon is fantasztikus javascipt-kollekció az IE7 alatti IE-ket javascripttel veszi rá a megfelelő CSS-kezelésre (meg PNG, és egybeket is tud, ráadásul külön fájlan vannak a külön részhez tartozó javascriptes 'patch'-ek, így nem kell az egészet fölöslegesen betölteni).
Tudok mutatni példákat is (mindkettő működik IE alatt gyönyörűen, és nem utdolsó sorban önreklámnak sem utolsó :) ):
- csshover.htc: SZTE ÁJTK HÖK weboldala
- IE7 : Euromenedzser weboldala
==> észrevételeket szívesen fogadok a weblapokkal kapcsolatban...
document.domain-t
kell átállítani, nem túl sok változtatást tesz lehetővé, de www. előtag még belefér, bővebben
http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/domain.asp
ill. gugli, sokat nem játsztam vele, mert ha átraktam meg más problémáim lettek tőle, de azért szólok :)
üdv t
fx 1.5.x , opera9.x ie6 alatt néztem
üdv t
javascript-tel
Én így oldottam meg: