मुझे पता है कि यह सवाल पुराना है, लेकिन मैंने पाया कि मेरे लिए सही वर्कअराउंड क्या है।
मैं इस सीएसएस को उस div में जोड़ता हूं जिसे मैं केंद्र में रखना चाहता हूं:
div:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: middle;
}
यह हर बार काम करता है और यह साफ है।
संपादित करें: बस पूरा करने के लिए, मैं scss का उपयोग करता हूं और मेरे पास एक आसान मिश्रण है, जिसमें मैं हर उस माता-पिता को शामिल करता हूं, जिनके सीधे बच्चे हैं जिन्हें मैं लंबवत केंद्रित करना चाहता हूं:
@mixin vertical-align($align: middle) {
&:before {
content: "";
display: inline-block;
height: 100%;
vertical-align: $align;
font-size: 0;
}
& > * {
vertical-align: $align;
font-size: 14px;
}
}
पूर्ण स्पष्टीकरण:
div:beforediv के अंदर एक तत्व जोड़ देगा, लेकिन उसके किसी भी बच्चे से पहले। उपयोग करते समय :beforeया :afterहमें एक content:घोषणा का उपयोग करना चाहिए अन्यथा कुछ भी नहीं होगा, लेकिन हमारे उद्देश्य के लिए, सामग्री खाली हो सकती है। फिर हम तत्व को उसके माता-पिता के समान लंबा बताते हैं, जब तक कि उसके माता-पिता की ऊंचाई को परिभाषित किया जाता है और यह तत्व कम से कम इनलाइन-ब्लॉक है। vertical-alignमाता-पिता से संबंधित स्वयं की ऊर्ध्वाधर स्थिति को परिभाषित करता है, क्योंकि इसके विपरीत text-alignकाम करता है।
@mixinघोषणा सास उपयोगकर्ताओं के लिए है और इसे इस तरह इस्तेमाल किया जाएगा:
div {
@include vertical-align(middle)
}