Կայքի երկու սյունակով դասավորության սխեման CSS-ում

Եկեք ստեղծենք երկու սյունակով դասավորություն հետևյալ տեսքով.

Սկսելու համար ստեղծենք էջի հիմնական կառուցվածքը.

html<div id="wrapper">
  <div id="header">
    header
  </div>
  <div id="container">
    <div id="content">
      content
    </div>
    <div id="sidebar">
      sidebar
    </div>
  </div>
  <div id="footer">
    footer
  </div>
</div>

Այժմ կիրառենք ոճեր wrapper-ին՝ կենտրոնում դնելով այն էկրանի.

css#wrapper {
  width: 1000px;
  margin: 30px auto;
  border: 1px solid black;
}

Այժմ սահմանենք header-ի և footer-ի ոճերը.

css#header {
  height: 200px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  border: 1px solid black;
}

Ինչպես տեսնում եք, մենք սահմանում ենք header-ին և footer-ին բարձրություն: Մենք դա անում ենք, քանի որ մեր սխեմայում դրանք չունեն բովանդակություն: Բովանդակություն ունենալու դեպքում բլոկներին բարձրություն սահմանել չարժե - այն կձևավորվի դրանց բովանդակությամբ:

Ուշադրություն դարձրեք նաև, որ մենք չենք սահմանում դրանց լայնություն: Բանն այն է, որ header-ը և footer-ը բլոկային տարրեր են, և դրանց լայնությունը կլինի ավտոմատ կերպով հավասար wrapper-ի լայնությանը:

Եկեք այժմ սահմանենք դրանց padding, որպեսզի տեքստը չկպչի սահմաններին.

css#header {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}

Սակայն padding-ի առկայությունը վատ ազդեցություն կունենա բլոկների չափերի վրա - դրանք կդառնան ավելի մեծ, քան նշված է: Եկեք փոխենք բոլոր բլոկների վարքագիծն այնպես, որ padding-ը և սահմանները չընդլայնեն մեր բլոկները.

css* {
  box-sizing: border-box;
}

Այժմ մեզ անհրաժեշտ է content-ը և sidebar-ը դնել մեկ շարքում: Եկեք դա անենք flex-ի միջոցով.

css#container {
  display: flex;
}

Նշենք content-ին և sidebar-ին դրանց լայնությունը: Միաժամանակ դրանց լայնությունների գումարը պետք է հավասար լինի wrapper-ի լայնությանը.

css#content {
  width: 800px;
}
#sidebar {
  width: 200px;
}

Ենթադրենք՝ մենք ուզում ենք բաց տեղ ստեղծել sidebar-ի և content-ի միջև: Այս դեպքում sidebar-ին պետք է սահմանել margin: Միաժամանակ մեզ ստիպված կլինի ինչ-որ մեկից «կտրել» լայնություն այս margin-ի համար: Կտրենք content-ից՝ համապատասխանաբար նվազեցնելով նրա լայնությունը.

css#content {
  width: 780px;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
}

Եկեք այժմ ավելացնենք բարձրություն, քանի որ մեր տարրերը չեն պարունակում բովանդակություն: Բավական է ավելացնել բարձրություն միայն մեկ տարրին, քանի որ երկրորդ flex տարրը կհարմարվի բարձրությանը (ինչու՞): Եկեք սահմանենք բարձրությունը content-ին.

css#content {
  width: 780px;
  height: 700px;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
}

Եկեք ավելացնենք content-ին և sidebar-ին մնացած ոճերը.

css#content {
  width: 780px;
  height: 700px;
  padding: 20px;
  border: 1px solid black;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}

Վերջ, մեր դասավորությունը պատրաստ է: Եկեք հավաքենք ամբողջ կոդը միասին.

html<div id="wrapper">
  <div id="header">
    header
  </div>
  <div id="container">
    <div id="sidebar">
      sidebar
    </div>
    <div id="content">
      content
    </div>
  </div>
  <div id="footer">
    footer
  </div>
</div>
css* {
  box-sizing: border-box;
}

#wrapper {
  width: 1000px;
  margin: 30px auto;
  border: 1px solid black;
}
#header {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
#container {
  display: flex;
}
#content {
  width: 780px;
  height: 700px;
  padding: 20px;
  border: 1px solid black;
}
#sidebar {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}
#footer {
  height: 200px;
  padding: 20px;
  border: 1px solid black;
}
Задание 1
Задание 2