जो हो रहा है, उससे चलो। शुरू करने के लिए, ध्यान दें कि z-index
तैनात तत्वों पर और transform
खुद नए " स्टैकिंग संदर्भों " का निर्माण करें " । यहाँ क्या हो रहा है:
आपके .test
तत्व ने transform
कुछ नहीं के अलावा कुछ और के लिए सेट किया है, जो इसे अपना स्वयं का स्टैकिंग संदर्भ देता है।
फिर आप एक .test:after
छद्म तत्व जोड़ते हैं , जो कि एक बच्चा है .test
। इस बच्चे के पास z-index: -1
, सेटिंग के .test:after
स्टैकिंग संदर्भ.test
के भीतर के स्टैक स्तर को सेट z-index: -1
करने के लिए .test:after
इसे पीछे नहीं रखा जाता है .test
क्योंकि z-index
केवल एक दिए गए स्टैकिंग संदर्भ के भीतर अर्थ होता है।
जब आप को दूर -webkit-transform
से .test
वह अपने स्टैकिंग संदर्भ निकाल देता है, के कारण .test
और .test:after
स्टैकिंग संदर्भ साझा करने के लिए (के उस <html>
) और बनाने .test:after
जाने के पीछे .test
। ध्यान दें कि हटाने के बाद .test
के -webkit-transform
शासन आप, एक बार फिर, यह अपने आप ही स्टैकिंग संदर्भ एक नया सेट करके दे सकते हैं z-index
पर शासन (किसी भी कीमत).test
(फिर से, क्योंकि यह स्थिति में है)!
तो हम आपकी समस्या का समाधान कैसे करेंगे?
Z- इंडेक्स को आपके द्वारा अपेक्षित तरीके से काम करने के लिए, सुनिश्चित करें कि .test
और .test:after
उसी स्टैकिंग प्रसंग को साझा करें। समस्या यह है कि आप .test
परिवर्तन के साथ घूमना चाहते हैं , लेकिन ऐसा करने का अर्थ है अपना स्वयं का स्टैकिंग संदर्भ बनाना। सौभाग्य से, .test
एक रैपिंग कंटेनर में रखने और घूर्णन जो अभी भी अपने बच्चों को दोनों को घुमाने के दौरान एक स्टैकिंग संदर्भ साझा करने की अनुमति देगा।
यहाँ आप के साथ क्या शुरू किया है: http://jsfiddle.net/fH64Q/
और यहां एक तरीका है कि आप स्टैकिंग-संदर्भों के आसपास पहुंच सकते हैं और रोटेशन को ध्यान में रख सकते हैं (ध्यान दें कि छाया .test
सफेद पृष्ठभूमि के कारण थोड़ी कट जाती है ):
.wrapper {
-webkit-transform: rotate(10deg);
}
.test {
width: 150px;
height: 40px;
margin: 30px;
line-height: 40px;
position: relative;
background: white;
}
.test:after {
width: 100px;
height: 35px;
content: "";
position: absolute;
top: 0;
right: 2px;
-webkit-box-shadow: 0 5px 5px #999;
-webkit-transform: rotate(3deg);
transform: rotate(3deg);
z-index: -1;
}
<div class="wrapper">
<div class="test">z-index is canceled.</div>
</div>
ऐसा करने के अन्य तरीके हैं, बेहतर तरीके भी। मैं संभवतः "एल्ट-इट" बैकग्राउंड एलीमेंट बनाऊंगा और फिर टेक्स्ट को अंदर डालूंगा, जो कि शायद सबसे आसान तरीका होगा और आपके पास जो कुछ भी है उसकी जटिलता को कम करेगा।
की जाँच करें इस लेख के बारे में अधिक जानकारी के लिए z-index
और व्यवस्था क्रम, या संदर्भ स्टैकिंग पर काम कर W3C CSS3 कल्पना