การฝึกปฏิบัติเกี่ยวกับเลย์เอาต์ด้วย HTML และ CSS

มาฝึกการสร้างเลย์เอาต์โดยเติมเนื้อหาเข้าไป ตัวอย่างเช่น ลองสร้างเลย์เอาต์แบบนี้:

เริ่มต้นด้วยการสร้างโครงสร้างหลักของเลย์เอาต์:

html<div class="wrapper">
  <header>
    ...
  </header>
  <div class="container">
    <aside class="left">
      left
    </aside>
    <main>
      ...
    </main>
    <aside class="right">
      right
    </aside>
  </div>
  <footer>
    site.com
  </footer>
</div>

ทีนี้มาจัดการกับเฮดเดอร์ อย่างที่เห็นในตัวอย่าง ในเฮดเดอร์จะมีชื่อเว็บไซต์และเมนู โดยบล็อกเหล่านี้ อยู่ห่างจากขอบซ้ายเท่ากัน ตรรกะในกรณีนี้คือการรวมพวกมัน ด้วยพ่อแม่เดียวกัน โดยขยับบล็อกเหล่านี้เป็นเนื้อหาเดียว:

html<div class="wrapper">
  <header>
    <div class="block">
      <div class="sitename"></div>
      <nav></nav>
    </div>
  </header>
</div>

เพิ่มเนื้อหาของบล็อกในเฮดเดอร์:

html<div class="wrapper">
  <header>
    <div class="block">
      <div class="sitename">site.com</div>
      <nav>
        <a href="#">home</a>
        <a href="#" class="active">blog</a>
        <a href="#">photos</a>
        <a href="#">about us</a>
        <a href="#">contacts</a>
      </nav>
    </div>
  </header>
</div>

ทีนี้มาเขียนสไตล์ของบล็อกในเฮดเดอร์ โดยไม่กำหนดความสูงของเฮดเดอร์ - ให้มันขยายตามเนื้อหาของตัวเอง:

cssheader {
  border: 1px solid black;
}
.block {
  margin: 20px 0 50px 220px;
}
.sitename {
  margin-bottom: 10px;
  font: 20px Arial;
}
nav {
  display: flex;
  width: 600px;
  border: 1px solid black;
}

เขียนโค้ดที่สร้างคอลัมน์สามคอลัมน์ในคอนเทนเนอร์ โดยไม่กำหนดความสูงของคอนเทนต์ - ให้มันถูกกำหนดโดยเนื้อหาของมัน:

css.container {
  display: flex;
}
main {
  width: 660px;
  padding: 20px;
  border: 1px solid black;
}
.left {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}
.right {
  width: 200px;
  margin-left: 20px;
  padding: 20px;
  border: 1px solid black;
}

ทีนี้มาเขียนสไตล์ที่เหลือของเลย์เอาต์ของเรา และได้ผลลัพธ์ของงาน:

html<div class="wrapper">
  <header>
    <div class="block">
      <div class="sitename">site.com</div>
      <nav>
        <a href="#">home</a>
        <a href="#" class="active">blog</a>
        <a href="#">photos</a>
        <a href="#">about us</a>
        <a href="#">contacts</a>
      </nav>
    </div>
  </header>
  <div class="container">
    <aside class="left">
      left
    </aside>
    <main>
      <h1>Our blog</h1>
      <p>
        ...
      </p>
      <p>
        ...
      </p>
      <p>
        ...
      </p>
      <p>
        ...
      </p>
      <p>
        ...
      </p>
    </main>
    <aside class="right">
      right
    </aside>
  </div>
  <footer>
    site.com
  </footer>
</div>
css* {
  box-sizing: border-box;
}

.wrapper {
  width: 1100px;
  margin: 30px auto;
  border: 1px solid black;
}
header {
  border: 1px solid black;
}
.container {
  display: flex;
}
main {
  width: 660px;
  padding: 20px;
  border: 1px solid black;
}
.left {
  width: 200px;
  margin-right: 20px;
  padding: 20px;
  border: 1px solid black;
}
.right {
  width: 200px;
  margin-left: 20px;
  padding: 20px;
  border: 1px solid black;
}
footer {
  padding: 30px 0;
  border: 1px solid black;
  text-align: center;
}

.block {
  margin: 20px 0 50px 220px;
}
.sitename {
  margin-bottom: 10px;
  font: 20px Arial;
}
nav {
  display: flex;
  width: 600px;
  border: 1px solid black;
}
nav a {
  padding: 10px;
  color: blue;
  text-decoration: none;
  font: 15px Arial;
}
nav a:hover, nav a.active {
  color: red;
  text-decoration: underline;
}
main h1 {
  font: 20px "Times New Roman";
}
main p {
  margin: 10px 0;
  text-align: justify;
  font: 15px Arial;
}

โจทย์ฝึกปฏิบัติ

Задание 1

ดาวน์โหลดเลย์เอาต์จากลิงก์นี้ 1.zip เปิดในเบราว์เซอร์และสร้างหน้าเว็บตามตัวอย่างนี้

Задание 2

ดาวน์โหลดเลย์เอาต์จากลิงก์นี้ 2.zip เปิดในเบราว์เซอร์และสร้างหน้าเว็บตามตัวอย่างนี้