2012-04-10 4 views
6

पर होवर नहीं कर रहा है, तो मैं एक लिंक सूची बना रहा हूं जहां एक लिंक कंटेनर इसे घुमाने पर विस्तारित करता है (विवरण, छवि और विवरण के साथ)। मुझे सीएसएस संक्रमण या एनिमेशन के साथ इसे एनिमेट करने में कोई समस्या नहीं है।क्या मैं इसका उपयोग कर सकता हूं: एक CSS3 एनीमेशन (या संक्रमण) को ट्रिगर करने के लिए होवर करें, जब माउस अब

समस्या यह है कि मैं माउस को दूर जाने के बाद भी विस्तारित रहना चाहता हूं। और मैं इसे जावास्क्रिप्ट के बिना करना चाहता हूं।

क्या यह संभव है? धन्यवाद!

उत्तर

1

नहीं यह संभव नहीं है क्योंकि प्रत्येक सीएसएस जो माउसओवर पर लागू होगा (:hover) माउसआउट पर हटा दिया जाएगा और माउसओवर और आउट करने के लिए कोई अन्य तरीका नहीं है।

#animate:hover { 
    /* ex. -webkit- -moz- -ms- -o-​ */ animation: animation 2s infinite; /* will be directly aborted on mouseout :(*/ 
} 

तो आपको इसके लिए जावास्क्रिप्ट का उपयोग करना चाहिए।

1

http://www.impressivewebs.com/css3-transitions-javascript/ इस आलेख में एक डेमो है जो दिखाता है कि आप एक कक्षा को जोड़ने/हटाने के लिए एनीमेशन को कैसे जा सकते हैं। आप क्या कर सकते हैं अपने वर्तमान :hover को गिरावट के रूप में स्थान पर रखें, लेकिन जावास्क्रिप्ट वाले लोगों के लिए, एक ही शैलियों को pseudoHover या किसी वर्ग पर लागू करें।

फिर साथ जावास्क्रिप्ट (jQuery नीचे दिखाया गया है) जब आप तत्व पर ले जाएं, यहाँ बहुत ही बुनियादी उदाहरण वर्ग जोड़ने के लिए,: http://jsfiddle.net/btg5y/

HTML:

<div id="list"> 
<p>Hover over me!</p> 
<ul> 
    <li>item 1</li> 
    <li>item 2</li> 
</ul> 
</div> 
<p>Click anywhere here to remove the hover</p> 

जे एस:

$('#list').hover(function() { 
    $('ul', this).addClass('pseudoHover'); 
}); 
$(document).click(function() { 
    $('#list ul').removeClass('pseudoHover'); 
}); 

सीएसएस:

ul { 
    background-color: #F00; 
    height: 0; 
    overflow: hidden; 
    transition: height 1s; 
    -webkit-transition: height 1s; 
} 
#list:hover ul, .pseudoHover { 
    height: 50px; 
} 

जावास्क्रिप्ट का उपयोग केवल आपके द्वारा आवश्यक राज्य को बनाए रखने के लिए कक्षा को जोड़ने और निकालने के लिए किया जाता है। यदि आपके पास जावास्क्रिप्ट नहीं है, तो केवल :hover काम करेगा।

इसके अलावा, मैं नहीं देख सकता कि आप केवल सीएसएस के साथ ऐसा कैसे करेंगे।

1

यदि आपको वास्तव में जावास्क्रिप्ट से बचने की आवश्यकता है तो आप अपने विस्तारित बॉक्स को समय के लिए अपने मूल आकार में वापस जाने से रोकने में देरी जोड़ सकते हैं।

एक अलग नोट पर यह जोड़ने के लायक है: एक्शन के साथ-साथ: टच-स्क्रीन डिवाइस का उपयोग करने वाले लोगों के लिए होवर करें।

यहां मैंने इसे 3 सेकंड के लिए किया है। यह निर्दिष्ट समय के बाद मूल आकार में वापस आ जाएगा लेकिन आपको जो चाहिए उसे निर्भर करने में मदद कर सकता है।

<!DOCTYPE html> 
<html> 
<head> 
<style> 
    .div{ 
     height:100px; 
     width:50px; 
     background:red; 
     transition: width 0.5s ease; 
     transition-delay:3s; 
    } 
    .div:hover, .div:action 
    { 
     width:400px; 
     transition: width 0.5s ease; 
    } 
</style> 
</head> 
<body> 

<div class="div"></div> 

</body> 
</html> 

चीयर्स, मार्क

1

के बजाय का उपयोग कर: मंडराना आप :target छद्म वर्ग का उपयोग कर ऐसा कर सकता है।

चेक बाहर इस fiddle

नोट: आप इस विधि का उपयोग करने के लिए एक आधुनिक ब्राउज़र की आवश्यकता होगी।(IE9 +)

इसके अलावा, उनमें से एक this article पर एक नज़र डालें जो कुछ चालाक तरीके सीएसएस के साथ क्लिक ईवेंट अनुकरण करने के लिए दिखाता है (किया जा रहा है:। लक्ष्य छद्म वर्ग

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