2010-03-05 11 views
6

मैं इंटरनेट एक्सप्लोरर के कुछ संस्करणों में निम्न कोड के साथ एक समस्या का सामना कर रहा हूँ:display: inline-ब्लॉक और पाठ-इंडेंट

#iconautente{ 
background-image:url('/style/images/spritecommon.png'); /*icona_utente.png*/ 
background-position:-117px -15px; 
text-indent:-9000px; 
width:20px; 
height:23px; 
display:inline-block; 
} 

<a id="iconautente" href="/admin/index.php">admin</a> 

फ़ायरफ़ॉक्स, IE7 और IE8 विस्टा के अंतर्गत में, मैं देख रहा हूँ पृष्ठभूमि और कोई पाठ , जैसा सोचा था। एक्सपी के तहत आईई 6 और आईई 8 में, पूरी छवि इंडेंट है, टेक्स्ट नहीं, इसलिए छवि दिखाई नहीं दे रही है।

सही व्यवहार क्या होना चाहिए? क्या आसपास कोई काम है?

+0

admin और #iconautente अवधि का उपयोग करके देख {text-मांगपत्र: -9000px;} काम करता है, लेकिन के पाठ्य-मांगपत्र इनलाइन-ब्लॉक इंडेंट पूरे ब्लॉक, निहित पाठ नहीं है। मानक क्या कहता है? –

उत्तर

2
* html #iconautente{text-indent:0; line-height:0; font-size:0; overflow:hidden}/*ie6 hack */ 

*:first-child+html #iconautente{ text-indent:0; line-height:0; font-size:0; overflow:hidden}/*ie7 hack */ 
+0

मुझे अभी एहसास हुआ है कि फ़ॉन्ट आकार और रेखा-ऊंचाई टेक्स्ट दिखाने की चाल नहीं है ... thanx –

+3

टेक्स्ट अभी भी क्रोम ब्राउज़र में प्रदर्शित है छोटा फ़ॉन्ट आकार (यह बिंदुओं का निशान जैसा दिखता है)। –

+0

@ हैलिलोज़गुर यह आईई 6/7 के लिए एक हैक के रूप में है और नए ब्राउज़र में अप्रत्याशित व्यवहार हो सकता है। मैं आधुनिक ब्राउज़र में छिपे ओवरफ्लो के साथ संयुक्त और एक पुराने टेक्स्ट-इंडेंट की सिफारिश करता हूं, और पुराने एमएसआईई के लिए यह हैक। –

2

शायद इंटरनेट एक्सप्लोरर 7 नीचे संस्करणों में display: inline-block; और केवल आंशिक रूप से 7 में समर्थन नहीं कर रहा है तुम क्यों display:block; का उपयोग नहीं करते?

+3

सटीक होने के लिए, 'इनलाइन-ब्लॉक' केवल 8 से नीचे के संस्करणों में समर्थित है यदि मूल 'प्रदर्शन' संपत्ति' इनलाइन' है। – casraf

+0

मूल एक टैग इनलाइन है। क्योंकि प्रदर्शन के साथ: ब्लॉक; सही ढंग से लंबवत-संरेखण तत्व नहीं है, और लंबवत-संरेखण का कोई प्रभाव नहीं है –

5

शायद आप इस तरह की कोशिश कर सकते हैं:

 
.blk { display:inline-block; height:96px; width:96px; text-indent:-9999px; *text-indent:0; *font-size:0; *line-height:0; *overflow:hidden; } 

डेमो http://jsfiddle.net/zhiyelee/4aRZa/

+0

जहां तक ​​मुझे चिंतित है यह एमएसआईई के पुराने संस्करणों में एक बग है और इसे हल करने के लिए इस तरह की हैक की आवश्यकता है। पुराने ब्राउज़र के अनुपालन के लिए नए मानकों का समझौता क्यों करें? टेक्स्ट इंडेंट ब्रेक इनलाइन (इनलाइन-ब्लॉक) तत्वों को लागू आयामों के साथ। आप नए ब्राउज़र में फ़ॉन्ट आकार को शून्य के रूप में सेट कर सकते हैं साथ ही साथ एक ही परिणाम (कोई हैक आवश्यक नहीं है) लेकिन पाठ-इंडेंट टेक्स्ट छिपाने की मेरी पसंदीदा विधि है। –

+0

स्वयं को सही करने के लिए: फ़ॉन्ट-आकार सभी आधुनिक ब्राउज़रों में समान व्यवहार नहीं करता है, इसलिए जब संभव हो तो टेक्स्ट-इंडेंट का उपयोग करें, और आईई 6 या 7 का उपयोग करते समय इसे ओवरराइड करें। इसके अलावा, उन लोगों के लिए जो यह नहीं जानते: यह उत्तर समान है स्वीकार्य उत्तर, लेकिन एक चयनकर्ता हैक का उपयोग करता है जो आईई 6 और 7 दोनों को लक्षित करता है। मैं इस विधि को पसंद करता हूं क्योंकि यह कम कोड है। –

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