Menerapkan Box Model pada Halaman Profil

Pada latihan sebelumnya, kita sudah menerapkan font yang didapatkan dari Google Font dengan properti font-family dan mengubah warna font dengan menggunakan properti color.  Nah setelah mempelajari komponen box seperti paddingborder, dan margin saatnya kita terapkan pada proyek yang sudah kita buat sebelumnya. Mulai dari menetapkan ukuran gambar, membuat efek gaya kartu, dan membuat jumbotron.

Hingga pada akhir latihan ini kita dapat mempercantik tampilan website profil tampak seperti ini:

Sudah siap? Silakan buka kembali proyeknya dengan text editor yang Anda miliki.

Menetapkan ukuran pada gambar

Sekarang saatnya kita mulai terapkan apa yang baru kita pelajari. Langkah pertama mari kita ubah dimensi dari gambar yang kita tampilkan. Pada berkas style.css, buat rule baru untuk selector .featured-images dengan properti dan nilai sebagai berikut:

.featured-image {
   width: 100%;
   max-height: 300px;
}

Kemudian terapkan rule tersebut pada seluruh elemen gambar kecuali gambar logo kota Bandung yang terdapat di dalam elemen <aside>. Untuk menerapkannya kita tuliskan class atribut dengan nilai featured-image.

<img src="assets/image/history.jpg" class="featured-image" alt="sejarah">

...

<img src="assets/image/geografis.jpg" class="featured-image" alt="geografis">

...

<img src="assets/image/farm-house.jpg" class="featured-image" alt="farm house">

...

<img src="assets/image/bosscha.jpg" class="featured-image" alt="bosscha">

Setelah menerapkannya maka tampilan gambar akan menjadi seperti ini:

20191206212857ec2b51e3bd2fd075658640b002665836.png

Gambar yang ditampilkan jadi memenuhi lebar jendela browser. Namun karena kita menetapkan juga properti max-height, gambar yang ditampilkan menjadi tidak proporsional. Solusinya kita tambahkan properti object-fit: cover; dan object-position: center; pada .featured-image selector.

.featured-image {
   width: 100%;
   max-height: 300px;
   object-fit: cover;
   object-position: center;
}

Kedua properti tersebut membuat gambar yang ditampilkan dapat menyesuaikan lebar dan panjang dengan mempertahankan kualitas rasio aslinya. Tetapi untuk menyesuaikannya terdapat area gambar yang terpotong atau tidak ditampilkan, tetapi tampilan gambar akan tetap proporsional.

2019120621300625720639f2d52817ae3ed98f72ed0ea2.png

Selanjutnya kita atur juga ukuran gambar logo kota Bandung pada elemen <aside>. Agar logo tampak tidak terlalu besar kita atur properti width dengan nilai 200px. Silakan buat rules baru dengan selector .profile img, kemudian tuliskan properti width dengan nilainya.

.profile img {
   width: 200px;
}

Sehingga sekarang logo akan nampak lebih kecil.

20191206213118674adfa30b2e1d4ad0d45764e26db88a.png

Menerapkan card style pada elemen <article>

Selanjutnya kita atur tampilan pada tiap elemen <article>, buat elemen tersebut bergaya card effect dengan menerapkan properti box-shadow dan border-radius sehingga hasilnya akan tampak seperti ini:

2019120621350666345165184d3711569b2f3d1889a782.png

Pertama kita buat rule baru dengan selector .card, kemudian terapkan properti dan nilainya sebagai berikut:

.card {
   box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
   border-radius: 5px;
}

Selanjutnya terapkan rule tersebut pada seluruh elemen <article> yang ada. Untuk menerapkannya, tambahkan atribut class dengan nilai card.

<article id="sejarah" class="card">

...

<article id="geografis" class="card">

...

<article id="wisata" class="card">
...

<aside>
        <article class="profile card">
....

Sekarang tiap sisi elemen <article> akan tampak dikelilingi oleh drop shadow dan memiliki ujung yang bulat pada tiap sisinya.

20191206213704fa910d646a7ba58fa710f40cd8afe96d.png

Jika dirasa drop shadow tak terlalu jelas, kita bisa mengubah nilainya. Agar mudah dalam menentukan nilai drop shadow yang kita inginkan, kita bisa gunakan tools yang tersedia secara online pada tautan berikut: https://www.cssmatic.com/box-shadow.

Selanjutnya kita perbaiki tepian konten pada card karena tampak terlalu sempit dari sisi cardnya. Alhasil, konten agak sulit dibaca. Kita bisa mengaturnya dengan properti margin dan padding. Silakan tambahkan properti dan nilai berikut pada rule .card:

.card {
   box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2);
   border-radius: 5px;
   padding: 20px;
   margin-top: 20px;
}

Sekarang konten di dalam card lebih proporsional dan mudah dibaca, bukan?

201912062138535c79ac44e65f9ae9fc10e8c9f81944fe.png

Menerapkan Jumbotron dan Navigasi pada header

Selanjutnya kita akan mengatur header dengan membuat efek jumbotron dan memperbaiki tampilan navigasi menjadi nampak seperti ini:

2019120621431702899e64436e0bf3627131f41d408c38.png

Sebagai langkah awal, yuk kita buat rule baru dengan selector .jumbotron lalu terapkan properti dan nilainya seperti ini:

.jumbotron {
  padding: 60px;
  background-color: #00c8eb;
  text-align: center;
  font-size: 20px;
  color: white;
}

Lalu pada berkas HTML, letakkan elemen <h1> dan <p> yang terdapat pada <header> dengan menggunakan <div> yang diberikan atribut class jumbotron. Sehingga struktur HTML pada elemen <header> tampak seperti ini:

<header>
  <div class="jumbotron">
    <h1>Bandung</h1>
    <p>Kota metropolitan terbesar di Provinsi Jawa Barat, sekaligus menjadi ibu kota provinsi tersebut.</p>
  </div>
  <nav>
    <ul>
      <li><a href="#sejarah">Sejarah</a></li>
      <li><a href="#geografis">Geografis</a></li>
      <li><a href="#wisata">Wisata</a></li>
    </ul>
  </nav>
</header>

Sehingga sekarang header akan nampak dengan efek jumbotron.

20191206214458ae2dd2bba5ca43a3b3d4cab6e5c35df5.png

Lanjut, kita akan memperbaiki tampilan navigasi agar terlihat cocok dengan header yang ditampilkan. Seperti biasa, buatlah rule baru dengan selector nav li. Selector tersebut akan mengatur elemen <li> yang menjadi turunan dari elemen <nav>, berikan properti dan nilai berikut pada selector tersebut:

nav li {
  display: inline;
  list-style-type: none;
  margin-right: 20px;
}

Nilai inline pada properti display akan membuat elemen <li> menerapkan sifat inline, sehingga elemen akan ditampilkan tanpa membuat baris baru. Dan properti list-style-type dengan nilai none akan menghilangkan tanda titik yang dihasilkan tiap item pada list. Dengan begitu navigasi akan nampak seperti ini:

20191206214743f0be8bd5d7a8b135c574203858e537d8.png

Selanjutnya beri background-color dan ubah warna teks pada navigasi agar nampak sesuai dengan header. Tuliskan rule baru dengan selector nav kemudian atur background-color dan padding dengan nilai berikut:

nav {
  background-color: #00a2c6;
  padding: 5px;
}

Kemudian untuk mengatur warna teks pada navigasi, kita tambahkan properti color pada selector nav a yang sudah kita buat pada latihan sebelumnya.

nav a {
  font-size: 18px;
  font-weight: 400;
  text-decoration: none;
  color: white;
}

Dengan begitu navigasi akan terlihat sesuai dengan header yang ditampilkan.

20191206214957e6aaaa1aab5abea3d4a5fd98fa5e1c92.png

Pada langkah ini, website yang kita bangun sudah mulai tampak menarik bukan?

Menyesuaikan Padding dan Margin pada body dan elemen <main>

Terakhir kita akan menyesuaikan margin dan padding yang ditampilkan pada body dan elemen <main>. Sehingga akan tampak seperti ini:

20191206215209fd51dc24414ef5c6a3e4d1a6cc7a8bdf.png

Pertama kita hilangkan nilai margin dan padding standar browser dengan menuliskan properti margin dan padding yang diberi nilai 0 pada body selector.

body {
  font-family: 'Quicksand', sans-serif;
  margin: 0;
  padding: 0;
}

Dengan begitu layout yang ditampilkan akan memenuhi seluruh lebar dan tinggi dari jendela browser.

20191206215340f54cdbd5098286f735f8b6b0f3b20d7d.png

Tetapi konten yang terdapat di dalam elemen <main> perlu sedikit jarak agar konten yang ditampilkan sedikit nyaman untuk dilihat. Kita dapat atur jarak tersebut dengan menambahkan padding pada selector main. Silakan tuliskan rule baru dengan selector main dan beri nilai 20px pada properti padding.

main {
  padding: 20px;
}

Nah sekarang website pun jadi lebih nyaman dilihat.

20191206215716e7fda7f550437d256d467fbfb53a5225.gif

Pada latihan selanjutnya kita akan memindahkan elemen aside sehingga berada di samping elemen content. Untuk melakukannya kita harus mengenal dulu apa itu positioning dan floating. Sampai jumpa di materi selanjutnya ya!