Контент div нь төвлөрсөн байна. CSS-ийн төвд зэрэгцүүлэх. Мөр эсвэл мөр-* элементийг төвд зэрэгцүүлэх


Зохиогчоос:Та бүхнийг манай блогийн хуудсанд дахин тавтай морилно уу. Өнөөдрийн нийтлэлд би блокууд болон тэдгээрийн агуулгад хоёуланд нь хэрэглэж болох янз бүрийн тэгшитгэх аргуудын талаар ярихыг хүсч байна. Ялангуяа css дээр блокуудыг хэрхэн зэрэгцүүлэх, мөн текстийн зэрэгцүүлэх.

Блокуудыг төв рүү чиглүүлэх

CSS-д блок төвлөрөхөд хялбар байдаг. Энэ бол олон хүмүүсийн хамгийн сайн мэддэг техник боловч би юуны түрүүнд энэ тухай ярихыг хүсч байна. Энэ нь үндсэн элементтэй харьцуулахад хэвтээ төвлөрсөн шугам гэсэн үг. Үүнийг яаж хийдэг вэ? Бидэнд сав байна гэж бодъё, бидний туршилтын сэдэв түүн дотор байна:

< div id = "wrapper" >

< div id = "header" > < / div >

< / div >

Энэ бол сайтын толгой хэсэг гэж бодъё. Энэ нь цонхны бүхэл бүтэн өргөнөөр сунадаггүй бөгөөд бид үүнийг голчлох хэрэгтэй. Бид ингэж бичдэг:

#толгой(

өргөн / хамгийн их өргөн: 800px;

захын зай: 0 автомат;

Бид яг эсвэл хамгийн их өргөнийг зааж өгөх хэрэгтэй бөгөөд дараа нь гол шинж чанарыг бичих хэрэгтэй - margin: 0 auto. Энэ нь бидний толгойн гадна талын зайг тогтоодог, эхний утга нь дээд ба доод захын зайг, хоёр дахь нь баруун, зүүн захын зайг тодорхойлдог. Автомат утга нь хөтчийг хоёр тал дахь дүүргэлтийг автоматаар тооцоолохыг хэлдэг бөгөөд ингэснээр элемент нь эцэг эх дээрээ яг төвлөрөх болно. Тав тухтай!

Текстийн зэрэгцүүлэх

Энэ нь бас маш энгийн техник юм. Бүх доторлогооны элементүүдийг зэрэгцүүлэхийн тулд та text-align шинж чанар болон түүний утгыг ашиглаж болно: зүүн, баруун, төв. Сүүлд нь текстийг голлодог бөгөөд энэ нь бидэнд хэрэгтэй зүйл юм. Та зургийг ижил аргаар зэрэгцүүлж болно, учир нь энэ нь анхдагчаар доторлогооны элемент юм.

Текстийг босоо байдлаар зэрэгцүүлнэ

Гэхдээ энэ нь илүү төвөгтэй юм. Анхдагч байдлаар, блок саванд текстийг босоо байдлаар хялбархан төвлөрүүлдэг энгийн, сайн мэддэг өмч байдаггүй. Гэсэн хэдий ч олон жилийн турш зохион бүтээгчид хэд хэдэн арга техникийг бий болгосон.

Блокны өндрийг дэвсгэр ашиглан тохируулна уу. Энэ арга нь өндрийг ашиглан тодорхой өндрийг тогтоох биш, харин дээд доод талд нь ижил байх ёстой дэвсгэр ашиглан зохиомлоор үүсгэх явдал юм. Дурын блок үүсгээд түүнд дараах шинж чанаруудыг бичье.

div( дэвсгэр: #ccc; дэвсгэр: 30px 0; )

div(

дэвсгэр: #ccc;

дүүргэх: 30px 0;

Арын дэвсгэр нь зүгээр л ирмэг болон дэвсгэрийг нүдээр харуулах явдал юм. Одоо блокийн өндөр нь эдгээр хоёр догол болон шугамаас бүрдэх бөгөөд бүгд дараах байдалтай байна.

Блокны шугамын өндрийг тодорхойлно. Хэрэв та текстийн нэг мөрийг зэрэгцүүлэх шаардлагатай бол энэ нь илүү зөв арга гэж би бодож байна. Үүний тусламжтайгаар та өндрийн шинж чанарыг ашиглан өндрийг хэвийн хэмжээнд бичиж болно. Үүний дараа тэрээр шугамын өндрийг бүхэлд нь блокийн өндөртэй адил тохируулах хэрэгтэй.

div(өндөр: 60px; шугамын өндөр: 60px; )

div(

өндөр: 60px;

шугамын өндөр: 60px;

Үр дүн нь дээрх зурагтай төстэй байх болно. Та дэвсгэр нэмсэн ч бүх зүйл ажиллах болно. Гэсэн хэдий ч зөвхөн нэг мөрөнд зориулагдсан. Хэрэв танд элементэд илүү текст хэрэгтэй бол энэ арга ажиллахгүй.

Блокыг хүснэгтийн нүд рүү хөрвүүлэх. Энэ аргын мөн чанар нь хүснэгтийн нүд нь элементийг босоо байдлаар төвлөрүүлдэг vertical-align: middle шинж чанартай байдаг. Үүний дагуу, энэ тохиолдолд блокыг дараах байдлаар тохируулах шаардлагатай.

div(дэлгэц: хүснэгт-нүд; босоо зэрэгцүүлэх: дунд; )

div(

дэлгэц: хүснэгт - нүд;

босоо - зэрэгцүүлэх: дунд;

Энэ арга нь сайн, учир нь та хүссэн хэмжээгээрээ төв рүүгээ зэрэгцүүлж болно. Гэхдээ манай div байрладаг блок руу display: table гэж бичих нь дээр, эс тэгвээс энэ нь ажиллахгүй байж магадгүй юм.

За, бид өнөөдрийн хамгийн сүүлийн техник дээр ирлээ - энэ бол блокуудын босоо байрлал юм. Дахин хэлэхэд, үүнд зориулж тусгайлан зориулсан өмч байхгүй, гэхдээ таны мэдэх ёстой хэд хэдэн заль мэх бий.

Догол мөрийг хувь болгон тохируулна уу. Хэрэв та эх элементийн өндрийг мэдэж, дотор нь өөр блок элементийг байрлуулбал хувийн дэвсгэрийг ашиглан үүнийг голчлон байрлуулж болно. Жишээлбэл, эцэг эх нь 600 пикселийн өндөртэй. Та 300 пикселийн өндөртэй блок байрлуулна. Та үүнийг голлуулахын тулд дээд ба доод хэсэгт хэр их ухрах хэрэгтэй вэ? Тус бүр нь 150 пиксел бөгөөд энэ нь эцэг эхийн өндрийн 25% юм.

Энэ арга нь хэмжээсүүд нь тооцоолол хийх боломжтой үед л тэгшлэх боломжийг олгодог. Хэрэв таны эцэг эх 887 пикселийн өндөртэй бол та юу ч үнэн зөв бичих боломжгүй, энэ нь аль хэдийн тодорхой болсон.

Хүснэгтийн нүдэнд элемент оруулах. Дахин хэлэхэд, хэрэв бид эх элементийг хүснэгтийн нүд болгон хувиргавал түүнд оруулсан блок автоматаар босоо байдлаар төвлөрөх болно. Үүнийг хийхийн тулд эцэг эх нь vertical-align: middle-г тохируулахад л хангалттай.

Хэрэв үүнээс гадна бид margin: 0 auto гэж бичвэл элемент нь хэвтээ төвлөрсөн болно!

CSS-ийн элементүүдийг төвлөрүүлэх нь CSS-ийн талаар гомдоллох хамгийн түгээмэл шалтгаануудын нэг юм. " Яагаад бүх зүйл ийм хэцүү байгаа юм бэ?" - тэд уурлаж байна. Асуудал нь үүнийг хийхэд хэцүү биш юм шиг санагдаж байна, гэхдээ элементүүдийг төвд байрлуулах олон арга байдаг бөгөөд зөвийг нь сонгоход нэлээд хэцүү байдаг.

Бүх боломжит шийдлүүдийг модны диаграммд байрлуулж, энэ нь бидний ажлыг хөнгөвчлөх болно гэж найдаж байна.

Тиймээс би элементийг голлох хэрэгтэй ...

Хэвтээ зэрэгцүүлэх

Блок түвшний эх элементийн доторх элементүүдийг төвлөрүүлэх нь маш энгийн:

Хүүхдийн төвд (текстийг зэрэгцүүлэх: төвд; )

Энэ нь inline , inline-block , inline-table , inline-flex гэх мэтт ажиллах болно.

Та зүүн-зүүн болон баруун захын шинж чанарыг автоматаар тохируулснаар блок элементийг голчлон байрлуулж болно (энэ нь бас өргөнтэй байх ёстой, эс тэгвээс элемент нь агуулгын өргөнийг бүхэлд нь эзлэх бөгөөд зэрэгцүүлэх шаардлагагүй болно) . Ихэнхдээ энэ нь богино хугацааны шинж чанарыг ашиглан хийгддэг, жишээ нь:

Центр-me (зээв: 0 автомат; )

Энэ нь блок элемент эсвэл түүний эцэг эх дээр ямар өргөнийг тохируулснаас үл хамааран ажиллах болно.

Ингэснээр та төвд зэрэгцүүлсэн элементийг ороож чадахгүй гэдгийг анхаарна уу. Гэсэн хэдий ч үүнд бас нэгэн заль мэх бий.

Олон блок элементийн төвд зэрэгцүүлэх

Хэрэв та нэг мөрөнд хэвтээ болон төвлөрсөн хоёр буюу түүнээс дээш блок элемент байгаа бол тэдгээрийн дэлгэцийн төрлийг өөрчлөх нь дээр. Дэлгэцийн төрлийг inline-block болгон өөрчлөх жишээ болон Flexbox-ын жишээг доор харуулав.

Хэрэв эдгээр олон блокууд өөр өөр мөрөнд байгаа бол автомат доголын техник нь гайхалтай хэвээр байна:

Босоо зэрэгцүүлэх

CSS дээр босоо төвийг тохируулах нь арай илүү төвөгтэй юм.

Мөр эсвэл мөр-* элементийг төвд зэрэгцүүлэх

Элементийг нэг мөртэй зэрэгцүүлэх

Заримдаа мөр/текстийн элементүүд нь padding-top болон padding-bottom шинж чанаруудын хувьд ижил утгатай байдаг тул зүгээр л голчлон байрлуулж болно.

Холбоос (дээр нь дүүргэх: 30 пиксел; доод хэсэг: 30 пиксел; )

Хэрэв ямар нэг шалтгааны улмаас бөглөх нь сонголт биш, гэхдээ та зарим текстийг голлуулах гэж оролдож байгаа бөгөөд үүнийг өөр зүйлээр ороохгүй гэдгийг баттай мэдэж байгаа бол өмчийн шугамыг тохируулах бяцхан заль мэх бий. -элементийн өндрийн утгатай тэнцүү өндөр.

Текст-трик (өндөр: 100px; шугамын өндөр: 100px; хоосон зай: nowrap; )

Олон мөр элементийг зэрэгцүүлэх

Дээд болон доод талд тэгш дүүргэх нь олон мөрт элементүүдэд төвлөрсөн эффект үүсгэж болох боловч хэрэв энэ нь ажиллахгүй бол текст агуулсан элемент нь хүснэгтийн нүд эсвэл үүнийг хийхээр тодорхой тохируулагдсан байж болзошгүй. CSS ашиглах арга. Энэ тохиолдолд vertical-align шинж чанар нь шугам доторх элементүүдийн зэрэгцүүлэлтийг хэрхэн зохицуулдгаас ялгаатай нь үүнийг зохицуулдаг.

Хэрэв энэ нь ширээ шиг зүйл бол та Flexbox ашиглаж болох уу? Нэг Flex элементийг Flex контейнер дотор хялбархан төвлөрүүлж болно.

Flex-төв-босоо (дэлгэц: уян хатан; justify-content: төв; уян хатан чиглэл: багана; өндөр: 400px; )

Энэ нь савны өндөр (px, % гэх мэт) байх үед энэ нь үнэн хэрэгтээ хамааралтай гэдгийг санаарай.

Дээрх хоёр аргыг ашиглах боломжгүй бол та "сүнс элемент" техникийг ашиглаж болно, үүнд 100% өндөртэй хуурамч элементийг савны дотор байрлуулж, түүний төвд босоо байдлаар байрлуулна.

Ghost-center ( байрлал: харьцангуй; ) .ghost-center::fore ( агуулга: " "; дэлгэц: inline-block; өндөр: 100%; өргөн: 1%; босоо зэрэгцүүлэх: дунд; ) .ghost-center p (дэлгэц: inline-block; босоо зэрэгцүүлэх: дунд; )

Блок элементийн төвд зэрэгцүүлнэ

Мэдэгдэж буй өндөртэй элементийг зэрэгцүүлнэ

Ихэнх тохиолдолд бид өндрийг нь мэдэхгүй, олон шалтгааны улмаас: өргөн нь өөрчлөгдвөл текстийг форматлаж, өндрийг нь өөрчилж болно. Өөр өөр текстийн хэв маяг нь өндрийг өөрчилж болно. Өөр өөр үсгийн хэмжээ нь өндрийг өөрчилж болно. Тогтмол харьцаатай зураг гэх мэт элементүүдийн хэмжээг өөрчлөх үед өндрийг өөрчлөх боломжтой.

Гэхдээ хэрэв та элементийн өндрийг мэдэж байвал төвд дараах байдлаар зэрэгцүүлж болно.

Эцэг эх (байрлал: харьцангуй; ) .хүүхэд (байрлал: үнэмлэхүй; дээд: 50%; өндөр: 100 пиксел; захын дээд: -50 пиксел; /* хайрцагны хэмжээг ашиглаагүй бол дүүргэх болон хүрээг харгалзан үзнэ: border-box; */ )

Үл мэдэгдэх өндөртэй элементийг тэгшлэх

Хэдийгээр та элементийн өндрийг мэдэхгүй байсан ч түүнийг эцэг эхийнх нь өндрийн 50% хүртэл түлхэж, дараа нь өөрийн өндрийн 50% хүртэл өсгөж болно.

Эцэг эх (байрлал: харьцангуй; ) .хүүхэд (байрлал: үнэмлэхүй; дээд: 50%; хувиргах: translateY(-50%); )

Бяцхан гайхах зүйл биш, үүнийг Flexbox ашиглан маш амархан хийж болно.

Эцэг эх (дэлгэц: уян хатан; уян хатан чиглэл: багана; зөвт-агуулга: төв; )

Хэвтээ ба босоо байрлал

Та төгс төвлөрсөн элементүүдийг олж авахын тулд дээр дурдсан аргуудыг нэгтгэж болно. Гэхдээ ихэвчлэн тэдгээрийг 4 бүлэгт хувааж болно.

Тогтмол өргөн ба өндөртэй элементийг тэгшлэх

Элементийн үнэмлэхүй байрлалыг 50%/50% болгосны дараа энэ өргөн ба өндрийн талтай тэнцэх сөрөг тэмдэглэгээг ашиглах нь элементийг голлох болно. Энэ арга нь хөтчүүд хоорондын нэлээд сайн дэмжлэгтэй:

Эцэг эх (байрлал: харьцангуй; ) .хүүхэд (өргөн: 300px; өндөр: 100px; дэвсгэр: 20px; байрлал: үнэмлэхүй; дээд: 50%; зүүн: 50%; захын зай: -70px 0 0 -170px; )

Өргөн, өндөр нь үл мэдэгдэх элементийг зэрэгцүүлж байна

Хэрэв та элементийн өргөн эсвэл өндрийг мэдэхгүй бол та хувиргах шинж чанарыг ашиглаж, 50% сөрөг орчуулгыг хоёр чиглэлд (элементийн одоогийн өргөн/өндөрөөс хамаарч) төв рүү чиглүүлэх боломжтой.

Эцэг эх (байрлал: харьцангуй; ) .хүүхэд (байрлал: үнэмлэхүй; дээд: 50%; зүүн: 50%; хувиргах: орчуулах(-50%, -50%); )

Flexbox ашиглан элементийг тэгшлэх

Flexbox ашиглан элементийг голлуулахын тулд та хоёр голын шинж чанарыг ашиглах хэрэгтэй:

Эцэг эх (дэлгэц: уян хатан; зөвт-агуулга: төв; зэрэгцүүлэх-зүйл: төв; )

CSS сүлжээ ашиглан элементийг зэрэгцүүлэх

Энэ бол зүгээр л нэг элемент дээр ажиллах жижиг заль (Лэнс Янссен бичсэн) юм:

Үндсэн хэсэг, html (өндөр: 100%; дэлгэц: тор; ) span ( /* төвлөрсөн зүйл */ зах: автомат; )

Дүгнэлт

Одоо та CSS-д юу ч төвлөрч болно.

Өдрийн мэнд, энэ нийтлэлийн захиалагчид болон уншигчид. Өнөөдөр би дэлгэрэнгүй тайлбарлаж, CSS дээр текстийг хэрхэн голлуулахыг танд хэлэхийг хүсч байна. Өмнөх зарим нийтлэлд би энэ сэдвийг шууд бусаар хөндсөн тул та энэ чиглэлээр тодорхой мэдлэгтэй болсон.

Гэсэн хэдий ч, энэ нийтлэлд би объектыг тэгшлэх янз бүрийн аргуудын талаар танд хэлэх болно, мөн догол мөрийг хэрхэн догол, улаан шугамаар зурах талаар тайлбарлах болно. Тиймээс материалыг сурч эхэлцгээе!

HTML ба түүний үр удам
ба тэгшлэх

Энэ аргыг каскадын загварын хуудасны хэрэгслээр сольсон тул бараг ашигладаггүй. Гэсэн хэдий ч ийм шошго байдаг гэдгийг мэдэх нь таныг гэмтээхгүй.

Баталгаажуулалтын хувьд (энэ нэр томъёог "" нийтлэлд дэлгэрэнгүй тайлбарласан болно) html тодорхойлолт нь өөрөө ашиглахыг буруушааж байна. < төв>, учир нь хүчинтэй байхын тулд шилжилтийг ашиглах шаардлагатай DOCTYPE>.

Энэ төрөлхориглосон элементүүдийг нэвтрүүлэх боломжийг олгодог.

ТӨВ

Одоо атрибут руу шилжье тэгшлэх. Энэ нь объектуудын хэвтээ байрлалыг тохируулж, шошгоны мэдэгдлийн дараа таарна. Ерөнхийдөө үүнийг контентыг зүүн тийш зэрэгцүүлэхэд ашиглаж болно ( зүүн), баруун ирмэг дагуу ( зөв), төвтэй ( төв) ба текстийн өргөнөөр ( зөвтгөх).

Доор би зураг, догол мөрийг төвд байрлуулах жишээг өгөх болно.

тэгшлэх

Энэ контент нь төвлөрсөн байх болно.

Зургийн хувьд бидний шинжилж буй шинж чанар нь арай өөр утгатай болохыг анхаарна уу.

Миний ашигласан жишээн дээр тэгшлэх =дунд". Үүний ачаар өгүүлбэр нь зургийн дунд тодорхой байрласан байхаар дүрсийг зэрэгцүүлсэн.

Css дээр төвлөрөх хэрэгслүүд

Блок, текст болон график контентыг зэрэгцүүлэхэд зориулагдсан CSS шинж чанаруудыг илүү олон удаа ашигладаг. Энэ нь юуны түрүүнд хэв маягийг хэрэгжүүлэхэд хялбар, уян хатан байдагтай холбоотой юм.

Тиймээс текстийг төвлөрүүлэх анхны шинж чанараас эхэлье - энэ бол текст-тэгшлэх.

Энэ нь align in -тэй ижил аргаар ажилладаг. Түлхүүр үгсийн дотроос та ерөнхий жагсаалтаас нэгийг нь сонгох эсвэл өвөг дээдсийн шинж чанарыг өвлөн авч болно ( өвлөн авах).

Css3 дээр та өөр 2 параметрийг тохируулах боломжтой гэдгийг тэмдэглэхийг хүсч байна: эхлэх- текст бичих дүрмээс хамааран (баруунаас зүүн тийш эсвэл эсрэгээр), зүүн эсвэл баруун тийш зэрэгцүүлэх (зүүн эсвэл баруун ажилтай төстэй) ба Төгсгөл– эхлэлийн эсрэг тал (текстийг зүүнээс баруун тийш бичихэд баруун, баруунаас зүүн тийш бичихэд – зүүн талд үйлчилнэ).

текстийг зэрэгцүүлэх

Баруун талд өгүүлбэр

Төгсгөлийг ашигласан өгүүлбэр

Би та нарт нэг жижиг заль мэхийн талаар хэлье. Утга сонгохдоо зөвтгөхсүүлчийн мөр нь доороос нь тааламжгүй унжиж болно. Жишээлбэл, төвд байрлуулахын тулд та үл хөдлөх хөрөнгийг ашиглаж болно текстийг хамгийн сүүлд зэрэгцүүлэх.

Сайтын контент эсвэл хүснэгтийн нүднүүдийг босоо байдлаар зэрэгцүүлэхийн тулд өмчийг ашиглана уу босоо зэрэгцүүлэх. Доор би элементийн гол түлхүүр үгсийг тайлбарласан.

Түлхүүр үг Зорилго
суурь Суурь шугам гэж нэрлэгддэг өвөг дээдсийн шугам руу зэрэгцүүлэхийг зааж өгнө. Хэрэв өвөг дээдсийн объект ийм шугамгүй бол доод хилийн дагуу тэгшлэнэ.
дунд Хувирсан объектын дунд хэсэг нь үндсэн элементийн өндөр шалыг нэмсэн суурь шугамтай нийцсэн байна.
доод Сонгосон агуулгын доод хэсэг нь доор байрлах объектын доод хэсэгт тохируулагдана.
дээд Доод талтай төстэй, гэхдээ объектын дээд хэсэгтэй.
мундаг Тэмдэгтийг дээд тэмдэгт болгоно.
дэд Элементийг доод тэмдэгт болгоно.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 босоо зэрэгцүүлэх
C INЭ ТТУХАЙTO

босоо зэрэгцүүлэх

C INЭ ТТУХАЙTO

Догол

Эцэст нь бид догол мөрний догол мөрөнд ирлээ. CSS хэл нь тусгай өмчийг ашигладаг текст догол.

Түүний тусламжтайгаар та улаан шугам, цухуйсан хэсгийг хоёуланг нь хийж болно (та сөрөг утгыг зааж өгөх хэрэгтэй).

текст догол

Улаан шугам үүсгэхийн тулд та зөвхөн нэг параметрийг мэдэх хэрэгтэй.

Энэ бол текст доголын энгийн шинж чанар юм.

Зохион байгуулалтын асуудалтай тулгарсан та бүхний олонхи нь элементүүдийг босоо байдлаар тэгшлэх шаардлагатай тулгарсан бөгөөд элементийг төвд байрлуулахад гарч болох бэрхшээлийг мэддэг байсан гэж би бодож байна.

Тийм ээ, CSS-д босоо байрлалд тохируулах тусгай олон утга бүхий босоо тэнхлэгийн шинж чанар байдаг. Гэсэн хэдий ч бодит байдал дээр энэ нь санаснаар огт ажиллахгүй байна. Үүнийг ойлгохыг хичээцгээе.


Дараах аргуудыг харьцуулж үзье. Дараахыг ашиглан тэгшлэх:

  • ширээ,
  • догол,
  • шугамын өндөр
  • сунах,
  • сөрөг маржин,
  • хувиргах
  • псевдо элемент
  • flexbox.
Үүнийг харуулахын тулд дараах жишээг авч үзье.

Хоёр div элемент байдаг бөгөөд тэдгээрийн нэг нь нөгөөгийн дотор байрладаг. Тэдэнд харгалзах ангиудыг нь өгье - гадна болон дотоод.


Сорилт нь дотоод элементийг гадна талын элементийн төвтэй уялдуулах явдал юм.

Нэгдүгээрт, гадаад болон дотоод блокуудын хэмжээсийг авч үзье мэдэгдэж байна. Дүрмийн дэлгэцийг дотоод элементэд inline-block, мөн text-align: center болон vertical-align: дунд хэсгийг гадна элемент рүү оруулъя.

Зэрэгцүүлэх нь зөвхөн шугаман эсвэл доторлогоотой дэлгэцийн горимтой элементүүдэд хамаарна гэдгийг санаарай.

Блокуудын хэмжээ, дэвсгэр өнгө зэргийг тохируулж, тэдгээрийн хил хязгаарыг харцгаая.

Гаднах (өргөн: 200px; өндөр: 200px; текстийг зэрэгцүүлэх: төвд; босоогоор зэрэгцүүлэх: дунд; дэвсгэр өнгө: #ffc; ) .дотоод (дэлгэц: inline-block; өргөн: 100px; өндөр: 100px; дэвсгэр өнгө : #fcc;)
Загваруудыг хэрэглэсний дараа бид дотоод блок нь хэвтээ байрлалтай, гэхдээ босоо байдлаар биш байгааг харах болно.
http://jsfiddle.net/c1bgfffq/

Яагаад ийм болсон бэ?Гол нь босоо тэнхлэгийн шинж чанар нь тэгшитгэлд нөлөөлдөг агуулга нь биш харин элемент өөрөө(хүснэгтний нүдэнд хэрэглэхээс бусад тохиолдолд). Тиймээс энэ шинж чанарыг гаднах элементэд хэрэглэх нь юу ч үүсгэсэнгүй. Түүнчлэн, энэ шинж чанарыг дотоод элементэд ашиглах нь юу ч хийхгүй, учир нь inline-блокууд нь зэргэлдээх блокуудтай харьцуулахад босоо байрлалтай байдаг бөгөөд манай тохиолдолд нэг шугаман блок байдаг.

Энэ асуудлыг шийдэх хэд хэдэн арга техник байдаг. Доор бид тус бүрийг нарийвчлан авч үзэх болно.

Хүснэгт ашиглан тэгшлэх

Оюун санаанд орж ирдэг хамгийн эхний шийдэл бол гаднах блокыг нэг эсийн хүснэгтээр солих явдал юм. Энэ тохиолдолд тохируулга нь нүдний агуулгад, өөрөөр хэлбэл дотоод блокт хэрэглэгдэх болно.


http://jsfiddle.net/c1bgfffq/1/

Энэхүү шийдлийн илэрхий сул тал нь семантик талаас нь авч үзвэл хүснэгтүүдийг зэрэгцүүлэхэд ашиглах нь буруу юм. Хоёрдахь сул тал нь хүснэгт үүсгэхийн тулд гаднах блокийн эргэн тойронд өөр элемент нэмэх шаардлагатай байдаг.

Эхний хасахыг хүснэгт болон td хаягуудыг div-ээр сольж, CSS дээр хүснэгтийг харуулах горимыг тохируулснаар хэсэгчлэн арилгаж болно.


.гадаад боодол (дэлгэц: хүснэгт; ) .гадаад (дэлгэц: хүснэгт-нүд; )
Гэсэн хэдий ч гаднах блок нь бүх үр дагавартай хүснэгт хэвээр байх болно.

Догол ашиглан зэрэгцүүлэх

Дотор болон гадна блокуудын өндөр нь мэдэгдэж байгаа бол дараах томъёог ашиглан дотоод блокийн босоо догол мөрийг ашиглан тэгшитгэлийг тохируулж болно: (H гадна - H дотор) / 2.

Гаднах (өндөр: 200px; ) .дотоод (өндөр: 100px; захын зай: 50px 0; )
http://jsfiddle.net/c1bgfffq/6/

Уусмалын сул тал нь хоёр блокийн өндрийг мэддэг хязгаарлагдмал тооны тохиолдолд л хэрэглэх боломжтой байдаг.

Шугамын өндрийг ашиглан зэрэгцүүлнэ

Хэрэв та дотоод блок нь текстийн нэгээс илүүгүй мөрийг эзлэх ёстой гэдгийг мэдэж байгаа бол та line-height шинж чанарыг ашиглаж, гадна талын блокийн өндөртэй тэнцүү болгож болно. Дотор блокийн агуулгыг хоёр дахь мөрөнд оруулах ёсгүй тул хоосон зайг нэмж оруулахыг зөвлөж байна: nowrap болон overflow: далд дүрмүүд.

Гаднах (өндөр: 200px; шугамын өндөр: 200px; ) .дотоод (цагаан зай: nowrap; халих: далд; )
http://jsfiddle.net/c1bgfffq/12/

Хэрэв та дотоод блокийн шугамын өндрийн утгыг дахин тодорхойлж, мөн дэлгэцийн доторх блок, босоогоор зэрэгцүүлэх: дунд дүрмүүдийг нэмбэл энэ аргыг олон мөрт текстийг зэрэгцүүлэхэд ашиглаж болно.

Гаднах ( өндөр: 200 пиксел; шугамын өндөр: 200 пиксел; ) .дотоод ( шугамын өндөр: хэвийн; дэлгэц: шугаман блок; босоогоор зэрэгцүүлэх: дунд; )
http://jsfiddle.net/c1bgfffq/15/

Энэ аргын сул тал нь гаднах блокийн өндрийг мэддэг байх ёстой.

"сунгах" ашиглан зэрэгцүүлэх

Энэ аргыг гаднах блокийн өндөр нь тодорхойгүй, харин дотоод блокийн өндөр нь мэдэгдэж байгаа үед хэрэглэж болно.

Үүнийг хийхийн тулд танд хэрэгтэй:

  1. гадаад блоктой харьцангуй байрлал, дотоод блоктой үнэмлэхүй байрлал тогтоох;
  2. дүрэм дээд хэсэгт нэмнэ: 0 ба доод: 0 дотоод блок, үүний үр дүнд энэ нь гадна блок бүхэлд нь өндөрт сунах болно;
  3. дотоод блокийн босоо дэвсгэрийг автоматаар тохируулна.
.гадаах (байрлал: харьцангуй; ) .дотоод (өндөр: 100px; байрлал: үнэмлэхүй; дээд: 0; доод: 0; зах: автомат 0; )
http://jsfiddle.net/c1bgfffq/4/

Энэ аргын цаад санаа нь сунгасан ба туйлын байрлалтай блокийн өндрийг тохируулснаар хөтөч автоматаар тохируулсан бол босоо дэвсгэрийг тэнцүү харьцаагаар тооцоолоход хүргэдэг.

Сөрөг захын дээд талд зэрэгцүүлэх

Энэ арга нь өргөн тархсан бөгөөд маш их хэрэглэгддэг. Өмнөхтэй адил гаднах блокийн өндөр нь тодорхойгүй, харин дотор талынх нь өндөр нь мэдэгдэж байгаа тохиолдолд ашиглагддаг.

Та гадаад блокыг харьцангуй байрлалд, дотоод блокыг үнэмлэхүй байрлалд тохируулах хэрэгтэй. Дараа нь та дотоод блокыг гадна талын блокийн өндрийн хагасаар доошлуулах хэрэгтэй: 50%, өөрийн өндрийн хагасаар дээш өргөх хэрэгтэй margin-top: -H inner / 2.

Гаднах (байрлал: харьцангуй; ) .дотоод (өндөр: 100px; байрлал: үнэмлэхүй; дээд: 50%; захын дээд: -50px; )
http://jsfiddle.net/c1bgfffq/13/

Энэ аргын сул тал нь дотоод нэгжийн өндрийг мэддэг байх ёстой.

Өөрчлөлттэй нийцүүлэх

Энэ арга нь өмнөхтэй төстэй боловч дотоод нэгжийн өндөр нь тодорхойгүй үед хэрэглэж болно. Энэ тохиолдолд сөрөг пикселийн дэвсгэрийг тохируулахын оронд та transform шинж чанарыг ашиглаж, translateY функц болон -50% -ийн утгыг ашиглан дотоод блокыг дээш хөдөлгөж болно.

Гадаад ( байрлал: харьцангуй; ) .дотоод ( байрлал: үнэмлэхүй; дээд: 50%; хувиргах: translateY(-50%); )
http://jsfiddle.net/c1bgfffq/9/

Өмнөх аргад яагаад утгыг хувиар тогтоох боломжгүй байсан бэ? Хувийн ахиу утгыг эх элементтэй харьцуулан тооцдог тул 50% нь гадна талын хайрцгийн өндрийн тал хувь байх бөгөөд бид дотоод хайрцгийг өөрийн өндрийн хагас хүртэл өсгөх шаардлагатай болно. Трансформацийн өмч нь үүнд тохиромжтой.

Энэ аргын сул тал нь дотоод нэгж нь үнэмлэхүй байрлалтай бол үүнийг ашиглах боломжгүй юм.

Flexbox-той нийцүүлэх

Босоо тэгшлэх хамгийн орчин үеийн арга бол Flexible Box Layout (Flexbox гэгддэг) ашиглах явдал юм. Энэ модуль нь хуудсан дээрх элементүүдийн байршлыг уян хатан байдлаар хянах боломжийг олгодог бөгөөд тэдгээрийг бараг хаана ч байрлуулах боломжтой. Flexbox-ийн төвийг тохируулах нь маш энгийн ажил юм.

Гаднах блокыг харуулахын тулд тохируулах шаардлагатай: flex болон дотоод блок нь margin: auto . Тэгээд бүгд байна! Үзэсгэлэнтэй, тийм үү?

Гаднах (дэлгэц: уян хатан; өргөн: 200 пиксел; өндөр: 200 пиксел; ) .дотоод ( өргөн: 100 пиксел; зах: автомат; )
http://jsfiddle.net/c1bgfffq/14/

Энэ аргын сул тал нь Flexbox-ийг зөвхөн орчин үеийн хөтчүүд дэмждэг.

Би аль аргыг сонгох ёстой вэ?

Та асуудлын мэдэгдлээс эхлэх хэрэгтэй:
  • Текстийг босоо байдлаар зэрэгцүүлэхийн тулд босоо догол эсвэл шугамын өндөр шинж чанарыг ашиглах нь дээр.
  • Мэдэгдэж буй өндөртэй туйлын байрлалтай элементүүдийн хувьд (жишээлбэл, дүрс) сөрөг захын дээд шинж чанартай арга нь хамгийн тохиромжтой.
  • Илүү төвөгтэй тохиолдлуудад, блокийн өндөр нь тодорхойгүй үед та псевдо элемент эсвэл хувиргах шинж чанарыг ашиглах хэрэгтэй.
  • Хэрэв та IE хөтчийн хуучин хувилбарыг дэмжих шаардлагагүй тул азтай бол мэдээж Flexbox ашиглах нь дээр.

Бид блокийн элементүүдийн тохируулгад дүн шинжилгээ хийдэг CCS. Бид хэд хэдэн хэсгийг төвд байрлуулна DIVэсвэл Л.Иэлементүүд. Би ихэнх тохиолдолд хэд хэдэн сонголтыг санал болгож байна.

Энэ нийтлэл нь бүх тохируулгын сонголтуудыг жагсааж, хаа нэгтээ байгаа зүйлийг дахин бичихийг зорьдоггүй. Яагаад гэдгийг би санахгүй байна, гэхдээ санал болгож буй сонголтуудад ихэвчлэн сэтгэл хангалуун бус байдаг. Тогтмол блокууд байсан, эсвэл дасан зохицох зохион байгуулалтын явцад бүх зүйл нурсан эсвэл бусад дутагдалтай байсан.

Заримдаа төв рүү чиглүүлэхийн тулд хэд хэдэн шинж чанарыг нэмэхэд хангалттай бөгөөд танд төвөгтэй зүйл хэрэггүй болно. Жишээлбэл, би ч гэсэн.

Төв хэсэгт блокуудыг тэгшлэх дасан зохицох хэд хэдэн сонголтыг доор харуулав би хэрэглэдэгтэдний вэбсайтууд дээр. Хэрэв эхнийх нь нэлээд түгээмэл бол бусад аргуудыг Интернетэд яг ийм байдлаар тайлбарлахгүй байх магадлалтай.

Сонголт 1

Бүх блокуудыг хуудасны төв рүү энгийн зэрэгцүүлэх.

Төвлүүлье UL агуулга 4 элементтэй Л.Иблокт байгаа DIVангитай сав.






Энэ тохиолдолд CSS-д дараах дүрмүүд хангалттай.

Контейнер (
өргөн: 100%;
}

Контейнер ul (
текстийг зэрэгцүүлэх: төв;
жагсаалтын хэв маяг: байхгүй;
}

Контейнер li (
дэлгэц: inline-block;
}

Бид дараах дүр төрхийг олж авна: Энд төвлөрсөн 4 LI элемент байна. Дэлгэцийн хэмжээг багасгахад тохирохгүй элементүүдийг доош нь шилжүүлдэг.

Хэрэв блок бол Л.ИЭдгээр шинж чанаруудыг төвд суулгаагүй бөгөөд энэ нь бусад өмч хөрөнгөд саад учруулж байна гэсэн үг юм. Жишээлбэл, энэ нь өмч байж болно хөвөх: зүүнэсвэл дэлгэц: хүснэгт;эсвэл өөр.

Та одоо дээд бүтцэд өөр хэв маягийг нэмж болно (үндсэн CSS тэгшитгэх хүрээ рүү). Жишээлбэл, тогтмол хэмжээтэй блокуудыг хийж, бие биенээсээ догол хийх:

Контейнер li (
дэлгэц: inline-block;
захын зай: 5px;
өргөн: 100px;
}

Бид дараахь зүйлийг авна.

Гэхдээ энэ сонголтод нэг сул тал бий. Блокууд нь төвд байрладаг боловч баруун, зүүн тийш асар их зайтай байдаг. Өргөнийг өөрчлөх замаар тэдгээрийг багасгаж болно.

Эсвэл та ижил хэмжээтэй сав хийж болно, ингэснээр зөвхөн савны хооронд доголтой байх ба зүүн, баруун талд нь байхгүй болно.

Дараа нь бид устгах болно маржинмөн үүний өргөнийг нэмнэ үү өргөнингэснээр тэр талбайг бүрэн хамарна.

Контейнер li (
босоо зэрэгцүүлэх: дээд;
дэлгэц: inline-block;
өргөн: 32.899%;
}

Блокуудын хооронд бага хэмжээний хоосон зай бий болно. Үүнийг илүү том болгохын тулд та параметрийг ашиглан дотогшоо ухарч болно дэвсгэр.

Блокуудад би зориудаар тохируулгад шууд нөлөөлдөг хэв маягийг үлдээхийн тулд нэмэлт зүйл нэмдэггүй. Гэхдээ хэрэв та үүнийг хийвэл ийм блок авахгүй. Хэрэв та нэгдүгээрт, блокон дээр өнгө нэмэх хэрэгтэй бол хоёрдугаарт, хоосон байвал тавь. өндөр: 100px;. Бусад шинж чанарууд нь танд таалагдах болно.

Эцсийн сонголт нь:

Дээрх дэлгэцийн агшин дээр би сайтын бусад хэсгүүдийг орхисон бөгөөд ингэснээр блокуудын хил хаана байгаа нь тодорхой болно, учир нь тэдгээр нь ирмэгтэй зэргэлдээ байвал ирмэг нь өөрөө харагдахаа больсон. Мөн зураг дээр зүүн ба баруун талд байгаа цагаан ирмэгүүд нь тухайн жишээтэй ямар ч нийтлэг зүйлгүй өөр өөр байрлал юм. Би давтан хэлье, блокууд нь ирмэгүүдтэй зэрэгцэн оршдог бөгөөд тэдгээр нь харагдахгүй, учир нь блокууд нь тэдгээрийг бүрэн хамардаг.

Сонголт 2

Блокуудыг голлох олон арга бий. Гэхдээ хэрвээ та шугамыг илүү ухаалаг болгох шаардлагатай бол тархиа гашилгах хэрэгтэй. Аз болоход би дараах зорилгоор сонирхолтой аргыг олсон.

Дараагийн мөрөнд байгаа блокыг зүүн зэрэгцүүлэхийн тулд бүх div-г хэрхэн голлуулах вэ?

Бид дараах бүтэцтэй.



Блок 1


Блок 2


Блок 3


4-р блок


5-р блок

Бид тэдэнд зориулж хичээл бичдэг:


өргөн: 90%;
захын зай: 0 автомат;
}

Архив нийтлэл (
дэлгэц: inline-block;
босоо зэрэгцүүлэх: дээд;

Өргөн: calc(33.3333% - (0.666666666667 * 36px));
захын зай: 0 10px 0 11px;
}

Хэрэв та хэмжээгээ өөрчилсөн бол анхаарна уу тооцоолол, дараа нь та хэмжээсийг туршилтаар тохируулах хэрэгтэй маржин. Үгүй бол блокууд төвлөрөхгүй.

Энэ тохируулга нь нүдээр хийгдэх ёстой. Гэхдээ шинэ мөрөнд дээрх шугамаас цөөн блок байгаа бол энэ ганцаардсан блок хамт байх болно зүүн тал. Дараагийн мөрөнд нэг блок төв хэсэгт байрлахаас хамаагүй сайхан харагдаж байна.

Дээрх техникийг ашигласнаар бид дэлгэцийн хэмжээг өөрчлөхөд муудахгүй бүх ирмэгүүд нь тэнцүү, дасан зохицох схемийг авах болно.

Хэрэв бид гар утасны хувилбарыг 3 блок биш, харин 2 блоктой байхыг хүсч байвал 768 пикселийн нягтралтай ccs-д бид блокуудыг өөрөөр хуваана.

@media дэлгэц ба (хамгийн их өргөн: 768px) (
.архив нийтлэл (
өргөн: calc(47.3333% - (0.666666666667 * 25px));
захын зай: 0 10px 0 20px;
}
}

Гар утасны хувилбарт ижил блокуудыг авцгаая, гэхдээ нэг мөрөнд хоёр блоктой:

Сонголт 3

Одоо бид ашиглан уялдуулах болно уян хатан. Энэ нь тэгшлэх хамгийн тохиромжтой арга мэт санагдаж магадгүй, учир нь энэ нь маш энгийнээр ажилладаг. Гэсэн хэдий ч FLEX 2-р хувилбарт тайлбарласан даалгаврыг даван туулж чадахгүй байна. Наад зах нь би ижил үр дүнд хүрч чадаагүй.

Дараагийн хэсэг рүү:

Загвар нэмэх:

#cssmenu (
захын зай: 20px автомат;
}

#cssmenu ul (
жагсаалтын хэв маяг: байхгүй;
дэлгэц: уян хатан;
уян хатан боолт: боох;
зөвтгөх-агуулга: төв;
}

#cssmenu > ul > li (
захын зай: 1px;
}

Бид авах:

Өгөгдсөн жишээнд:

уян хатан боолт: боох;

Савыг дүүргэсэн бол блокуудыг дараагийн мөрөнд шилжүүлнэ. Үгүй бол тэд хөтчийн цонхноос цааш явах болно.

зөвтгөх-агуулга: төв;

Бид блокуудын агуулгыг төв рүү чиглүүлдэг.

Сонголт 4

Флекс технологийг ашиглан тохируулах өөр нэг сонголт.

Бид дотроо хоёр блоктой савтай. Өргөнийг хоёр тэнцүү тал болгон хуваахын тулд бидэнд эдгээр 2 блок хэрэгтэй.


Блок 1

2-р блок

Үүнийг хийхийн тулд бид дараах шинж чанаруудыг хэв маягт бичнэ.

Контейнер (
дэлгэц: уян хатан;
}

Блок (
уян хатан суурь: 100%;
}

Сонголт 5

Хэрэв тэдгээрийн тоо яг тэнцүү бол блокуудыг төвлөрүүлэх өөр нэг сонголт бий. Жишээ нь: 9 блок, мөр бүрт 3 блок байна. Энэ нь үргэлж ийм хэвээр байх болно гэдгийг та мэднэ. Жишээлбэл, та буух хуудас үүсгэж байгаа бөгөөд эдгээр блокуудын хооронд сайтад шаардлагагүй зүйл нэмэгдэхгүй гэдгийг та мэдэж байгаа.

Тиймээс, бидэнд дараах төрлийн 9 блок байна (би мөрүүдийг 9 удаа давтаагүй, гэхдээ 9 блок байгаа гэдгийг санаарай):



Блок 1


Блок 2


Блок 3

Тэдэнд зориулж загвар хэрэглээрэй:

Нийтлэлд зориулсан архивын контейнер (
өргөн: 100%;
текстийг зэрэгцүүлэх: төв;
}

Архив нийтлэл (
өргөн: 25%;
босоо зэрэгцүүлэх: дээд;
дэлгэц: inline-block;
текстийг зэрэгцүүлэх: зүүн;
}

Архив нийтлэл:nth-child(1),
.архив нийтлэл:nth-child(4),
.архив нийтлэл:nth-child(7) (
захын зай: 20px 0 30px 40px;
}

Архив нийтлэл:nth-child(2),
.архив нийтлэл:nth-child(5),
.архив нийтлэл:nth-child(8) (
захын зай: 20px 40px 30px;
}

Архив нийтлэл:nth-child(3),
.архив нийтлэл:nth-child(6),
.архив нийтлэл:nth-child(9) (
захын зай: 20px 40px 30px 0;
}

Бид бас дасан зохицох загвар авах болно. Дэлгэцийг багасгахад тохирохгүй блок доод төв рүү очно

Энэ төрлийн төвлөрлийн давуу тал нь та блокуудын хооронд тодорхой, тодорхой догол хийх боломжтой юм.

Гол дутагдал нь блок дотор юу ч байрлуулах боломжгүй юм. Аливаа элемент:

аль аль нь дивэсвэл хэсвэл өөр зүйл бол дотоод элемент гэж үзэх болно n-р хүүхэд. Үүний үр дүнд CSS-ийн хэв маяг үүн дээр давхарлаж, захын зайг ашиглан хийсэн бүх догол нь блокуудыг анх төлөвлөснөөс өөрөөр шилжүүлэх болно.