मेरे पास निश्चित आकार का एक वर्ग div है और अंदर एक मनमानी आकार छवि रखना चाहता है ताकि यह क्षैतिज और लंबवत दोनों सीएसएस का उपयोग कर केंद्रित हो। क्षैतिज आसान है:* परफेक्ट * लंबवत छवि संरेखण
.container { text-align: center }
ऊर्ध्वाधर के लिए, आम समाधान है:
.container {
height: 50px;
line-height: 50px;
}
img {
vertical-align: middle;
}
लेकिन इस सही नहीं, फ़ॉन्ट आकार पर निर्भर करता है, छवि के चारों ओर 2-4px भी हो जाएगा काफी नीचे।
मेरी समझ के लिए, ऐसा इसलिए है क्योंकि ऊर्ध्वाधर-संरेखण के लिए उपयोग किया जाने वाला "मध्य" वास्तव में मध्य नहीं है, लेकिन मध्य के करीब के फ़ॉन्ट पर एक विशेष स्थिति है। ए (थोड़ा हैकी) वर्कअराउंड होगा:
container {
font-size: 0;
}
और यह क्रोम और आई 7 में काम करता है, लेकिन IE8 नहीं। हम सभी फ़ॉन्ट लाइनों को मध्य में एक ही बिंदु बनाने की उम्मीद कर रहे हैं, लेकिन ऐसा लगता है कि ब्राउज़र के आधार पर हिट-एंड-मिस और शायद, फ़ॉन्ट का इस्तेमाल किया जाता है।
एकमात्र समाधान जो मैं सोच सकता हूं, लाइन ऊंचाई को हैक करना, इसे थोड़ा छोटा बनाना, छवि को सही स्थान पर दिखाना, लेकिन यह बेहद नाजुक लगता है। क्या कोई बेहतर समाधान है?
img {
display: block;
line-height: 0;
}
:
+1 बस एक बहुत साफ डेमो के साथ एक अच्छी तरह से लिखित प्रश्न पूछने के लिए +1! – bPratik
मैंने jQuery का उपयोग करके और पेज लोड पर मार्जिन की गणना करके कुछ हासिल किया। सुंदर नहीं है, लेकिन यह आईई 6 + और कंपनी – alxbrd
में काम किया है क्या आपने कंटेनर में 'डिस्प्ले: टेबल-सेल' जोड़ने की कोशिश की है? यह मेरी समझ है कि ऊर्ध्वाधर-संरेखण संपत्ति के दो अलग-अलग अर्थ हो सकते हैं, एक टेबल सेल सामग्री के लिए, और इनलाइन तत्वों के लिए एक। – Quantastical