තිරස් අතට කේන්ද්‍රගත කරන්නේ කෙසේද <div>


4294

CSS භාවිතා කර <div>වෙනත් තැනක තිරස් අතට කේන්ද්‍රගත කරන්නේ කෙසේද <div>?

<div id="outer">
  <div id="inner">Foo foo</div>
</div>

13
එම විශිෂ්ට පිළිතුරු අතුරින්, මට අවධාරණය කිරීමට අවශ්‍ය වන්නේ ඔබ "#inner" ට "පළලක්" ලබා දිය යුතු බවයි, නැතහොත් එය "100%" වනු ඇති අතර එය දැනටමත් කේන්ද්‍රගත වී ඇත්දැයි ඔබට කිව නොහැක.
ජෝනි

2
ජෝමා ටෙක් මාව මෙහාට ගෙනාවා
බාබු බාබු

Ar බාබු බාබු: කුමන ආකාරයෙන්ද? කුමන සන්දර්භය තුළද?
පීටර් මෝර්ටෙන්සන්

Answers:


4735

ඔබට මෙම CSS අභ්‍යන්තරයට යෙදිය හැකිය <div>:

#inner {
  width: 50%;
  margin: 0 auto;
}

ඇත්ත වශයෙන්ම, ඔබ එය සැකසිය යුතු widthනැත 50%. අඩංගු පළලට වඩා අඩු ඕනෑම පළලක් <div>ක්‍රියා කරයි. මෙම margin: 0 autoසැබෑ කේන්ද්ර එහෙම කරනවා.

ඔබ ඉලක්ක කරන්නේ ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 8 (සහ පසුව), ඒ වෙනුවට මෙය තිබීම වඩා හොඳ විය හැකිය:

#inner {
  display: table;
  margin: 0 auto;
}

එය අභ්‍යන්තර මූලද්‍රව්‍ය කේන්ද්‍රය තිරස් අතට හරවන අතර එය නිශ්චිත සැකසුමකින් තොරව ක්‍රියා කරයි width.

මෙහි වැඩ කරන උදාහරණය:

#inner {
  display: table;
  margin: 0 auto;
  border: 1px solid black;
}

#outer {
  border: 1px solid red;
  width:100%
}
<div id="outer">
  <div id="inner">Foo foo</div>
</div>


12
සිරස් කේන්ද්‍රගත කිරීම සඳහා මම සාමාන්‍යයෙන් භාවිතා කරන්නේ "රේඛා-උස" (රේඛා-උස == උස). මෙය සරල හා කදිම නමුත් එය ක්‍රියාත්මක වන්නේ එක් පේළියේ අන්තර්ගත පෙළක් සමඟ පමණි :)
නිකොලස් ගුයිලූම්

98
IE මත හොඳින් ක්‍රියාත්මක වීමට ඔබේ HTML පිටුවේ! DOCTYPE ටැගය භාවිතා කළ යුතුය.
ෆේබියෝ

15
"පාවෙන: කිසිවක් නැත" එකතු කිරීම අවශ්‍ය විය හැකි බව සලකන්න. #inner සඳහා.
මර්ට් මර්ට්ස්

15
ඔබ ඉහළ සහ පහළ ආන්තිකයන් 0 ලෙස සකසා ඇති අතර එය සම්බන්ධයක් නොමැත. margin-left: auto; margin-right: autoමම හිතනවාට වඩා හොඳයි .
එමානුවෙල් ටූසරි

13
අවශ්‍ය නොවේ margin:0 auto: එය margin: <whatever_vertical_margin_you_need> autoදෙවනුව තිරස් ආන්තිකය විය හැකිය.
යකොව්ල්

1248

අභ්‍යන්තරයේ ස්ථාවර පළලක් සැකසීමට ඔබට අවශ්‍ය නැතිනම් ඔබට divමේ වගේ දෙයක් කළ හැකිය:

#outer {
  width: 100%;
  text-align: center;
}

#inner {
  display: inline-block;
}
<div id="outer">  
    <div id="inner">Foo foo</div>
</div>

එමඟින් අභ්‍යන්තරය divකේන්ද්‍රගත කළ හැකි පේළිගත මූලද්‍රව්‍යයක් බවට පත් කරයි text-align.


13
ඒ සඳහා @SabaAhang නිවැරදි කාරක රීති වනු float: none;සහ #inner උරුම වී ඇති නිසා බොහෝ විට පමණක් අවශ්ය වේ floatඑක්කෝ leftහෝ rightවෙන කොහේ හරි ඔබගේ CSS සිට.
ඩග් මැක්ලීන්

8
මෙය කදිම විසඳුමකි. යන්තම් ඒ ගැන මතක අභ්යන්තර කැමැත්ත උරුම තබා text-alignඔබ අභ්යන්තර ගේ සකස් කිරීමට අවශ්ය විය හැක එසේ text-alignකිරීමට initialහෝ වෙනත් වටිනාකම.
pmoleri

හොඳ විසඳුමක් මම හිතන්නේ
සිමොන්

381

හොඳම ප්රවේශයන් CSS 3 සමඟ ය .

කොටු ආකෘතිය:

#outer {
  width: 100%;
  /* Firefox */
  display: -moz-box;
  -moz-box-pack: center;
  -moz-box-align: center;
  /* Safari and Chrome */
  display: -webkit-box;
  -webkit-box-pack: center;
  -webkit-box-align: center;
  /* W3C */
  display: box;
  box-pack: center;
  box-align: center;
}

#inner {
  width: 50%;
}
<div id="outer">
  <div id="inner">Foo foo</div>
</div>

ඔබගේ භාවිතයට අනුව ඔබට box-orient, box-flex, box-directionගුණාංග ද භාවිතා කළ හැකිය .

නම්‍යතාවය :

#outer {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
}

ළමා අංග කේන්ද්‍රගත කිරීම ගැන වැඩිදුර කියවන්න

හා මෙම කොටුව ආදර්ශ හොඳම ප්රවේශය සිටින්නේ මන් ද යන්න පැහැදිලි :


25
ඔබ මෙම විසඳුම ක්‍රියාත්මක කිරීමට පෙර මෙම පිළිතුර කියවීමට වග බලා ගන්න .
cimmanon

4
මේ වන විට සෆාරි -webkitසඳහා නම්යශීලී පෙට්ටිය සඳහා කොඩි අවශ්‍ය වේ ( display: -webkit-flex;සහ -webkit-align-items: center;සහ -webkit-justify-content: center;)
ජෝශප් හැන්සන්

මම නිතරම සිතන්නේ කැබලි අක්ෂර භාවිතා කිරීම නරක පුරුද්දක් බවයි. උදාහරණයක් ලෙස මෙම කේතය සමඟ මම මගේ div: display: table; ආන්තිකය: ස්වයංක්‍රීය; සරල හා පහසුයි
සිමොන්

මමද නැත්නම් මෙම කේත ස්නිපටය කේන්ද්‍රගත නොවේද
මයික්

2020 දී අපට flexbox caniuse.com/#feat=flexbox
tonygatta

251

ඔබේ කොටස පික්සල් 200 ක් පළල යැයි සිතමු:

.centered {
  position: absolute;
  left: 50%;
  margin-left: -100px;
}

මව් මූලද්රව්යය ස්ථානගත කර ඇති බවට වග බලා ගන්න , එනම් සාපේක්ෂ, ස්ථාවර, නිරපේක්ෂ හෝ ඇලෙන සුළුය.

ඔබේ කොටසෙහි පළල ඔබ නොදන්නේ නම්, ඔබට transform:translateX(-50%);negative ණ ආන්තිකය වෙනුවට භාවිතා කළ හැකිය .

https://jsfiddle.net/gjvfxxdj/

සමග CSS Calc () , මෙම කේතය පවා සරල ලබා ගත හැක:


.centered {
  width: 200px;
  position: absolute;
  left: calc(50% - 100px);
}

මූලධර්මය තවමත් සමාන ය; අයිතමය මැදට දමා පළල සඳහා වන්දි ගෙවන්න.


මම මෙම විසඳුමට කැමති නැත, මන්ද අභ්‍යන්තර මූලද්‍රව්‍යය තිරයට වඩා පුළුල් වූ විට, ඔබට සම්පූර්ණ අංගය තිරස් අතට අනුචලනය කළ නොහැක. ආන්තිකය: 0 ස්වයංක්‍රීයව වඩා හොඳින් ක්‍රියා කරයි.
ඇලෝසෝ

ආන්තික-වමේ: ස්වයංක්‍රීය; ආන්තික-දකුණ: ස්වයංක්‍රීය; බ්ලොක් මට්ටමේ මූලද්‍රව්‍යයක් කේන්ද්‍රගත කරයි
කිල්ස්ක්‍රීන්

බොහෝ බ්ලොක් මට්ටමේ මූලද්‍රව්‍ය සඳහා පෙරනිමි පළල ස්වයංක්‍රීය වන අතර එය තිරයේ ඇති ප්‍රදේශය පුරවයි. කේන්ද්‍රගත වීමෙන් එය වම් පෙළගැස්මට සමාන ස්ථානයක තබයි. ඔබ එය දෘශ්‍ය කේන්ද්‍රගත වීමට කැමති නම් ඔබ පළලක් සැකසිය යුතුය (නැතහොත් උපරිම පළල ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 6 සහ ඊට පෙර සහය නොදක්වන නමුත් IE 7 එයට සහාය දක්වන්නේ ප්‍රමිති ප්‍රකාරයේදී පමණි).
killscreen

228

සිරස් සහ තිරස් අතට ගන්නේ කෙසේද යන්න පෙන්වීමට මම මෙම උදාහරණය නිර්මාණය කර ඇත්තෙමි . align

කේතය මූලික වශයෙන් මෙයයි:

#outer {
  position: relative;
}

හා...

#inner {
  margin: auto;
  position: absolute;
  left:0;
  right: 0;
  top: 0;
  bottom: 0;
}

centerඔබ ඔබේ තිරයේ ප්‍රමාණය වෙනස් කළ විට පවා එය පවතිනු ඇත .


12
මෙම ක්‍රමය සඳහා +1, මම ඒ සමඟ පිළිතුරු දීමට සූදානම්ව සිටියෙමි. ඔබ තිරස් අතට කේන්ද්‍රගත කිරීමට කැමති මූලද්‍රව්‍යයේ පළලක් ප්‍රකාශ කළ යුතු බව සලකන්න (හෝ සිරස් අතට කේන්ද්‍රගත වන්නේ නම් උස). මෙන්න සවිස්තරාත්මක පැහැදිලි කිරීමක්: codepen.io/shshaw/full/gEiDt . මූලද්‍රව්‍ය සිරස් සහ / හෝ තිරස් අතට කේන්ද්‍රගත කිරීමේ වඩාත් බහුකාර්ය සහ පුළුල් ලෙස සහාය දක්වන ක්‍රමවලින් එකක්.
stvnrynlds

6
බෙදීම තුළ ඔබට පෑඩින් භාවිතා කළ නොහැක, නමුත් ඔබට මිත්‍යාව ලබා දීමට අවශ්‍ය නම් එකම වර්ණයෙන් මායිමක් භාවිතා කරන්න.
Squirrl

මෙම ක්‍රමය ක්‍රියාත්මක වීමට නම්, ඔබ අභ්‍යන්තර
බෙදීම්වල

212

සමහර පෝස්ටර් වල CSS 3 කේන්ද්‍රය භාවිතා කරන ආකාරය සඳහන් කර display:boxඇත.

මෙම වාක්‍ය ඛණ්ඩය යල්පැන ඇති අතර එය තවදුරටත් භාවිතා නොකළ යුතුය. [ මෙම ලිපියද බලන්න ] .

එබැවින් මෙහි සම්පූර්ණත්වය සඳහා නම්යශීලී කොටු පිරිසැලසුම් මොඩියුලය භාවිතා කරමින් CSS 3 කේන්ද්‍රගත කිරීමේ නවතම ක්‍රමය වේ .

එබැවින් ඔබට සරල සලකුණු කිරීමක් තිබේ නම්:

<div class="box">
  <div class="item1">A</div>
  <div class="item2">B</div>
  <div class="item3">C</div>
</div>

... ඔබට ඔබේ අයිතම කොටුව තුළ කේන්ද්‍රගත කිරීමට අවශ්‍ය නම්, මව් මූලද්‍රව්‍යයේ (.box) ඔබට අවශ්‍ය දේ මෙන්න:

.box {
    display: flex;
    flex-wrap: wrap; /* Optional. only if you want the items to wrap */
    justify-content: center; /* For horizontal alignment */
    align-items: center; /* For vertical alignment */
}

නම්‍යශීලි කොටුව සඳහා පැරණි සින්ටැක්ස් භාවිතා කරන පැරණි බ්‍රව්සර් සඳහා ඔබට සහාය වීමට අවශ්‍ය නම් මෙන්න බැලීමට හොඳ තැනක්.


"සින්ටැක්ස් යල් පැන ගිය එකක්" යන්නෙන් ඔබ අදහස් කරන්නේ කුමක්ද?
කොංගා රාජු

6
ෆ්ලෙක්ස්බොක්ස් පිරිවිතර ප්‍රධාන සංශෝධන 3 ක් හරහා ගොස් ඇත. නවතම කෙටුම්පත 2012 සැප්තැම්බර් මාසයේ සිට වන අතර එය පෙර පැවති සියලුම කෙටුම්පත් නිල වශයෙන් අවලංගු කරයි. කෙසේ වෙතත්, බ්‍රව්සර් සහාය පැල්ලම් (විශේෂයෙන් පැරණි ඇන්ඩ්‍රොයිඩ් බ්‍රව්සර්): stackoverflow.com/questions/15662578/…
cimmanon

ජස්ටින් පොලිගේ අනුවාදය නොතිබූ විට මෙය ක්‍රෝම් හි මට වැඩ කළේය.
වර්න් ජෙන්සන්

"යුක්ති සහගත අන්තර්ගතය: කේන්ද්‍රය;" සිරස් පෙලගැස්ම සහ "පෙළගැස්වීමේ අයිතම: මැද;" තිරස් පෙළගැස්ම සඳහා?
Wouter Vanherck

3
OuWouterVanherck එය flex-directionවටිනාකම මත රඳා පවතී . එය 'පේළිය' නම් (පෙරනිමිය) - එවිට justify-content: center; තිරස් පෙළගැස්ම සඳහා වේ (මා පිළිතුරෙහි සඳහන් කළ පරිදි) එය 'තීරුව' නම් - justify-content: center;සිරස් පෙළගැස්ම සඳහා වේ.
ඩැනීල්ඩ්

140

ඔබට ස්ථාවර පළලක් සැකසීමට අවශ්‍ය නැතිනම් අමතර ආන්තිකය අවශ්‍ය නොවන්නේ නම්, display: inline-blockඔබේ අංගයට එක් කරන්න.

ඔයාට පාවිච්චි කරන්න පුළුවන්:

#element {
    display: table;
    margin: 0 auto;
}

3
ප්‍රදර්ශනයට සමාන අවශ්‍යතා: inline-block ද ( quirksmode.org/css/display.html )
montrealmike

මම මෙයද භාවිතා කළෙමි, නමුත් මට මීට display: table;පෙර කවදාවත් හමු නොවීය . එය කරන්නේ කුමක්ද?
මැට් ක්‍රීම්න්ස්

97

නොදන්නා උස හා පළල බෙදීමක් කේන්ද්‍රගත කිරීම

තිරස් හා සිරස් අතට. එය සාධාරණ ලෙස නවීන බ්‍රව්සර් සමඟ ක්‍රියා කරයි (ෆයර්ෆොක්ස්, සෆාරි / වෙබ්කිට්, ක්‍රෝම්, ඉන්ටර්නෙට් එක්ස්ප්ලෝරර් 10, ඔපෙරා, ආදිය)

.content {
  position: absolute;
  left: 50%;
  top: 50%;
  -webkit-transform: translate(-50%, -50%);
  transform: translate(-50%, -50%);
}
<div class="content">This works with any content</div>

තව දුරටත් කෝඩපෙන් හෝ ජේඑස්බින් මත ටින්කර් .


89

ඔබ එයට පළලක් ලබා නොදෙන්නේ නම් එය කේන්ද්‍රගත කළ නොහැක. එසේ නොමැති නම්, එය පෙරනිමියෙන් මුළු තිරස් අවකාශය ගනී.


49
ඔබ පළල නොදන්නේ නම්? අන්තර්ගතය ගතික බැවින් කියන්න?
gman

උපරිම පළල? ඒ ගැන කුමක් කිව හැකිද?

1
මම භාවිතා කරමි width: fit-content;සහ margin: 0 auto. මම හිතන්නේ මෙය නොදන්නා පළල සමඟ ක්‍රියා කළ හැකිය.
රික්


88

සකසන්න widthහා කට්ටලයක් margin-leftහා margin-rightකිරීමට auto. එය තිරස් සඳහා පමණි . ඔබට ක්‍රම දෙකම අවශ්‍ය නම්, ඔබ එය දෙයාකාරයෙන්ම කරනු ඇත. අත්හදා බැලීමට බිය නොවන්න; එය ඔබ කිසිවක් බිඳ දමන්නාක් මෙන් නොවේ.


62

මට මෑතකදී "සැඟවුණු" බෙදීමක් (එනම්, display:none; ) කේන්ද්‍රගත කිරීමට සිදු වූ අතර එය තුළ වගුගත කළ ආකෘතියක් පිටුවේ කේන්ද්‍රගත විය යුතුය. සැඟවුණු කොටස පෙන්වීම සඳහා මම පහත දැක්වෙන jQuery කේතය ලියා පසුව CSS අන්තර්ගතය ස්වයංක්‍රීයව ජනනය කරන ලද පළලට යාවත්කාලීන කර එය කේන්ද්‍රගත කිරීමට ආන්තිකය වෙනස් කරමි. (සබැඳිය ක්ලික් කිරීමෙන් දර්ශන ටොගලය අවුලුවන නමුත් මෙම කේතය ප්‍රදර්ශනය කිරීමට අවශ්‍ය නොවීය.)

සටහන: මම මෙම කේතය බෙදාගන්නේ, ගූගල් විසින් මෙම සිරස් පිටාර ගැලීමේ විසඳුම වෙත මා ගෙන ආ නිසා සහ සැඟවුණු මූලද්‍රව්‍යයන්ට පළලක් නොමැති අතර ඒවා දර්ශනය වූ පසු ප්‍රමාණය වෙනස් කළ නොහැක.

$(function(){
  $('#inner').show().width($('#innerTable').width()).css('margin','0 auto');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="inner" style="display:none;">
  <form action="">
    <table id="innerTable">
      <tr><td>Name:</td><td><input type="text"></td></tr>
      <tr><td>Email:</td><td><input type="text"></td></tr>
      <tr><td>Email:</td><td><input type="submit"></td></tr>
    </table>
  </form>
</div>


59

මම සාමාන්‍යයෙන් එය කරන්නේ නිරපේක්ෂ පිහිටීම භාවිතා කිරීමෙනි:

#inner{
    left: 0;
    right: 0;
    margin-left: auto;
    margin-right: auto;
    position: absolute;
}

මෙය ක්‍රියාත්මක කිරීම සඳහා පිටත අංශයට අමතර නිසි විධිවිධාන අවශ්‍ය නොවේ.


ඔබට කේන්ද්‍රීය බෙදීම් වලට වඩා වෙනත් බෙදීම් තිබේ නම් මෙය ක්‍රියා නොකරනු ඇත.
NoChance

54

ෆයර්ෆොක්ස් සහ ක්‍රෝම් සඳහා:

<div style="width:100%;">
  <div style="width: 50%; margin: 0px auto;">Text</div>
</div>

ඉන්ටර්නෙට් එක්ස්ප්ලෝරර්, ෆයර්ෆොක්ස් සහ ක්‍රෝම් සඳහා:

<div style="width:100%; text-align:center;">
  <div style="width: 50%; margin: 0px auto; text-align:left;">Text</div>
</div>

මෙම text-align:දේපල නවීන බ්රවුසරයන් සඳහා විකල්ප වේ, නමුත් එය උරුමය බ්රව්සර සහාය සඳහා Internet Explorer Quirks ප්රකාරය අවශ්ය වේ.


5
පෙළ පෙළගැස්වීමේ දේපල අවශ්‍ය නොවේ. එය සම්පූර්ණයෙන්ම අවශ්‍ය නොවේ.
ටූහිඩ් රහ්මාන්

පෙළ-පෙළගැස්ම ඇත්ත වශයෙන්ම එය IE ක්වික්ස් ප්‍රකාරයේදී වැඩ කිරීමට අවශ්‍ය වේ, එබැවින් පැරණි බ්‍රව්සර් සඳහා සහය දැක්වීම සඳහා කුඩා ප්‍රකාශනයක් එක් කිරීමට ඔබට අවශ්‍ය නැතිනම් එය එහි තබා ගන්න. (IE8 සමඟ IE8 රීති සහ IE7 රීති දෙකම පෙළ පෙළගැස්වීමකින් තොරව ක්‍රියා කරයි, එබැවින් සැලකිලිමත් වන්නේ IE6 සහ ඊට වැඩි අය පමණක් විය හැකිය)
හෙයිටූල්ස්


47

එක් මූලද්‍රව්‍යයක් සඳහා පළලක් සැකසීමකින් තොරව මේ සඳහා තවත් විසඳුමක් වන්නේ CSS 3 transformගුණාංගය භාවිතා කිරීමයි .

#outer {
  position: relative;
}

#inner {
  position: absolute;
  left: 50%;

  transform: translateX(-50%);
}

උපක්‍රමය නම් එය translateX(-50%)සකසයි#inner මූලද්‍රව්‍යය පළලෙන් සියයට 50 ක් වමට . සිරස් පෙලගැස්ම සඳහා ඔබට එකම උපක්‍රමය භාවිතා කළ හැකිය.

මෙන්න තිරස් හා සිරස් පෙලගැස්ම පෙන්වන ෆිදෙල් .

වැඩි විස්තර මොසිල්ලා සංවර්ධක ජාලයේ ඇත.


2
කෙනෙකුට විකුණුම් -webkit-transform: translate(-50%,0); -moz-transform: translate(-50%,0); -ms-transform: translate(-50%,0); -khtml-transform: translate(-50%,0); -o-transform: translate(-50%,0);
උපසර්ගද

45

තම බ්ලොග් අඩවියේ 'නොදන්නා දේ කේන්ද්‍රගත කිරීම' පිළිබඳ විශිෂ්ට ලිපියක් ලියූ ක්‍රිස් කොයියර් . එය බහුවිධ විසඳුම් වල වටපිටාවකි. මෙම ප්‍රශ්නයේ පළ නොකළ එකක් මම පළ කළෙමි. එයට ෆ්ලෙක්ස්බොක්ස් විසඳුමට වඩා බ්‍රව්සර් සහාය ඇත , ඔබ display: table;වෙනත් දේවල් බිඳ දැමිය හැකි ඒවා භාවිතා නොකරයි .

/* This parent can be any width and height */
.outer {
  text-align: center;
}

/* The ghost, nudged to maintain perfect centering */
.outer:before {
  content: '.';
  display: inline-block;
  height: 100%;
  vertical-align: middle;
  width: 0;
  overflow: hidden;
}

/* The element to be centered, can
   also be of any width and height */
.inner {
  display: inline-block;
  vertical-align: middle;
  width: 300px;
}

39

මම මෑතකදී ප්රවේශයක් සොයා ගත්තා:

#outer {
    position: absolute;
    left: 50%;
}

#inner {
    position: relative;
    left: -50%;
}

නිවැරදිව ක්‍රියා කිරීමට මූලද්‍රව්‍ය දෙකම එකම පළල විය යුතුය.


මෙම රීතිය #innerපමණක් සඳහා සකසන්න : #inner { position:relative; left:50%; transform:translateX(-50%); }. මෙය ඕනෑම පළලක් සඳහා ක්රියා කරයි.
ජෝස් රූයි සැන්ටොස්

33

උදාහරණයක් ලෙස, මෙම සබැඳිය සහ පහත දැක්වෙන කොටස බලන්න:

div#outer {
  height: 120px;
  background-color: red;
}

div#inner {
  width: 50%;
  height: 100%;
  background-color: green;
  margin: 0 auto;
  text-align: center; /* For text alignment to center horizontally. */
  line-height: 120px; /* For text alignment to center vertically. */
}
<div id="outer" style="width:100%;">
  <div id="inner">Foo foo</div>
</div>

ඔබට දෙමව්පියන් යටතේ දරුවන් විශාල ප්‍රමාණයක් සිටී නම්, ඔබේ CSS අන්තර්ගතය ෆෙඩෙල් හි මෙම උදාහරණයට සමාන විය යුතුය .

HTML අන්තර්ගත පෙනුම මෙයට කැමතියි:

<div id="outer" style="width:100%;">
    <div class="inner"> Foo Text </div>
    <div class="inner"> Foo Text </div>
    <div class="inner"> Foo Text </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> </div>
    <div class="inner"> Foo Text </div>
</div>

ඉන්පසු මෙම උදාහරණය ෆෙඩෙල් මත බලන්න .


28

තිරස් අතට පමණක් කේන්ද්‍රගත කිරීම

මගේ අත්දැකීම් අනුව, කොටුවක් තිරස් අතට කේන්ද්‍රගත කිරීමට ඇති හොඳම ක්‍රමය පහත සඳහන් ගුණාංග යෙදීමයි:

කන්ටේනරය:

  • තිබිය යුතුය text-align: center;

අන්තර්ගත කොටුව:

  • තිබිය යුතුය display: inline-block;

නිරූපණය:

.container {
  width: 100%;
  height: 120px;
  background: #CCC;
  text-align: center;
}

.centered-content {
  display: inline-block;
  background: #FFF;
  padding: 20px;
  border: 1px solid #000;
}
<div class="container">
  <div class="centered-content">
    Center this!
  </div>
</div>

මෙම ෆෙඩල් ද බලන්න !


තිරස් අතට හා සිරස් අතට කේන්ද්‍රගත කිරීම

මගේ අත්දැකීම් දී, කොටුව මධ්යස්ථානය වෙත හොඳම ක්රමය යන දෙකම සිරස්ව හා තිරස්ව අතිරේක රුවනයකි භාවිතා කරන අතර පහත සඳහන් ගුණ අයදුම් කිරීමට ය:

පිටත භාජනය:

  • තිබිය යුතුය display: table;

අභ්යන්තර භාජනය:

  • තිබිය යුතුය display: table-cell;
  • තිබිය යුතුය vertical-align: middle;
  • තිබිය යුතුය text-align: center;

අන්තර්ගත කොටුව:

  • තිබිය යුතුය display: inline-block;

නිරූපණය:

.outer-container {
  display: table;
  width: 100%;
  height: 120px;
  background: #CCC;
}

.inner-container {
  display: table-cell;
  vertical-align: middle;
  text-align: center;
}

.centered-content {
  display: inline-block;
  background: #FFF;
  padding: 20px;
  border: 1px solid #000;
}
<div class="outer-container">
  <div class="inner-container">
    <div class="centered-content">
      Center this!
    </div>
  </div>
</div>

මෙම ෆෙඩල් ද බලන්න !


27

පහසුම ක්‍රමය:

#outer {
  width: 100%;
  text-align: center;
}
#inner {
  margin: auto;
  width: 200px;
}
<div id="outer">
  <div id="inner">Blabla</div>
</div>


1
ඔබේ ෆෙඩල් සටහන් කර ඇති පරිදි, #inner හි පළල කට්ටලයක් තිබිය යුතුය.
මයිකල් ටෙරී

#outerපෙරනිමියෙන් සෑම විටම ඇති width:100%;පරිදි කිසිවක් අවශ්‍ය නොවේ . හා ද සියලු දී අවශ්ය නොවේ. <div>width:100%text-align:center
මොබාරක් අලි

27

අන්තර්ගතයේ පළල නොදන්නේ නම් ඔබට පහත ක්‍රමය භාවිතා කළ හැකිය . අපට මෙම මූලද්රව්ය දෙක ඇතැයි සිතමු:

  • .outer - සම්පූර්ණ පළල
  • .inner - පළල කට්ටලයක් නොමැත (නමුත් උපරිම පළල නියම කළ හැකිය)

මූලද්‍රව්‍යවල ගණනය කළ පළල පිළිවෙලින් පික්සල් 1000 ක් සහ පික්සල් 300 ක් යැයි සිතමු. පහත පරිදි ඉදිරියට යන්න:

  1. ඔතා .innerඇතුළත.center-helper
  2. සාදන්න .center-helperපේළිගත ; එය .innerපික්සල් 300 ක් පළල බවට පත් කරන ප්‍රමාණයට සමාන වේ .
  3. තල්ලුව .center-helperමවුපියන්ට සාපේක්ෂව 50% දකුණට ; මෙමඟින් එහි වම්පස පික්සල් 500 ක් වේ. පිටත.
  4. තල්ලුව .innerමවුපියන්ට සාපේක්ෂව 50% ක් වමට ; මෙමඟින් එහි වම්පස පික්සල් -150 ක් වේ. මධ්‍ය උපකාරකය යනු එහි වම්පස 500 - 150 = 350 පික්සල් වේ. පිටත.
  5. .outerතිරස් අනුචලන තීරුව වැළැක්වීම සඳහා සැඟවුණු පිටාර ගැලීම සකසන්න .

නිරූපණය:

body {
  font: medium sans-serif;
}

.outer {
  overflow: hidden;
  background-color: papayawhip;
}

.center-helper {
  display: inline-block;
  position: relative;
  left: 50%;
  background-color: burlywood;
}

.inner {
  display: inline-block;
  position: relative;
  left: -50%;
  background-color: wheat;
}
<div class="outer">
  <div class="center-helper">
    <div class="inner">
      <h1>A div with no defined width</h1>
      <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br>
          Duis condimentum sem non turpis consectetur blandit.<br>
          Donec dictum risus id orci ornare tempor.<br>
          Proin pharetra augue a lorem elementum molestie.<br>
          Nunc nec justo sit amet nisi tempor viverra sit amet a ipsum.</p>
    </div>
  </div>
</div>


26

ඔබට මේ වගේ දෙයක් කළ හැකිය

#container {
   display: table;
   width: <width of your container>;
   height: <height of your container>;
}

#inner {
   width: <width of your center div>;
   display: table-cell;
   margin: 0 auto;
   text-align: center;
   vertical-align: middle;
}

මෙය #innerසිරස් අතට පෙළගස්වනු ඇත. ඔබට අවශ්‍ය නැතිනම්, displayසහ vertical-alignගුණාංග ඉවත් කරන්න ;


25

මෙන්න ඔබට අවශ්‍ය කෙටිම ආකාරයෙන්.

JSFIDDLE

#outer {
    margin - top: 100 px;
    height: 500 px; /* you can set whatever you want */
    border: 1 px solid# ccc;
}

#inner {
    border: 1 px solid# f00;
    position: relative;
    top: 50 % ;
    transform: translateY(-50 % );
}

3
එය සිරස් අතට කේන්ද්‍රගත කරයි.
මයිකල් ටෙරී

22

පෙළ පෙළගැස්වීම: මැද

text-align: centerපේළිගත කොටුව තුළ පේළිගත අන්තර්ගතයන් යෙදීම කේන්ද්‍රගත වී ඇත. කෙසේ වෙතත් අභ්‍යන්තර අංශයට පෙරනිමියෙන් width: 100%ඔබට නිශ්චිත පළලක් සැකසිය යුතුය හෝ පහත සඳහන් එකක් භාවිතා කළ යුතුය:


ආන්තිකය: ස්වයංක්‍රීයව 0

භාවිතා margin: 0 autoකිරීම තවත් විකල්පයක් වන අතර එය පැරණි බ්‍රව්සර් අනුකූලතාවයට වඩාත් සුදුසු වේ. එය සමඟ ක්රියා කරයි display: table.


Flexbox

display: flexබ්ලොක් මූලද්‍රව්‍යයක් ලෙස හැසිරෙන අතර නම්‍යශීලී කොටුව ආකෘතියට අනුව එහි අන්තර්ගතය දක්වයි. එය සමඟ ක්රියා කරයි justify-content: center.

කරුණාකර සටහන් කරන්න: Flexbox බොහෝ බ්‍රව්සර් සමඟ අනුකූල වන නමුත් සියල්ලම නොවේ. බ්‍රව්සර් අනුකූලතාවයේ සම්පූර්ණ හා යාවත්කාලීන ලැයිස්තුවක් සඳහා මෙහි බලන්න .


පරිවර්තනය

transform: translateCSS දෘශ්‍ය හැඩතල ගැන්වීමේ ආකෘතියේ ඛණ්ඩාංක අවකාශය වෙනස් කිරීමට ඔබට ඉඩ සලසයි. එය භාවිතා කිරීමෙන් මූලද්‍රව්‍ය පරිවර්තනය කළ හැකිය, භ්‍රමණය කළ හැකිය, පරිමාණය කළ හැකිය. මධ්යස්ථානය වෙත තිරස් අතට එය අවශ්ය position: absoluteහා left: 50%.


<center> (අවලංගු කරන ලදි)

ටැගය <center>යනු HTML විකල්පයයි text-align: center. එය පැරණි බ්‍රව්සර් සහ බොහෝ නව ඒවා මත ක්‍රියා කරන නමුත් මෙම අංගය යල්පැන ඇති බැවින් එය වෙබ් ප්‍රමිතීන්ගෙන් ඉවත් කර ඇති බැවින් එය හොඳ භාවිතයක් ලෙස නොසැලකේ .



21

ෆ්ලෙක්ස් 97% කට වඩා බ්‍රව්සර් ආධාරක ආවරණයක් ඇති අතර පේළි කිහිපයක් තුළ මෙවැනි ගැටළු විසඳීමට හොඳම ක්‍රමය විය හැකිය:

#outer {
  display: flex;
  justify-content: center;
}

21

හොඳයි, සියලු තත්වයන්ට ගැලපෙන විසඳුමක් සොයා ගැනීමට මට හැකි විය, නමුත් ජාවාස්ක්‍රිප්ට් භාවිතා කරයි:

මෙන්න ව්යුහය:

<div class="container">
  <div class="content">Your content goes here!</div>
  <div class="content">Your content goes here!</div>
  <div class="content">Your content goes here!</div>
</div>

මෙන්න ජාවාස්ක්‍රිප්ට් ස්නිපටය:

$(document).ready(function() {
  $('.container .content').each( function() {
    container = $(this).closest('.container');
    content = $(this);

    containerHeight = container.height();
    contentHeight = content.height();

    margin = (containerHeight - contentHeight) / 2;
    content.css('margin-top', margin);
  })
});

ඔබට එය ප්‍රතිචාරාත්මක ප්‍රවේශයකින් භාවිතා කිරීමට අවශ්‍ය නම්, ඔබට පහත සඳහන් දෑ එකතු කළ හැකිය:

$(window).resize(function() {
  $('.container .content').each( function() {
    container = $(this).closest('.container');
    content = $(this);

    containerHeight = container.height();
    contentHeight = content.height();

    margin = (containerHeight - contentHeight) / 2;
    content.css('margin-top', margin);
  })
});

21

මෙම ක්‍රමය ද හොඳින් ක්‍රියාත්මක වේ:

div.container {
   display: flex;
   justify-content: center; /* For horizontal alignment */
   align-items: center;     /* For vertical alignment   */
}

අභ්යන්තරය සඳහා <div>, එකම කොන්දේසිය වන්නේ එය heightසහ widthඑහි බහාලුම් වලට වඩා විශාල නොවිය යුතුය.


19

මා සොයාගත් එක් විකල්පයක් තිබේ:

සෑම කෙනෙකුම භාවිතා කිරීමට පවසයි:

margin: auto 0;

නමුත් තවත් විකල්පයක් තිබේ. දෙමව්පියන් සඳහා මෙම දේපල සකසන්න. එය ඕනෑම වේලාවක පරිපූර්ණව ක්‍රියා කරයි:

text-align: center;

බලන්න, ළමයා යන්න කේන්ද්‍රය.

අවසාන වශයෙන් ඔබ වෙනුවෙන් CSS:

#outer{
     text-align: center;
     display: block; /* Or inline-block - base on your need */
}

#inner
{
     position: relative;
     margin: 0 auto; /* It is good to be */
}

පෙළ-පෙළගැස්වීම එහි බහාලුම සඳහා මවුපියන්ට නොව එහි බහාලුම්වල පෙළ පෙළගැස්වීම සඳහා වැඩ කරයි.
ලලිත් කුමාර් මෞර්ය

මම එය පරීක්‍ෂා කරමි, මට දරුවෙකු කේන්ද්‍රයට තැබීමේ ගැටලුව, ඔබට තවත් දරුවෙකු සිටින විට, වැඩි වාර ගණනක් ආන්තික විය යුතුය: 0 ස්වයංක්‍රීය අකුරු පිළිතුර, නමුත්, පෙළ-පෙළගැස්වීමේ මධ්‍යස්ථානය, දෙමව්පියන් මෙම දරුවා කේන්ද්‍රීය වුවද, මූලද්‍රව්‍යය වුවද පෙළ නොවන්න, පරීක්ෂා කර බලා කුමක් සිදුවේ දැයි බලන්න
Pnsadeghy

පෙළ පෙළට පෙළ පෙළ පමණක් පෙළගස්වන්න. ඔබ මේ මොහොතේ හරි නමුත් ඔබ විවිධ පළල සහ වර්ණය සහිත දරුවෙකු අඩංගු බහාලුම් CSS ලියන විට ඔබේ කේතය ක්‍රියා නොකරයි. නැවත එය පරීක්ෂා කරන්න !!!!
ලලිත් කුමාර් මෞර්ය

මෙම උදාහරණය jsfiddle.net/uCdPK/2 බලන්න, ඒ ගැන ඔබ සිතන්නේ කුමක්දැයි මට කියන්න !!!!!
ලලිත් කුමාර් මෞර්ය
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.