2011-09-29 16 views
45

मेरे पास प्रारंभिक रूप से अज्ञात चौड़ाई का एक तत्व है, विशेष रूप से उपयोगकर्ता द्वारा प्रदान की गई एक MathJax समीकरण। मेरे पास तत्व यह सुनिश्चित करने के लिए इनलाइन-ब्लॉक के रूप में सेट है कि तत्व की चौड़ाई इसकी सामग्री फिट बैठती है और ताकि इसकी परिभाषित चौड़ाई हो। हालांकि, यह केंद्रित करने के पारंपरिक तरीकों को रोकता है। यही है, निम्नलिखित काम नहीं करता है:क्या इनलाइन-ब्लॉक तत्व को केंद्र करना संभव है और यदि हां, तो कैसे?

.equationElement 
{ 
    display: inline-block; 
    margin-left: auto; 
    margin-right: auto; 
} 

और समस्या का समाधान नहीं हो सकता है:

.equationElement 
{ 
    display: block; 
    width: 100px; 
    margin-left: auto; 
    margin-right: auto; 
} 

क्योंकि मुझे पता नहीं क्या चौड़ाई वास्तव में पहले से और समीकरण पर उपयोगकर्ता क्लिक करता है, तो होना चाहिए, मुझे पूरे समीकरण को हाइलाइट करने की ज़रूरत है, इसलिए मैं चौड़ाई को 0 पर सेट नहीं कर सकता। क्या किसी के पास इस समीकरण को केंद्रित करने का कोई समाधान है?

+0

वैसे, पंजीकरण लगता brok उस पृष्ठ पर क्रोम के साथ। अगर मैं जावास्क्रिप्ट के साथ और बिना पंजीकरण बटन पर क्लिक करता हूं तो कुछ भी नहीं होता है। – phihag

+0

आकर्षक! मैं क्रोम का उपयोग कर रहा हूं और यह मेरे लिए ठीक काम करता है। आप किस खाते का उपयोग कर रहे हैं? गूगल, फेसबुक, ट्विटर? –

+1

मायोपनेड। जावास्क्रिप्ट बंद होने पर मैं 100% हूं, यह Google क्रोम में काम नहीं करेगा। बटन में एक फॉर्म भी नहीं है, और सबमिट बटन नहीं है। – phihag

उत्तर

92

बस कंटेनर पर text-align: center; सेट करें।

Here's a demo

+0

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

+1

@ विवेक विश्वनाथन क्या आप विस्तारित कर सकते हैं "तत्व काम नहीं करता है अगर तत्व इनलाइन-ब्लॉक के रूप में सेट किया गया है"? एक डेमो पेज पर एक [लिंक] (http://phihag.de/2011/so/inline-block-center.html) जोड़ा गया। – phihag

+1

ऐसा लगता है क्योंकि 'टेक्स्ट-एलाइन: केंद्र' मूल तत्व पर सेट है। हालांकि, मैं अपने कोड में ऐसा नहीं कर सकता क्योंकि 'इनलाइन-ब्लॉक' तत्व में भाई बहन हैं जो केंद्रित नहीं हो सकते हैं। इस पर आपकी मदद के लिए फिर से धन्यवाद। –

19

यह करने के लिए एक और तरीका है (ब्लॉक तत्व भी के लिए काम करता है):

.center-horizontal { 
    position: absolute; 
    left: 50%; 
    transform: translateX(-50%); 
} 

स्पष्टीकरण: बाईं: 50%, तत्व माता-पिता से युक्त के केंद्र से शुरू करने की स्थिति में होगा तो आप करना चाहते हैं इसे को अपनी चौड़ाई के आधे से बदलकर ट्रांसफॉर्म करें: translateX (-50%)

नोट 1: माता-पिता को स्थिति में रखने की स्थिति सेट करना सुनिश्चित करें: सापेक्ष; अगर माता-पिता पूरी तरह से रखा जाता है इसके अंदर एक 100% चौड़ाई और ऊंचाई, 0 गद्दी और मार्जिन div रख दिया और यह स्थिति दे: रिश्तेदार

टिप्पणी 2: भी केंद्रित ऊर्ध्वाधर के लिए संशोधित किया जा सकता है

top:50%; 
transform: translateY(-50%); 
+0

यह एक कमाल है! – metahamza

+4

आपको 'पूर्ण' स्थिति की आवश्यकता नहीं है और 'मार्जिन: 50%; ' – Kevin

+1

का उपयोग कर सकते हैं आपको पूर्ण आवश्यकता नहीं है, लेकिन स्थिति स्थिर है यदि स्थिति' स्थिर '(डिफ़ॉल्ट तत्व' स्थिति) है तो बाएं/दाएं काम नहीं करेंगे। यदि 'पूर्ण' एक विशिष्ट आवश्यकता नहीं है, तो आपको 'रिश्तेदार' –

2

एक छोटी सी के साथ देर से, लेकिन Ivek के जवाब के लिए इसी तरह, आप margin-leftleft का उपयोग कर के बजाय द्वारा position घोषणा का उपयोग कर से बचने कर सकते हैं, इसलिए:

margin-left: 50%; transform: translateX(-50%);

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

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