AMcoder - javascript, python, java, html, php, sql

CSS – ինչու տոկոսային բարձրությունը չի աշխատում: [կրկնօրինակ]

Ինչպե՞ս է ստացվում, որ height-ի համար տոկոսային արժեքը չի աշխատում, բայց width-ի տոկոսային արժեքը գործում է:

Օրինակ:

<div id="working"></div>
<div id="not-working"></div>
#working{
    width:80%;
    height:140px;
    background:orange;
}
#not-working{
    width:80%;
    height:30%;
    background:green;
}

#working-ի լայնությունն ավարտվում է տեսադաշտի 80%-ով, բայց #not-working-ի բարձրությունը՝ 0:

14.04.2011

  • Մասնագետ չէ, բայց ես կպատկերացնեմ, որ դա ինչ-որ կապ ունի այն ենթադրության հետ, որ դուք պտտվելու եք վեբ էջը վեր ու վար, բայց ոչ թե կողք... 14.04.2011
  • Ահա CSS height հատկության պարզ և պարզ բացատրությունը տոկոսային արժեքներով. stackoverflow.com/a/31728799/3597276 25.08.2015

Պատասխանները:


1

Բլոկի տարրի բարձրությունը կանխադրված է բլոկի բովանդակության բարձրության վրա: Այսպիսով, հաշվի առնելով նման բան.

<div id="outer">
    <div id="inner">
        <p>Where is pancakes house?</p>
    </div>
</div>

#inner-ը կմեծանա այնքան բարձր՝ պարբերությունը պարունակելու համար, իսկ #outer-ը այնքան բարձր կլինի՝ պարունակելու #inner_ը:

Երբ դուք նշում եք բարձրությունը կամ լայնությունը որպես տոկոս, դա տոկոս է տարրի ծնողի նկատմամբ: Լայնության դեպքում բոլոր բլոկների տարրերը, եթե այլ բան նշված չէ, այնքան լայն են, որքան իրենց մայրը մինչև <html>; Այսպիսով, բլոկի տարրի լայնությունը անկախ է դրա բովանդակությունից, և width: 50% ասելով ստացվում է պիքսելների լավ սահմանված քանակ:

Այնուամենայնիվ, բլոկի տարրի բարձրությունը կախված է դրա բովանդակությունից, եթե չնշեք որոշակի բարձրություն: Այսպիսով, ծնողի և երեխայի միջև կա հետադարձ կապ, երբ խոսքը վերաբերում է բարձրությանը, և height: 50% ասելը չի ​​տալիս լավ սահմանված արժեք, քանի դեռ դուք չեք խախտում հետադարձ կապի օղակը՝ ծնող տարրին տալով որոշակի բարձրություն:

14.04.2011
  • ճիշտ և լավ բացատրված: Նրանց միջև տարբերությունն այն է, որ լայնությունը լռելյայն սահմանվում է իր ծնող տարրի արժեքով, մինչդեռ բարձրությունը սահմանվում է դրա բովանդակության արժեքով: ծնողի արժեքը ընդդեմ բովանդակության արժեքի 11.01.2013
  • ուրեմն չկա՞ միջոց ունենալ բարձրություն, որն արձագանքում է: այսինքն - դուք ունեք մի շարք գունավոր քառակուսիներ, որոնք ստեղծվել են css ֆոնի գույնով և ցանկանում եք, որ քառակուսիները չափափոխվեն էկրանի հետ: jjsFiddle 28.05.2014
  • @ChrisM. Ես չեմ կարող որևէ բան մտածել մաքուր CSS-ի մասին, բայց ես վերջերս չեմ անում CSS: Միգուցե փորձեք նոր հարց տալ: 28.05.2014
  • Ես մտածեցի, որ գուցե կարիք լինի հարցնել նոր q. Ես փորձեր եմ արել և չեմ կարողանում որևէ բան աշխատել: կարծում եմ, որ ինձ կարող է անհրաժեշտ լինել js 28.05.2014
  • @ChrisM - Կախված նրանից, թե ինչպես եք ցանկանում օգտագործել այն, պարզապես հավասար ներդիրներ դրեք տուփի ձեր ուզած լայնության կեսին. jsfiddle.net/en9xyv30/1 Եթե ցանկանում եք, որ բովանդակությունը լինի վանդակում, ամենայն հավանականությամբ, այն պետք է լինի բացարձակապես տեղադրված. պարզապես վերև, աջ, ներքև և թողեք բոլորը 0-ի (կամ նույն արժեքից բացի 0, եթե ցանկանում եք լիցքավորել) և բովանդակությունը կփոխվի տուփի հետ միասին: 27.08.2014
  • Կարող եք նաև օգտագործել vw միավորը: vw-ն միավոր է, որը կազմում է տեսադաշտի լայնության տոկոսը: Այսպիսով, բարձրության նման մի բան՝ 10vw; լայնությունը՝ 10 վտ; կհասնի էկրանի լայնությանը և կմնար քառակուսի: Բրաուզերի համատեղելիության համար տե՛ս caniuse.com/#feat=viewport-units: 27.08.2014
  • ‹body› տարրը նման է ‹div›-ին, քանի որ դրա բարձրությունը կախված է բովանդակությունից: Հետևաբար, որպեսզի ամենահեռավոր ‹div› տոկոսային բարձրությունը որևէ նշանակություն ունենա, պետք է նշել ‹body› տարրի բարձրությունը: 18.12.2014
  • Զգույշ եղեք տոկոսները vw միավորով փոխարինելու հարցում, քանի որ դա իսկապես կդժվարացնի ձեր կյանքը, եթե որոշեք տարրը դնել մեկ այլ տարայի մեջ: 16.12.2016
  • Այդ դեպքում ինչու այս օրինակի լայնությունը չի ստեղծում անսահման հանգույց: jsfiddle.net/8dkzp49w/16 @arthur 23.07.2020

  • 2

    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
  • +10-ը դրան կտա +10, եթե դա հնարավոր լիներ: 05.10.2015
  • Ֆանտաստիկ բացատրություն - շնորհակալություն: Ես ավելացրեցի մի քանի տառ id='b' վանդակում, որպեսզի այն իրականում բարձրություն ունենա: Դեռևս id='bb' տուփի բարձրությունը 0 է. ինչու՞: Արդյո՞ք այն չպետք է լինի id='b' տուփի բովանդակության բարձրության կեսը: 31.01.2016
  • @Adam Հասակի համար #bb-ի հասակը 50%-ն է auto-ի, ինչը նույնն է, ինչ auto-ն, և քանի որ #bb-ն իր մեջ ոչինչ չունի, դա նույնն է, ինչ 0-ը: Այն փաստը, որ #b-ի հասակը վերջում ծնողն ունի բարձրություն, դա չի նշանակում: չփոխեք այն փաստը, որ դրա բարձրությունը ավտոմատ է: 05.02.2016
  • Եթե ​​«լայնությունը» դրված է «ավտո», ապա ցանկացած այլ «ավտո» արժեք դառնում է «0», իսկ «լայնությունը» բխում է ստացված հավասարությունից: ..... Ես իսկապես շփոթված եմ այս նախադասության վրա, կարո՞ղ եք պարզաբանել: 11.07.2016
  • @Flimm կարո՞ղ եք բացատրել, թե ինչու է ճկուն տարրերի երեխայի վրա % բարձրությունը սահմանելը, նույնիսկ այն դեպքում, երբ ծնողի վրա բացահայտորեն նշված բարձրություն չկա: Ես նկատի ունեմ, որ երբ դուք ունեք ճկուն կոնտեյներ, ֆլեքս տարրեր և ներքին դիվ ֆլեքս տարրի ներսում. երբ դուք բարձրությունը սահմանում եք %-ով այդ ներքին դիվի վրա, այն ժառանգում է բարձրությունը ճկուն երեխայից (կարևոր չէ, որ ճկուն տարրի բարձրությունը սահմանվում է auto): . 28.11.2017
  • CSS The Definitive Guide գրքի Հիմնական տեսողական ֆորմատավորումը նույնպես անցնում է դրանով, խորհուրդ եմ տալիս կարդալ: 05.04.2018
  • Վայ, շատ լավ բացատրված! Ընդհանուր +1 14.11.2019
  • Ինչ վերաբերում է html = բարձրություն:100%, մարմին = բարձրություն:100% #wrapper = min-բարձրություն:100%: Չի աշխատում, չնայած #ռեփերը մարմնի անմիջական զավակ է։ Ի՞նչ դժոխք է այն սխալ ամբողջ CSS-ի հետ: 07.05.2021

  • 3

    Կարծում եմ, դուք պարզապես պետք է դրան մայր կոնտեյներ տաք... նույնիսկ եթե այդ տարայի բարձրությունը որոշված ​​է տոկոսներով: Սա շատ լավ է աշխատում. JSFiddle

    html, body { 
        margin: 0; 
        padding: 0; 
        width: 100%; 
        height: 100%;
    }
    .wrapper { 
        width: 100%; 
        height: 100%; 
    }
    .container { 
        width: 100%; 
        height: 50%; 
    }
    
    03.06.2015
  • Դուք կարող եք նաև դա անել՝ պիքսելները հանելու համար, եթե, օրինակ, ունեք վերնագիր, կամ, ամենայն հավանականությամբ, տոկոսը սխալ կհաշվարկվի, երբ փոխեք պատուհանի չափը: բարձրությունը՝ հաշվարկ (100% - 100px); Իսկ ավելի հին բրաուզերների համար օգտագործեք սա՝ բարձրություն՝ -o-calc(100% - 100px); /* opera / բարձրությունը՝ -webkit-calc(100% - 100px); / google, safari / բարձրությունը՝ -moz-calc(100% - 100px); / firefox */ 26.05.2017

  • 4

    Դրան պետք է բարձրությամբ տարա տալ։ width-ն օգտագործում է դիտակետը որպես լռելյայն լայնություն

    14.04.2011
  • Ճիշտ է, բայց նաև տես @mu-ի պատասխանը բացատրության համար, թե ինչու: 14.04.2011

  • 5

    Մեկ այլ տարբերակ div-ին ոճ ավելացնելն է

    <div style="position: absolute; height:somePercentage%; overflow:auto(or other overflow value)">
     //to be scrolled 
    </div>
    

    Եվ դա նշանակում է, որ տարրը տեղակայված է մոտակա դիրքավորված նախահայրի համեմատ:

    30.06.2015
  • շնորհակալություն, աշխատում է ինձ համար :) 06.06.2016

  • 6

    Առանց բովանդակության, բարձրությունը արժեք չունի տոկոսը հաշվարկելու համար: Լայնությունը, այնուամենայնիվ, կվերցնի DOM-ի տոկոսը, եթե ծնողը նշված չէ: (Օգտվելով ձեր օրինակից) Երկրորդ div-ը առաջին div-ի ներսում դնելը արդյունք կբերեր... ստորև բերված օրինակը...

    <div id="working">
      <div id="not-working"></div>
    </div>
    

    Երկրորդ div-ը կկազմի առաջին div-ի բարձրության 30%-ը:

    04.02.2015
  • Դա ինձ մղեց հասկանալու այն: Ես մոռանում էի, որ երբ դուք կառուցում եք ձեր react տարրը, դուք պետք է ամբողջ վերադարձը փակեք մեկ դիվի ներսում: Այսպիսով, ես ունեի իմ #app div-ը, այնուհետև div առանց id-ի, այնուհետև 3 div-ները, որոնք ես փորձում եմ չափել... Ես պարզապես դրեցի id-ն միջին div-ի վրա և արեցի իմ բացարձակ ոճավորումը դրա վրա և բինգո: Տոննա շնորհակալություն բոլորին: :) 01.05.2017
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..