2012-03-07 16 views
6

मैंने कभी इस तरह एक होवर प्रभाव कभी नहीं देखा है, और मैं यह समझने की कोशिश कर रहा हूं कि यह कैसे प्राप्त हुआ है। आप in this example, देखेंगे कि जब कोई उपयोगकर्ता किसी लिंक पर हो जाता है, तो लिंक बदलता है रंग 5 रंगों में से कोई भी है जो स्टाइल शीट (नीचे देखें) में यादृच्छिक रूप से असाइन किया गया है। आप इस होवर प्रभाव को कैसे बनाते हैं? क्या यह पूरी तरह से सीएसएस के साथ किया जा सकता है?होवर प्रभाव पर यादृच्छिक रूप से रंग कैसे असाइन करें

a:hover { 
    color:#1ace84; 
    text-decoration: none; 
    padding-bottom: 2px; 
    border: 0; 
    background-image: none; 
    } 

a.green:hover { color: #1ace84; } 
a.purple:hover { color: #a262c0; } 
a.teal:hover { color: #4ac0aa; } 
a.violet:hover { color: #8c78ba; } 
a.pink:hover { color: #d529cd; } 

उत्तर

4

jQuery कोड का मुख्य भाग पृष्ठ के पाद लेख में लोड किया गया है।

कृपया लिपि पर लेखकों की टिप्पणी पर ध्यान दें, या इसे पुन: उपयोग करने के लिए author's permission खोजें।

/* 

    Code below this point is not licensed for reuse, 
    please look and learn but don't steal 

*/ 
var lastUsed; 
function randomFrom(arr){ 
    var randomIndex = Math.floor(Math.random() * arr.length); 
    lastUsed = arr[randomIndex]; 
    return lastUsed; 
} 
color_classes = ['green','purple','violet','teal','pink']; 
function initLinks() { 
    $('#wrap a').hover(function() { 
    new_classes = color_classes.slice(); 

    var index = $.inArray(lastUsed, new_classes); 
    new_classes.splice(index, 1); 

    var classes = $(this).attr('class'); 
    if (classes) { 
     classes.split(' '); 
     $(classes).each(function(i, className) { 
      var index = $.inArray(className, new_classes); 
      if (index>0) { 
       new_classes.splice(index, 1); 
      } 

     }); 
    } 
    $(this).removeClass(color_classes.join(' ')).addClass(randomFrom(new_classes)); 
    }, function() { 
    }); 
} 
+0

को ध्यान में रखते कोडर टिप्पणियां मुझे नहीं लगता कि आप अपने कोड पोस्ट किया जाना चाहिए था। भले ही सीएसएस और jQuery क्लाइंट साइड है और हर किसी के लिए उपलब्ध है, यह अभी भी उनका कोड है और उन्होंने इस साइट साइट के लिए इसे लिखने में समय बिताया। वह कोड टिप्पणी करने में ईमानदार था जहां उसने परिवर्तन किए और अपना कोड टिप्पणी की। मैंने नीचे दिए गए उदाहरण पोस्ट किए हैं जो वही करते हैं और चोरी नहीं हुए हैं। – Anagio

+2

@Anagio कोड खुले वेब पर है और लेखक आपको सीखने के लिए आमंत्रित करता है लेकिन चोरी नहीं करता है। तो मुझे सच में नहीं लगता कि इसे पोस्ट करने में कोई समस्या है। यह भी आपके अद्वितीय उत्तर के रूप में अद्वितीय नहीं है। – toomanyairmiles

+0

मेरा मुद्दा था कि कोडर ने उस कोड को टिप्पणी करने का समय लिया जो उसने बदल दिया था, वह नहीं था और पूछा कि कोई भी अपना कस्टम कोड चुरा लेता है। हां यह खुले वेब पर है, लेकिन ऐसी तस्वीरें हैं जिनके फोटोग्राफरों के पास कॉपीराइट है, सिर्फ इसलिए कि हम उन्हें डाउनलोड कर सकते हैं इसका मतलब यह नहीं है कि हमें लेना चाहिए। ऐसे ओपन सोर्स ऐप हैं जिनके लिए आपको लाइसेंस की आवश्यकता है और यदि लाइसेंस के बिना उन्हें इस्तेमाल किया जाता है तो आप अभी भी डीएमसीए की साइटों के खिलाफ फाइल कर सकते हैं, भले ही कोड 100% खुला स्रोत हो। अगर स्टैक ओवरफ्लो पर सवाल पूछा गया तो मुझे यकीन है कि कुछ लोगों ने jsfiddle – Anagio

9

चूंकि एक यादृच्छिक कारक पेश किया गया है, मुझे नहीं लगता कि सीएसएस के साथ इसे पूरी तरह से करने का एक तरीका है।

jQuery का उपयोग करके समस्या का मेरा सरल दृष्टिकोण यहां है।

आपके पास चालू उदाहरण देख सकते हैं: http://jsfiddle.net/GNgjZ/1/

$(document).ready(function() 
{ 
    $("a").hover(function(e) 
    { 
     var randomClass = getRandomClass(); 
     $(e.target).attr("class", randomClass); 
    }); 
}); 

function getRandomClass() 
{ 
    //Store available css classes 
    var classes = new Array("green", "purple", "teal", "violet", "pink"); 

    //Get a random number from 0 to 4 
    var randomNumber = Math.floor(Math.random()*5); 

    return classes[randomNumber]; 
} 
+0

मुझे कक्षा "लेख-कंटेनर" श्रेणी के साथ एक div के होवर बीजी को बदलने की जरूरत है। "ए" को "आलेख-कंटेनर" में बदलना प्रतीत नहीं होता है। क्या मुझसे कुछ गलत हो रही है? – Arete

+0

@Arete, चूंकि आप एक कक्षा के साथ काम कर रहे हैं, आपको '.article-container' selector (डॉट नोटिस) का उपयोग करने की आवश्यकता है। यह भी ध्यान रखें कि यह उदाहरण 'addclass()' और 'removeClass()' का उपयोग करके आपके मामले में 'वर्ग' विशेषता को पूरी तरह से बदलता है, बेहतर हो सकता है। –

संबंधित मुद्दे