height
հատկության տոկոսային արժեքը մի փոքր բարդություն ունի, և width
և height
հատկությունները իրականում տարբեր կերպ են վարվում միմյանց նկատմամբ: Թույլ տվեք ձեզ տանել շրջագայության՝ ըստ տեխնիկական բնութագրերի:
height
սեփականություն:
Եկեք նայենք թե ինչ է ասում CSS Snapshot 2010-ի առանձնահատկությունը height
-ի մասին:
Տոկոսը հաշվարկվում է գեներացված տուփի պարունակող բլոկի բարձրության նկատմամբ: Եթե պարունակող բլոկի բարձրությունը հստակորեն նշված չէ (այսինքն, դա կախված է բովանդակության բարձրությունից), և այս տարրը բացարձակապես տեղադրված չէ, արժեքը հաշվարկվում է «ավտո»: Արմատային տարրի տոկոսային բարձրությունը հարաբերական է սկզբնական պարունակող բլոկին: Ծանոթագրություն. Բացարձակապես տեղակայված տարրերի համար, որոնց պարունակող բլոկը հիմնված է բլոկի մակարդակի տարրի վրա, տոկոսը հաշվարկվում է այդ տարրի լիցքավորման տուփի բարձրության նկատմամբ:
Լավ, եկեք դա առանձնացնենք քայլ առ քայլ.
Տոկոսը հաշվարկվում է գեներացված տուփի պարունակող բլոկի բարձրության նկատմամբ:
Ի՞նչ է պարունակող բլոկը: Դա մի քիչ բարդ է, բայց նորմալ տարրի համար լռելյայն static
դիրքում, դա հետևյալն է.
մոտակա բլոկային կոնտեյների նախնիների տուփը
կամ անգլերեն՝ դրա մայր տուփը։ (Արժե իմանալ, թե ինչ կլինի նաև fixed
և absolute
դիրքերի համար, բայց ես անտեսում եմ դա՝ այս պատասխանը կարճ պահելու համար:)
Այսպիսով, վերցրեք այս երկու օրինակները.
<div id="a" style="width: 100px; height: 200px; background-color: orange">
<div id="aa" style="width: 100px; height: 50%; background-color: blue"></div>
</div>
<div id="b" style="width: 100px; background-color: orange">
<div id="bb" style="width: 100px; height: 50%; background-color: blue"></div>
</div>
Այս օրինակում #aa
-ի պարունակող բլոկը #a
է, և այդպես շարունակ #b
-ի և #bb
-ի համար: Առայժմ այնքան լավ:
height
-ի բնութագրի հաջորդ նախադասությունը այն բարդությունն է, որը ես նշեցի այս պատասխանի ներածությունում.
Եթե պարունակող բլոկի բարձրությունը պարզապես նշված չէ (այսինքն, դա կախված է բովանդակության բարձրությունից), և այս տարրը բացարձակապես տեղադրված չէ, արժեքը հաշվարկվում է որպես «ավտո» .
Ահա՜ Արդյոք պարունակող բլոկի բարձրությունը հստակորեն նշված է, կարևոր է:
height:200px
-ի 50%-ը #aa
-ի դեպքում 100px է
- Բայց
height:auto
-ի 50%-ը auto
է, ինչը 0px է #bb
-ի դեպքում, քանի որ auto
-ի համար բովանդակություն չկա, որպեսզի ընդլայնվի մինչև
Ինչպես ասվում է սպեցիֆիկացիայի մեջ, կարևոր է նաև՝ պարունակող բլոկը բացարձակապես տեղադրված է եղել, թե ոչ, բայց եկեք անցնենք width
ին:
width
սեփականություն:
Այսպիսով, դա նույն կերպ է աշխատում width
-ի դեպքում: Եկեք նայենք սպասարկմանը:
Տոկոսը հաշվարկվում է առաջացած տուփի պարունակող բլոկի լայնության նկատմամբ:
Նայեք այս ծանոթ օրինակներին, որոնք փոխվել են նախորդից՝ width
-ի փոխարեն height
-ի փոխարեն:
<div id="c" style="width: 200px; height: 100px; background-color: orange">
<div id="cc" style="width: 50%; height: 100px; background-color: blue"></div>
</div>
<div id="d" style=" height: 100px; background-color: orange">
<div id="dd" style="width: 50%; height: 100px; background-color: blue"></div>
</div>
width:200px
-ի 50%-ը #cc
-ի դեպքում 100px է
width:auto
-ի 50%-ը 50%-ն է այն ամենի, ինչ width:auto
ավարտվում է, ի տարբերություն height
ի՝ չկա որևէ հատուկ կանոն, որը այլ կերպ վերաբերվում է այս գործին:
Հիմա, ահա բարդ մասնիկը. auto
նշանակում է տարբեր բաներ՝ մասամբ կախված նրանից, թե արդյոք այն նշված է width
, թե height
համար: height
-ի համար դա պարզապես նշանակում էր բովանդակության համար անհրաժեշտ բարձրություն*, բայց width
-ի համար auto
-ն իրականում ավելի բարդ է: Կոդի հատվածից կարող եք տեսնել, որ այս դեպքում այն ավարտվել է դիտակետի լայնությամբ:
Ի՞նչ է ասում սպասարկումը լայնության ավտոմատ արժեքի մասին:
Լայնությունը կախված է այլ հատկությունների արժեքներից: Տես ստորև բերված բաժինները:
Ուայ, դա օգտակար չէ: Ձեզ դժվարություններից փրկելու համար ես ձեզ գտա մեր օգտագործման դեպքի համապատասխան բաժինը, որը վերնագրված է «հաշվարկել լայնությունները և լուսանցքները», ենթագրերով "բլոկի մակարդակի, չփոխարինված տարրեր նորմալ հոսքում":
Հետևյալ սահմանափակումները պետք է պահպանվեն այլ հատկությունների օգտագործված արժեքների միջև.
'lawer-left' + 'border-left-width' + 'padding-left' + 'width' + 'padding-right' + 'border-right-width' + 'margin-right' = պարունակող բլոկի լայնությունը
Լավ, այնպես որ width
գումարած համապատասխան լուսանցքը, եզրագիծը և լիցքավորման եզրագծերը պետք է գումարվեն պարունակող բլոկի լայնությանը (չի իջնում, ինչպես աշխատում է height
ը): Եվս մեկ հատուկ նախադասություն.
Եթե «լայնությունը» դրված է «ավտո», ապա ցանկացած այլ «ավտո» արժեք դառնում է «0», իսկ «լայնությունը» բխում է ստացված հավասարությունից:
Ահա՜ Այսպիսով, այս դեպքում width:auto
-ի 50%-ը տեսադաշտի 50%-ն է: Հուսանք, որ ամեն ինչ վերջապես իմաստ ունի հիմա:
Ծանոթագրություններ
* Համենայն դեպս, որքանով դա կարևոր է այս դեպքում: spec Լավ, հիմա ամեն ինչ մի տեսակ իմաստ ունի:
24.06.2015
vw
միավորով փոխարինելու հարցում, քանի որ դա իսկապես կդժվարացնի ձեր կյանքը, եթե որոշեք տարրը դնել մեկ այլ տարայի մեջ: 16.12.2016