לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 27-11-2005, 22:27
צלמית המשתמש של fat fish
  fat fish fat fish אינו מחובר  
 
חבר מתאריך: 20.06.03
הודעות: 5,616
יולו וקבצי htc

שלום לכולם, והפעם בעקבות בקשה של יולו (שפנה אלי בפרטי - ואני מקווה שיסלח לי שאני
ככה חושף את מכתבו):
ציטוט:
במקור נכתב על ידי יולו
מה נשמע??
עברתי על האתר החדש שלך.
נתקלתי בקוד המקור בשורה הבאה:
קוד:
behavior: url("http://www.fat-fish.co.il/csshover.htc")


לא שמעתי על הדבר הזה, אתה יכול להסביר לי בקצרה על מה מדובר?
תודה מראש, יולו.


אז הסבר על קובץ זה (ויש אנשים יצירתיים שבודקים את הקוד שלי):
htc הם ראשי תיבות של HTML Components וניתן ללמוד עליהם עוד באתר MSDN
אלו קבצים הניקראים ע"י IE בלבד, כאשר דפדפנים אחרים לא מכירים בהם ולכן מתעלמים
מהם.
למה זה טוב?
IE לא מממש את האפשרות ב-CSS להשתמש ב-hover על כל סוג של אובייקט, ולכן
זה מאלץ אותנו לכתוב קוד Javascript כאשר אנו רוצים לעצב מקרים של מעבר עכבר
מעל אובייקט שאינו קישור.
קובץ htc הספציפי שאצלי באתר (אתם מוזמנים להורידו) מממש באמצעות Jscript
(ה-JS של מיקרוסופט) לדפדפני IE את האפשרות להצמיד לכל אובייקט/מחלקה את
פעולת ה-CSS שאנו כל רוצים hover.

אם תשימו לב, בקוד ה-CSS שלי יש פקודות hover על מחלקות שאינן קישורים, והן
עובדות בזכות זה.

ניתן לקרא על htc רבות ברשת, אך מאחר וזה מותאם ל-IE בלבד, זה לא כל כך נפוץ,
חוץ מבמקרה ספציפי זה - כשרוצים להתאים את IE לשאר הדפדפנים.

מצורף לנוחיותכם קישור לקובץ זה באתר שלי:
http://www.fat-fish.co.il/csshover.htc

הנה הקוד לסקירה של מי שמעוניין:
(וכמובן, למי שעוד לא הספיק, אתם מוזמנים להצטרף לתחרות ה-CSS אצלי באתר...)
קוד PHP:
 <attach event="ondocumentready" handler="parseStylesheets" />
<
script language="JScript">

var 
currentSheetdoc window.documentactivators = {
    
onhover:{on:'onmouseover'off:'onmouseout'},
    
onactive:{on:'onmousedown'off:'onmouseup'}
}

function 
parseStylesheets() {
    var 
sheets doc.styleSheetssheets.length;
    for(var 
i=0i<li++) 
        
parseStylesheet(sheets[i]);
}
    function 
parseStylesheet(sheet) {
        if(
sheet.imports) {
            try {
                var 
imports sheet.importsimports.length;
                for(var 
i=0i<li++) parseStylesheet(sheet.imports[i]);
            } catch(
securityException){}
        }

        try {
            var 
rules = (currentSheet sheet).rulesrules.length;
            for(var 
j=0j<lj++) parseCSSRule(rules[j]);
        } catch(
securityException){}
    }

    function 
parseCSSRule(rule) {
        var 
select rule.selectorTextstyle 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(newSelectstyle);
        for(var 
i=0i<elements.lengthi++)
            new 
HoverElement(elements[i], classNameactivators[pseudo]);
    }

function 
HoverElement(nodeclassNameevents) {
    if(!
node.hoversnode.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 
partsnodes = [doc];
    
parts rule.split(' ');
    for(var 
i=0i<parts.lengthi++) {
        
nodes getSelectedNodes(parts[i], nodes);
    }    return 
nodes;
}
    function 
getSelectedNodes(selectelements) {
        var 
resultnodenodes = [];
        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=0i<elements.lengthi++) {
            
result tagNameelements[i].all.tags(tagName):elements[i].all
            for(var 
j=0j<result.lengthj++) {
                
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> 



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
_____________________________________
[ זיו ]
[ fat fish ]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:56

הדף נוצר ב 0.15 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר