2016-06-23 5 views
5

मेरे पास माता-पिता हैं a तत्व। जब उपयोगकर्ता mouse over मैं बाल सीमा रंग को लाल रंग में बदल रहा हूं। यह काम करता हैं।'होवर' पर - विभिन्न परिदृश्यों पर बच्चों की सीमा-त्रिज्या को कैसे संभालें?

मेरी समस्या यह है कि बच्चे की लंबाई स्थिर नहीं है। यह गतिशील है। मैं बाएं-सीमा radius दोनों first और last जोड़ रहा हूं लेकिन right-radius को second और last पर कैसे जोड़ूं? (के बाद से मैं बच्चों की गिनती नहीं जानते)

.parent { 
 
    border:5px solid red; 
 
    display:inline-block; 
 
    position: relative; 
 
    border-radius:5px; 
 
    box-sizing:border-box; 
 
    margin-bottom:3em; 
 
} 
 

 
.parent a { 
 
    display:block; 
 
    padding:1em; 
 
    border-bottom:1px solid #ddd; 
 
    position: relative; 
 
    width:50%; 
 
    float:left; 
 
    box-sizing:border-box; 
 
} 
 

 
.parent a:nth-child(odd):hover{ 
 
    border:5px solid #ddd; 
 
    margin: -5px; 
 
} 
 

 
.parent a:nth-child(even):hover{ 
 
    border:5px solid #ddd; 
 
    margin: -5px; 
 
    left:10px; 
 
} 
 

 
.parent a:first-of-type{ 
 
    border-top-left-radius:5px; 
 
} 
 

 
.parent a:last-of-type{ 
 
    border-bottom-left-radius:5px; 
 
}
<div class="parent"> 
 
     <a href="#">1</a><a href="#">2</a><a href="#">3</a><a href="#">4</a><a href="#">5</a> 
 
    </div> 
 
    
 
    <div class="parent"> 
 
     <a href="#">1</a><a href="#">2</a><a href="#">3</a> 
 
    </div> 
 
    
 
     <div class="parent"> 
 
     <a href="#">1</a> 
 
    </div>

या क्या इस संभाल करने के लिए सही तरीका क्या है?

+0

और अधिक विस्तार के रूप में वर्तमान में अपने भ्रामक साथ अपनी समस्या बताएं। –

+0

मुझे इसके लिए खेद है, एक पंक्ति के रूप में, 'ए' तत्व गतिशील होते हैं (गिनती अलग-अलग होती है) लेकिन होवर पर मुझे गोल कोनों के साथ बाएं और दाएं दोनों की आवश्यकता होती है। – user2024080

+0

चयनकर्ताओं का उपयोग करें: पहला बच्चा और: आखिरी बच्चा अगर आपको शुरुआत में और अंत में –

उत्तर

2

आप निम्न और अपने सभी मामलों का उपयोग कर सकते अनुसार क्रमबद्ध किया जाना चाहिए: https://jsfiddle.net/67hr0oax/7/

: https://jsfiddle.net/67hr0oax/4

यहाँ से हटाया झटका से कुछ के साथ एक अद्यतन है:

.parent { 
    border:5px solid red; 
    display:inline-block; 
    position: relative; 
    border-radius:5px; 
    box-sizing:border-box; 
    margin-bottom:3em; 
} 

.parent a { 
    display:block; 
    padding:1em; 
    border-bottom:1px solid #ddd; 
    position: relative; 
    width:50%; 
    float:left; 
    box-sizing:border-box; 
} 

.parent a:nth-child(odd):hover{ 
    border:5px solid #ddd; 
    margin: -5px; 
} 

.parent a:nth-child(even):hover{ 
    border:5px solid #ddd; 
    margin: -5px; 
    left:10px; 
} 

.parent a:first-of-type{ 
    border-top-left-radius:5px; 
} 

.parent a:nth-child(2) { /* second child */ 
    border-top-right-radius:5px; 
} 

.parent a:last-of-type:nth-child(even){ 
    border-bottom-right-radius:5px; 
} 

.parent a:last-of-type:nth-child(odd){ 
    border-bottom-left-radius:5px; 
} 

.parent a:nth-last-child(2):nth-child(odd) { 
    border-bottom-left-radius: 5px; 
} 

यहाँ एक jsfiddle है

कृपया ध्यान दें: ब्राउज़र समर्थन केवल आईई 9 और ऊपर के लिए है।

+0

जांचें, मैं पहले ही इसे चुन रहा हूं, अगर 'ए' में केवल 2 है क्या आप इसे दिखा सकते हैं? – user2024080

+0

मुझे लगता है कि आपके प्रश्न ने मुझे भ्रमित कर दिया। मैं इसे एक पहेली में दिखाने की कोशिश करूंगा और आप समझा सकते हैं कि शायद क्या होने की आवश्यकता है। मुझे एक मिनट दें –

+0

मैं सहमत हूं। समाधान के अनुसार आप काम कर रहे हैं। लेकिन मुझे होवर पर झटके मिल रहे हैं। क्या आपके पास इसका पुनरुत्पादन करने का कोई और विचार है? – user2024080

0

जब आप कहते हैं कि आपकी पंक्ति में तत्वों की संख्या "गतिशील" है तो मुझे नहीं लगता कि सीएसएस इस तरह की जटिलता को संभालने के लिए डिज़ाइन किया गया है।

यदि आप स्थिर तत्वों की संख्या रखते हैं तो शायद हम सीमा त्रिज्या लागू करने के लिए :nth-last-child(), :nth-child() के संयोजन का उपयोग कर सकते हैं।

तो जाहिर है कि आपके विकल्प जावास्क्रिप्ट का उपयोग करके प्रसंस्करण तक ही सीमित हैं।

1

जब तक आप <a>&nbsp;</a> जोड़कर भी तत्वों की संख्या रखते हैं, यह काम करेगा।

हालांकि बाहरी सीमा में कुछ छड़ें रुकने के लिए थीं लेकिन वे माउस पर जब आप पूरे ब्लॉक कूदते हैं तो रोकने के लिए वहां हैं।

.parent, 
 
.parent a { 
 
    position: relative 
 
} 
 
.parent { 
 
    display: inline-block 
 
} 
 
.parent a { 
 
    display: block; 
 
    padding: 1em; 
 
    width: 50%; 
 
    float: left; 
 
    box-sizing: border-box; 
 
    border: 5px solid transparent; 
 
    background: #fff 
 
} 
 
.parent a:nth-child(1) { 
 
    border-top-left-radius: 5px; 
 
    border-top: solid red 5px 
 
} 
 
.parent a:nth-child(2) { 
 
    border-top-right-radius: 5px; 
 
    border-top: solid red 5px 
 
} 
 
.parent a:nth-child(even) { 
 
    border-right: solid red 5px 
 
} 
 
.parent a:nth-child(odd) { 
 
    border-left: solid red 5px 
 
} 
 
.parent a:last-child { 
 
    border-bottom-right-radius: 5px; 
 
    border-bottom: solid red 5px 
 
} 
 
.parent a:nth-last-child(2) { 
 
    border-bottom-left-radius: 5px; 
 
    border-bottom: solid red 5px 
 
} 
 
.single a { 
 
    border-radius: 5px; 
 
    border: 5px solid red 
 
} 
 
.parent a:hover { 
 
    border-color: #00f 
 
}
<div class="parent"> 
 
    <a href="#">1</a> 
 
    <a href="#">2</a> 
 
    <a href="#">3</a> 
 
    <a href="#">4</a> 
 
    <a href="#">5</a> 
 
    <a>&nbsp;</a> 
 
</div> 
 

 
<div class="parent"> 
 
    <a href="#">1</a> 
 
    <a href="#">2</a> 
 
    <a href="#">3</a> 
 
    <a>&nbsp;</a> 
 
</div> 
 

 
<div class="single parent"> 
 
    <a href="#">1</a> 
 
</div>

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