html - एक div ब्लॉक के अंदर सीएसएस केंद्र पाठ(क्षैतिज और लंबवत)
css (14)
मेरे पास display:block
करने के लिए एक div
सेट है display:block
। ( 90px
height
और width
) और मेरे अंदर कुछ पाठ है।
मुझे पाठ को लंबवत और क्षैतिज दोनों केंद्र में गठबंधन करने की आवश्यकता है।
मैंने text-align:center
की कोशिश की है text-align:center
, लेकिन यह क्षैतिज भाग नहीं करता है इसलिए मैंने vertical-align:middle
की कोशिश की vertical-align:middle
लेकिन यह काम नहीं किया।
कोई विचार?
2014 के रूप में आम तकनीकें:
दृष्टिकोण 1 -
transform
/translateY
:यहां उदाहरण / पूर्ण स्क्रीन उदाहरण
समर्थित ब्राउज़र (उनमें से अधिकतर) में, आप
top: 50%
उपयोग कर सकते हैंtop: 50%
/left: 50%
translateX(-50%) translateY(-50%)
साथ संयोजन मेंleft: 50%
गतिशील रूप से लंबवत / क्षैतिज रूप से तत्व को केंद्रित करते हैं।.container { position: absolute; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); }
दृष्टिकोण 2 - फ्लेक्सबॉक्स विधि:
यहां उदाहरण / पूर्ण स्क्रीन उदाहरण
समर्थित ब्राउज़र में , लक्षित तत्व का
display
flex
सेट करें औरalign-items: center
उपयोगalign-items: center
ऊर्ध्वाधर केंद्र औरjustify-content: center
लिएjustify-content: center
क्षैतिजjustify-content: center
लिएjustify-content: center
। बस अतिरिक्त ब्राउज़र समर्थन के लिए विक्रेता उपसर्ग जोड़ने के लिए मत भूलना ( उदाहरण देखें )।html, body, .container { height: 100%; } .container { display: flex; align-items: center; justify-content: center; }
दृष्टिकोण 3 -
table-cell
/vertical-align: middle
:यहां उदाहरण / पूर्ण स्क्रीन उदाहरण
कुछ मामलों में, आपको यह सुनिश्चित करने की आवश्यकता होगी कि
html
/body
एलिमेंट की ऊंचाई100%
सेट हो।लंबवत संरेखण के लिए, पैरेंट तत्व की
width
/height
100%
औरdisplay: table
जोड़ेंdisplay: table
। फिर बच्चे के तत्व के लिए,table-cell
मेंdisplay
बदलें औरvertical-align: middle
जोड़ेंvertical-align: middle
।क्षैतिज केंद्र के लिए, आप या तो
text-align: center
जोड़ सकते हैंtext-align: center
टेक्स्ट को केंद्र और अन्यinline
बच्चों के तत्वों को केंद्र में केंद्रित करने के लिए केंद्र। वैकल्पिक रूप से, आपmargin: 0 auto
उपयोग कर सकते हैंmargin: 0 auto
मानते हैं कि तत्वblock
स्तर है।html, body { height: 100%; } .parent { width: 100%; height: 100%; display: table; text-align: center; } .parent > .child { display: table-cell; vertical-align: middle; }
दृष्टिकोण 4 - विस्थापन के साथ शीर्ष से
50%
बिल्कुल स्थित है:यहां उदाहरण / पूर्ण स्क्रीन उदाहरण
यह दृष्टिकोण मानता है कि पाठ की एक ज्ञात ऊंचाई है - इस उदाहरण में, 18
18px
। पैरेंट तत्व के सापेक्ष, शीर्ष से केवल50%
तत्व को स्थिति में रखें। इस मामले में-9px
में तत्व की ज्ञात ऊंचाई का आधा हिस्सा नकारात्मकmargin-top
मान का उपयोग करें।html, body, .container { height: 100%; } .container { position: relative; text-align: center; } .container > p { position: absolute; top: 50%; left: 0; right: 0; margin-top: -9px; }
दृष्टिकोण 5 -
line-height
विधि (कम लचीला - सुझाया नहीं गया):कुछ मामलों में, मूल तत्व की निश्चित ऊंचाई होगी। ऊर्ध्वाधर केंद्र के लिए, आपको केवल मूल तत्व की निश्चित ऊंचाई के बराबर बाल तत्व पर
line-height
मान सेट करना है।यद्यपि यह समाधान कुछ मामलों में काम करेगा, यह ध्यान देने योग्य है कि यह काम नहीं करेगा जब टेक्स्ट की कई पंक्तियां होंगी - जैसे ।
.parent { height: 200px; width: 400px; text-align: center; } .parent > .child { line-height: 200px; }
तरीके 4 और 5 सबसे विश्वसनीय नहीं हैं। पहले 3 में से एक के साथ जाओ।
दृष्टिकोण 1
div {
height: 90px;
line-height: 90px;
text-align: center;
border: 2px dashed #f69c55;
}
<div>
Hello World!
</div>
दृष्टिकोण 2
div {
height: 200px;
line-height: 200px;
text-align: center;
border: 2px dashed #f69c55;
}
span {
display: inline-block;
vertical-align: middle;
line-height: normal;
}
<div>
<span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Haec et tu ita posuisti, et verba vestra sunt. Non enim iam stirpis bonum quaeret, sed animalis. </span>
</div>
दृष्टिकोण 3
div {
display: table;
height: 100px;
width: 100%;
text-align: center;
border: 2px dashed #f69c55;
}
span {
display: table-cell;
vertical-align: middle;
}
<div>
<span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span>
</div>
आप निम्न विधियों का प्रयास कर सकते हैं:
1. यदि आपके पास एक शब्द या एक पंक्ति वाक्य है, तो निम्न कोड चाल कर सकता है।
एक div टैग के अंदर एक पाठ है और इसे एक आईडी दें। उस आईडी के लिए निम्नलिखित गुणों को परिभाषित करें।
id-name {
height: 90px;
line-height: 90px;
text-align: center;
border: 2px dashed red;
}
नोट: सुनिश्चित करें कि रेखा-ऊंचाई संपत्ति विभाजन की ऊंचाई के समान है।
लेकिन, यदि सामग्री एक से अधिक शब्द या रेखा से अधिक है तो यह काम नहीं करती है। साथ ही, ऐसे समय होंगे जब आप पीएक्स या% में डिवीजन के आकार को निर्दिष्ट नहीं कर सकते हैं। (जब विभाजन वास्तव में छोटा होता है और आप सामग्री को बीच में बिल्कुल ठीक करना चाहते हैं)
2. इस समस्या को हल करने के लिए, हम गुणों के निम्नलिखित संयोजन को आजमा सकते हैं।
id-name {
display: flex;
justify-content: center;
align-items: center;
border: 2px dashed red;
}
कोड की ये 3 पंक्तियां सामग्री को डिवीजन के बीच में सेट करती हैं (प्रदर्शन के आकार के बावजूद)। "संरेखण-वस्तु: केंद्र" ऊर्ध्वाधर केंद्र में मदद करता है जबकि "औचित्य-सामग्री: केंद्र" क्षैतिज रूप से केंद्रित होगा।
नोट: फ्लेक्स सभी ब्राउज़रों में काम नहीं करता है। सुनिश्चित करें कि आप अतिरिक्त ब्राउज़र समर्थन के लिए उचित विक्रेता उपसर्ग जोड़ते हैं।
ऊर्ध्वाधर संरेखण प्राप्त करने के लिए लाइन ऊंचाई समायोजित करना।
line-height: 90px;
मैं हमेशा कंटेनर के लिए निम्न सीएसएस का उपयोग करता हूं, इसकी क्षैतिज और लंबवत सामग्री को केन्द्रित करता हूं।
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-align: center;
-moz-box-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-box-pack: center;
-moz-box-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
इसे यहां कार्रवाई में देखें: https://jsfiddle.net/yp1gusn7/
यदि यह टेक्स्ट और / या छवि की एक पंक्ति है, तो यह करना आसान है। महज प्रयोग करें
text-align: center;
vertical-align: middle;
line-height: 90px; /* the same as your div height */
बस। यदि यह कई रेखाएं हो सकती है, तो यह कुछ और जटिल है। लेकिन http://pmob.co.uk/ पर "समाधान लंबवत" के लिए समाधान हैं।
चूंकि वे हैक होते हैं या जटिल divs जोड़ते हैं ... मैं आमतौर पर इसे करने के लिए एक सेल के साथ एक टेबल का उपयोग करता हूं ... इसे यथासंभव सरल बनाने के लिए।
2016/2017 के लिए अपडेट करें:
इसे transform
साथ अधिक सामान्य रूप से किया जा सकता है, और यह पुराने ब्राउज़र जैसे आईई 10 और आईई 11 में भी अच्छा काम करता है। यह टेक्स्ट की कई पंक्तियों का समर्थन कर सकता है:
position: relative;
top: 50%;
transform: translateY(-50%);
उदाहरण: https://jsfiddle.net/wb8u02kL/1/
चौड़ाई लपेटने के लिए:
उपरोक्त समाधान सामग्री क्षेत्र के लिए एक निश्चित चौड़ाई का उपयोग किया। एक सिकुड़ लपेट चौड़ाई का उपयोग करने के लिए, उपयोग करें
position: relative;
float: left;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
उदाहरण: https://jsfiddle.net/wb8u02kL/2/
मैंने फ्लेक्सबॉक्स की कोशिश की, लेकिन यह व्यापक रूप से समर्थित नहीं था, क्योंकि यह आईई 10 जैसे आईई के कुछ पुराने संस्करण में टूट जाएगा।
यह मेरे लिए काम किया
.center-stuff{
text-align: center;
vertical-align: middle;
line-height: 230px;/*This should be the div height*/
}
यह सही जवाब होना चाहिए। सबसे साफ और सरल:
.element {
position: relative;
top: 50%;
transform: translateY(-50%);
}
लाइन display: table-cell;
जोड़ें display: table-cell;
उस div के लिए अपने सीएसएस के लिए। केवल तालिका कक्ष लंबवत-संरेखण का समर्थन करते हैं: मध्य; लेकिन आप div [table-cell] परिभाषा div को दे सकते हैं ..
यहां लाइव उदाहरण: http://jsfiddle.net/tH2cc/
div{
height:90px;
width:90px;
text-align:center;
border:1px solid silver;
display: table-cell; // this says treat this element like a table cell
vertical-align:middle; //now we can center vertically like in a TD
}
शैली लागू करें:
position: absolute;
top: 50%;
left: 0;
right: 0;
आपका टेक्स्ट इसकी लंबाई के बावजूद केंद्रित होगा।
div {
height: 90px;
line-height: 90px;
text-align: center;
border: 2px dashed #f69c55;
}
<div>
Hello World!
</div>
#parent
{
display:table;
}
#child
{
display:table-cell;
width:100%; //as large as its parent to center the text horizontally
text-align: center;
vertical-align:middle;//vertically align this element on its parent
}
<!DOCTYPE html>
<html>
<head>
<style>
.maindiv{
height:450px;
background:#f8f8f8;
display: -webkit-flex;
align-items: center;
justify-content: center;
}
p{
font-size:24px;}
</style>
</head>
<body>
<div class="maindiv">
<h1>Title</h1>
</div>
</body>
</html>
<div class="small-container">
<span>Text centered</span>
</div>
<style>
.small-container {
width:250px;
height:250px;
border:1px green solid;
text-align:center;
position: absolute;
top: 50%;
left: 50%;
-moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
}
.small-container span{
position: absolute;
top: 50%;
left: 50%;
-moz-transform: translateX(-50%) translateY(-50%);
-webkit-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
}
</style>