2012-06-17 17 views
7

मैं कुछ भी पूरा करने की कोशिश कर रहा हूं, केवल नीचे दिए गए चित्र के समान ही CSS3 के साथ।सीएसएस ओवरलैपिंग तीर

enter image description here

फर्क सिर्फ इतना है कि पिछले div एक नुकीली टिप होता है।

अनुकूलन के समान कुछ खोजने के लिए, मैं this js fiddle पर आया हूं जो कि मैं जो करना चाहता हूं उसके करीब आता है, लेकिन दो समस्याएं पेश करता है: पहला, यह कैनवास के साथ किया जाता है, और दूसरा, यह मुझे " प्रत्येक तीर के लिए तीर प्रभावी रूप से दो बार खींचें - एक div के लिए, और अगले तीर से पहले अंतरिक्ष के लिए। ऐसा करने का कुछ क्लीनर तरीका होना चाहिए - क्या कोई मुझे यहां कुछ दिशा प्रदान कर सकता है?

मुझे यह जानने की ज़रूरत है कि उपर्युक्त चित्र में क्या दिखाया गया है - ओवरलैपिंग div तीरों की एक श्रृंखला - केवल CSS3 के साथ।

+0

तीर ऊपर के लिए एक विकल्प नहीं है में से प्रत्येक के लिए एक पृष्ठभूमि छवि का उपयोग किया जाता है? => |> => |> = ऊपर तीर वास्तव में ओवरलैप नहीं करते हैं। –

+0

@marabutt मुझे लगता है कि वे शायद नहीं - यह हर तीर के अंत की तरह दिखता है हालांकि मेरे बगल में पूंछ मिलता है। किसी भी मामले में मैं ओवरलैप करना चाहता हूं। – varatis

उत्तर

23

इस प्रयास करें - http://jsfiddle.net/ksNr3/8/

ul { 
    margin: 20px 60px; 
} 

ul li { 
    display: inline-block; 
    height: 30px; 
    line-height: 30px; 
    width: 100px; 
    margin: 5px 1px 0 0; 
    text-indent: 35px; 
    position: relative; 
} 

ul li:before { 
    content: " "; 
    height: 0; 
    width: 0; 
    position: absolute; 
    left: -2px; 
    border-style: solid; 
    border-width: 15px 0 15px 15px; 
    border-color: transparent transparent transparent #fff; 
    z-index: 0; 
} 

ul li:first-child:before { 
    border-color: transparent; 
} 

ul li a:after { 
    content: " "; 
    height: 0; 
    width: 0; 
    position: absolute; 
    right: -15px; 
    border-style: solid; 
    border-width: 15px 0 15px 15px; 
    border-color: transparent transparent transparent #ccc; 
    z-index: 10; 
} 

ul li.active a { 
    background: orange; 
    z-index: 100; 
} 

ul li.active a:after { 
    border-left-color: orange; 
} 

ul li a { 
    display: block; 
    background: #ccc; 
} 

ul li a:hover { 
    background: pink; 
} 

ul li a:hover:after { 
    border-color: transparent transparent transparent pink; 
} 
​ 

UPDATED - यह क्लिक करने योग्य और कम से कम ओवरलैप होने वाले क्षेत्रों निर्मित - http://jsfiddle.net/ksNr3/8/

+1

आप महोदय, एक सज्जन और विद्वान हैं। वह अविश्वसनीय रूप से सहायक था। – varatis

+1

आपका स्वागत है :) –

+0

@arttronics तीर गलत तत्व से संबंधित प्रतीत होते हैं क्योंकि वे ओवरलैप करते हैं।जब आप फायरबग के साथ तत्वों का निरीक्षण करते हैं, तो यह उस पृष्ठ पर मौजूद प्रत्येक स्थान पर मौजूद स्थान को हाइलाइट कर रहा है, भले ही वह स्थान उपयोगकर्ता को दिखाई दे या नहीं। ध्यान दें कि 'पहले' और ': बाद' [छद्म तत्व] (http://www.w3schools.com/css/css_pseudo_elements.asp) जो त्रिकोण को वास्तव में 'li' तत्वों के साथ हाइलाइट नहीं करते हैं। सुझाया गया समाधान इरादे के रूप में काम कर रहा है। – Zhihao

6

निम्नलिखित CSS3 के समाधान किसी भी चित्र उपयोग नहीं करता है और साथ काम करना आसान है ।

मैंने बनाया है पूरी तरह से उन उदाहरणों पर टिप्पणी की जिन्हें आगे बढ़ाया जा सकता है।

एक उदाहरण में ऐसे तीर हैं जो एक दूसरे के खिलाफ "दृष्टिहीन" हैं।

अन्य उदाहरण तीर पर "एंड-कैप्स" के साथ आपके प्रश्न में छवि की तरह है।

प्रत्येक उदाहरण के लिए एक सरल jQuery .click() घटना श्रोता है तो आप भले ही आप कहीं ब्रेडक्रम्ब में क्लिक कर रहे हैं देख सकते हैं, लंगर सही क्लिक करें घटना प्राप्त होगा। तीर पूंछ सही ढंग से काम करते हैं।

स्क्रीनशॉट NavBar के ब्रेडक्रम्ब के लिए सक्रिय CSS होवर पता चलता है:

enter image description here

जब सीएसएस ब्राउज़र में अक्षम होता है, ब्रेडक्रम्ब नेविगेशन शान से वापस पहुंच आवश्यकताओं के लिए हो जाता है।

संदर्भ:       jsFiddle

+0

इसी तरह के लिए ** Breadcrumb NavBAR ** मैंने CSS3 रोटेशन के बिना बनाया, इसे देखें [** SO उत्तर **] (http://stackoverflow.com/a/11218781/1195891)। – arttronics

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