z-индекс шинж чанар: нарийвчилсан тойм. Давхардсан контекст эсвэл z-индекс ажиллахгүй үед Css z индекс зөвхөн тогтмол дээр ажиллана

Гэр / Өгөгдөл сэргээх

z-индекс

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

Гэхдээ энэ нь тийм ч энгийн зүйл биш юм. Энэ шинж чанар нь CSS-ийн хоёр өөр функцийг нэгэн зэрэг гүйцэтгэдэг (байршил гэх мэт) цөөхөн зүйлийн нэг юм.

  1. z-индекс шинж чанарыг байрлалтай элементүүдийг зохион байгуулахад ашигладаг.
  2. Автоматтай тэнцүү биш z индекс бүхий элемент бүрийг үүсгэдэг шинэ түвшиндараалал нь бүх үр удамд (захиалгат) тохиолддог (удаа нь z-индекс нь автоматтай тэнцүү биш үр удам нь аль хэдийн өөрсдийн эрэмбийн түвшинг бий болгодог). Ийм учраас жишээлбэл, нэг захиалгын түвшний элементийг нөгөөгийн хоёр элементийн хооронд "байруулах" боломжгүй юм.
  3. Үндэс элемент z-индекс заагаагүй байсан ч гэсэн үндсэн эрэмбийн түвшинг бий болгодог.

Энэ жишээг харцгаая:

DIV3
DIV4

Энэ жишээнд z-индекс тоон утгын хувьд та зөвхөн DIV3 болон DIV4-ийг солих боломжтой. Гэхдээ дараахь зүйл ажиллахгүй болно.

  1. DIV3 болон DIV4-ийг DIV2-д оруулах боломжгүй, учир нь тэдгээр нь асаалттай байна өөр өөр түвшинзахиалга өгөх. DIV2 нь DIV1 элементийн үүсгэсэн түвшинд, DIV3 болон DIV4 нь DIV2-ийн үүсгэсэн түвшинд байна. Тэдгээрийг ижил түвшинд байлгахын тулд та DIV2-ээс z-индексийг хасах эсвэл автоматаар тохируулах хэрэгтэй.
  2. DIV2-г DIV1-д оруулах нь ажиллахгүй. Үүнийг ажиллуулахын тулд та DIV1 дээр автоматаар тохируулах хэрэгтэй.
  3. Гэх мэт...

Өөр өөр сурах бичиг, лавлах номонд "Захиалгын түвшин" гэсэн ойлголтыг өөр өөрөөр нэрлэдэг - орон нутгийн байрлал, орон нутгийн стекийн контекст гэх мэт. Албан ёсны CSS тодорхойлолтод үүнийг "орон нутгийн stacking context" гэж бичсэн байдаг. Гэхдээ миний бодлоор "захиалгын түвшин" гэсэн хэллэг нь ихэнх орос хэлээр ярьдаг хүмүүст ойлгомжтой байдаг тул би энэ тодорхойлолтыг танилцуулсан.

Үл хөдлөх хөрөнгийн төрөл

Зорилго: байрлал тогтоох.

Үүнд: статикаас өөр байрлалтай элементүүдэд хамаарна.

Өв залгамжлал: үгүй.

Үнэ цэнэ

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

  • Тоо- өгөгдсөн эрэмбийн түвшний элементүүдийн дарааллыг тодорхойлдог аливаа эерэг эсвэл сөрөг бүхэл тоо. Илүү өндөр утгатай элементийг бага утгатай элемент дээр байрлуулна. Хэрэв хоёр элемент ижил утгатай бол HTML кодын доор байгаа нь дээр байх болно. Нэмж дурдахад, тоон утгатай (0-г оруулаад) элемент нь байрласан хүүхдүүдийнхээ шинэ эрэмбийн түвшинг бий болгодог.
  • авто- энэ утгаараа одоогийн эрэмбийн түвшний элемент нь энэ түвшинг үүсгэсэн өвөг дээдэстэйгээ ижил z-индекстэй байна. Гэсэн хэдий ч элемент өөрөө үр удамд шинэ эрэмбийн түвшинг бий болгодоггүй. Хэрэв өгөгдсөн утгатай хэд хэдэн элемент байгаа бол хуудасны HTML кодын доор гарч ирэх элемент нь дээд талд байх болно.
  • өвлөн авах- эх элементээс z-индекс утгыг өвлөн авна.

Оруулсан хувь:байхгүй.

Өгөгдмөл утга:авто.

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

  1. Эхний давхарга нь энэ түвшний дарааллыг бий болгосон элементийн дэвсгэр болон хүрээг агуулдаг.
  2. Дээд талд, хоёр дахь давхаргад z-индекс сөрөг утгатай удамшлын элементүүд байрладаг бөгөөд тэгтэй ойролцоо утгатай элемент дээр байрладаг.
  3. Дараагийн давхарга нь суулгаагүй (дотор) удамшлын элементүүд юм.
  4. Дөрөв дэх давхарга нь хөвөгч элементүүдээс (хөвөгч) тэдгээрийн агуулгын хамт бүрдэнэ.
  5. Тав дахь давхарга нь удамшлын элементүүд юм.
  6. Зургаа дахь давхарга нь z-index auto буюу 0-тэй элементүүдийг агуулж байгаа бөгөөд кодын доорх элемент нь илүү өндөр байна.
  7. Эцэст нь, эерэг z-индекс утгатай элементүүд нь хамгийн дээд хэсэгт, өндөр утгатай элемент нь илүү өндөр байна.

Синтакс

z-индекс: автомат | тоо | өвлөн авах

CSS Жишээ: z-индексийг ашиглах

seodon.ru - <a href="https://ermake.ru/mn/css-perenos-dlinnyh-slov-kak-dobavit-s-pomoshchyu-svoistv-css-perenos-stroki/">CSS өмч</a> z индекс

DIV1
DIV2
DIV3

Үр дүн.

CSS хувилбарууд

Хувилбар:CSS 1CSS 2CSS 2.1CSS 3
Дэмжлэг:ТиймээТиймээТиймээТиймээ

Хөтөчүүд

Хөтөч:Internet Explorer Google ChromeMozilla FirefoxДуурь
Хувилбар:6.0 ба 7.08.0 ба түүнээс дээш2.0 ба түүнээс дээш2.0 3.0 ба түүнээс дээш9.2 ба түүнээс дээш3.1 ба түүнээс дээш
Дэмжлэг:ХэсэгчилсэнТиймээТиймээХэсэгчилсэнТиймээТиймээТиймээ

Internet Explorer 6.0 ба 7.0 нь удамших утгыг ойлгохгүй байна. Мөн эдгээр хөтчүүдэд шинэ эрэмбийн түвшинг зөвхөн тоон z-индекстэй бус бүх байрлалтай элементүүдээр үүсгэнэ.

IE 6.0 нь элементийг үргэлж байрлуулдаг , В Интернет хөтөч Explorer 6 нь z-индексийн утгаас үл хамааран бусад элементүүдийн дээр үргэлж харагдана.

Internet Explorer-ийн 7.0 хүртэлх хувилбарууд нь удамших утгыг дэмждэггүй бөгөөд автоматыг 0 гэж тайлбарладаг.

Firefox хөтчийн 2.0 хүртэлх хувилбаруудад сөрөг z-индекс утга нь тухайн элементийг вэб хуудасны арын дэвсгэр болон түүний агуулгын доор байрлуулдаг.

Z-индекстэй холбоотой асуудал бол олон хүмүүс энэ нь хэрхэн ажилладагийг ойлгодоггүй явдал юм.
Доор тайлбарласан бүх зүйл W3C техникийн үзүүлэлтэд байна. Харамсалтай нь хүн бүр уншдаггүй.

Асуудлын тайлбар:

Тэгэхээр бидэнд 3 элементээс бүрдсэн HTML код байна гэж бодъё.
Тэд тус бүр нь дотроо нэгийг агуулдаг. Мөн тус бүр нь эргээд өөрийн гэсэн дэвсгэртэй: улаан, ногоон, цэнхэр. Нэмж дурдахад тус бүр нь баримт бичгийн зүүн дээд ирмэг дээр байрладаг бөгөөд энэ нь хажуугийнхтайгаа бага зэрэг давхцдаг. Эхнийх нь 1-тэй тэнцүү z-индекстэй, нөгөө хоёрт нь z-индекс байхгүй байна.

Үндсэн CSS дизайнтай HTML кодыг доор харуулав.

Улаан
Ногоон
Цэнхэр

.улаан, .ногоон, .цэнхэр (байрлал: үнэмлэхүй; ) .улаан (арын дэвсгэр: улаан; z-индекс: 1; ) .ногоон (арын дэвсгэр: ногоон; ) .цэнхэр (арын дэвсгэр: цэнхэр; )
jsfiddle дээрх жишээ

Даалгавар:Дараах дүрмийг зөрчихгүйгээр хөх, ногоон өнгөний ард улаан байгаа эсэхийг шалгаарай.

  • Та HTML тэмдэглэгээг өөрчлөх боломжгүй
  • Та элементүүдэд z-индексийг өөрчлөх/нэмэх боломжгүй
  • Та элементүүдийн байршлыг өөрчлөх/нэмэх боломжгүй

Шийдэл:

Шийдэл нь эхнийх нь (улаан өнгөний эх) дээр нэгээс бага ил тод байдлыг нэмэх явдал юм.
Үүнийг харуулсан css энд байна:
div: first-child ( тунгалаг байдал: .99; )

Хмм, энд ямар нэг зүйл буруу байна. Ил тод байдал үүнтэй ямар холбоотой вэ? Энэ нь давхардсан элементүүдийн дараалалд хэрхэн нөлөөлж чадах вэ? Та ч мөн адил бодож байна уу? Клубт тавтай морил!
Өгүүллийн хоёрдугаар хэсэгт бүх зүйл байрандаа орно гэж найдаж байна.

Элементүүдийг давхарлах дараалал:

Z-индекс нь маш энгийн юм шиг санагддаг: утга өндөр байх тусам элемент нь бидэнд ойр байх болно, өөрөөр хэлбэл. z-индекс 5-тай элемент нь 2-ийн z-индекстэй элементтэй давхцах болно, тийм үү? Үнэхээр биш.
Энэ бол z индексийн асуудал юм. Ихэнх хөгжүүлэгчид энэ асуудлыг судлахад хангалттай цаг зарцуулдаггүй тул бүх зүйл маш тодорхой харагдаж байна.

Ямар ч элемент HTML баримт бичигурд болон ард байж болно. Үүнийг хүн бүр мэддэг. Энэ дарааллыг тодорхойлсон дүрмүүд нь техникийн тодорхойлолтод тодорхой тусгагдсан байдаг, гэхдээ дээр дурдсанчлан хүн бүр тэдгээрийг бүрэн ойлгодоггүй.

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

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

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

Давхардсан контекст

Хамтдаа урд эсвэл арын дэвсгэр рүү шилжих нийтлэг эцэг эхтэй элементүүдийг давхарласан контекст гэж нэрлэдэг. Стекийн контекстийг ойлгох нь z-индекс болон элементүүдийн овоолсон дарааллыг ойлгох түлхүүр юм.

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

Дараах тохиолдолд шинэ контекст үүсч болно.

  • Хэрэв элемент нь баримт бичгийн үндсэн элемент бол (элемент)
    Хэрэв элемент статик байрлалгүй, z индексийн утга нь автомат биш бол
    Хэрэв элемент 1-ээс бага тунгалаг бол

Z-индекстэй холбоотой асуудал бол олон хүмүүс энэ нь хэрхэн ажилладагийг ойлгодоггүй явдал юм.
Доор тайлбарласан бүх зүйл W3C техникийн үзүүлэлтэд байна. Харамсалтай нь хүн бүр уншдаггүй.

Асуудлын тайлбар:

Тэгэхээр бидэнд 3 элементээс бүрдсэн HTML код байна гэж бодъё.
Тэд тус бүр нь дотроо нэгийг агуулдаг. Мөн тус бүр нь эргээд өөрийн гэсэн дэвсгэртэй: улаан, ногоон, цэнхэр. Нэмж дурдахад тус бүр нь баримт бичгийн зүүн дээд ирмэг дээр байрладаг бөгөөд энэ нь хажуугийнхтайгаа бага зэрэг давхцдаг. Эхнийх нь 1-тэй тэнцүү z-индекстэй, нөгөө хоёрт нь z-индекс байхгүй байна.

Үндсэн CSS дизайнтай HTML кодыг доор харуулав.

Улаан
Ногоон
Цэнхэр

.улаан, .ногоон, .цэнхэр (байрлал: үнэмлэхүй; ) .улаан (арын дэвсгэр: улаан; z-индекс: 1; ) .ногоон (арын дэвсгэр: ногоон; ) .цэнхэр (арын дэвсгэр: цэнхэр; )
jsfiddle дээрх жишээ

Даалгавар:Дараах дүрмийг зөрчихгүйгээр хөх, ногоон өнгөний ард улаан байгаа эсэхийг шалгаарай.

  • Та HTML тэмдэглэгээг өөрчлөх боломжгүй
  • Та элементүүдэд z-индексийг өөрчлөх/нэмэх боломжгүй
  • Та элементүүдийн байршлыг өөрчлөх/нэмэх боломжгүй

Шийдэл:

Шийдэл нь эхнийх нь (улаан өнгөний эх) дээр нэгээс бага ил тод байдлыг нэмэх явдал юм.
Үүнийг харуулсан css энд байна:
div: first-child ( тунгалаг байдал: .99; )

Хмм, энд ямар нэг зүйл буруу байна. Ил тод байдал үүнтэй ямар холбоотой вэ? Энэ нь давхардсан элементүүдийн дараалалд хэрхэн нөлөөлж чадах вэ? Та ч мөн адил бодож байна уу? Клубт тавтай морил!
Өгүүллийн хоёрдугаар хэсэгт бүх зүйл байрандаа орно гэж найдаж байна.

Элементүүдийг давхарлах дараалал:

Z-индекс нь маш энгийн юм шиг санагддаг: утга өндөр байх тусам элемент нь бидэнд ойр байх болно, өөрөөр хэлбэл. z-индекс 5-тай элемент нь 2-ийн z-индекстэй элементтэй давхцах болно, тийм үү? Үнэхээр биш.
Энэ бол z индексийн асуудал юм. Ихэнх хөгжүүлэгчид энэ асуудлыг судлахад хангалттай цаг зарцуулдаггүй тул бүх зүйл маш тодорхой харагдаж байна.

HTML баримт бичгийн аль ч элемент нь урд болон дэвсгэр байж болно. Үүнийг хүн бүр мэддэг. Энэ дарааллыг тодорхойлсон дүрмүүд нь техникийн тодорхойлолтод тодорхой тусгагдсан байдаг, гэхдээ дээр дурдсанчлан хүн бүр тэдгээрийг бүрэн ойлгодоггүй.

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

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

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

Давхардсан контекст

Хамтдаа урд эсвэл арын дэвсгэр рүү шилжих нийтлэг эцэг эхтэй элементүүдийг давхарласан контекст гэж нэрлэдэг. Стекийн контекстийг ойлгох нь z-индекс болон элементүүдийн овоолсон дарааллыг ойлгох түлхүүр юм.

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

Дараах тохиолдолд шинэ контекст үүсч болно.

  • Хэрэв элемент нь баримт бичгийн үндсэн элемент бол (элемент)
    Хэрэв элемент статик байрлалгүй, z индексийн утга нь автомат биш бол
    Хэрэв элемент 1-ээс бага тунгалаг бол

© 2024 ermake.ru -- Компьютер засварын тухай - Мэдээллийн портал