Membuat Aplikasi Web Berbasis API Dengan HTML dan CSS
() translation by (you can also view the original English article)



Setelah merancang beberapa tiruan visual untuk membantu membimbing kita dalam membangun aplikasi kecil kami untuk browser, kita telah sampai ke bagian yang menarik dan mulai membuat!
Struktur File
Mari kita setup struktur file kita untuk proyek. Akan terlihat seperti ini (dengan masing-masing aset yang hidup dalam folder yang sesuai):
1 |
. |
2 |
├── index.html |
3 |
└── assets |
4 |
├── css |
5 |
├── img |
6 |
├── js |
7 |
└── sketch |
Kami sekarang memiliki folder untuk setiap aset kita, serta file .sketch
yang kita buat sebelumnya yang memegang tiruan page kita.
Awal HTML
Berdasarkan struktur file kita, mari kita setup dokumen HTML dasar kita dengan link ke aset (yang akan kita ciptakan dalam sekejap).
1 |
<!doctype html>
|
2 |
<html lang="en-US"> |
3 |
<head>
|
4 |
<meta charset="utf-8"> |
5 |
<title>Gimmie Dat iCon</title> |
6 |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
7 |
<link href="https://fonts.googleapis.com/css?family=Pacifico" rel="stylesheet" type="text/css"> |
8 |
<link rel="stylesheet" href="assets/css/styles.css"> |
9 |
</head>
|
10 |
<body>
|
11 |
<header></header>
|
12 |
<main></main>
|
13 |
<footer></footer>
|
14 |
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> |
15 |
<script src="assets/js/main.js"></script> |
16 |
</body>
|
17 |
</html>
|
Berikut ini adalah apa yang kita miliki:
- Struktur halaman HTML dasar dengan header, isi, dan daerah footer.
- Link ke CSS kustom kami (yang kita akan menciptakan)
- Link ke Pacifico pada font Google (seperti disebutkan sebelumnya, ini adalah font yang kita akan gunakan untuk menampilkan nama app kecil kami)
- Link ke kami javascript kustom (yang kita akan menciptakan) serta Perpustakaan jQuery pada Google’s Hosted Libraries CDN
Awal CSS
Karena ini sedikit app relatif kecil dan sederhana, saya akan mendukung menggunakan vanili CSS dalam proyek ini (tidak ada preprocessor), tetapi Anda dapat jelas menulis CSS Anda dalam bentuk apa pun yang Anda suka.
Mari kita mulai dengan menyiapkan beberapa halaman dasar gaya dan membuat komentar referensi untuk warna kami akan menggunakan. Dalam assets/css/styles.css
lakukan hal berikut:
1 |
/*
|
2 |
General Styles
|
3 |
|
4 |
Colors
|
5 |
@highlight: #196E76
|
6 |
@text: #4A4A4A;
|
7 |
@text-light: #9A9A9A
|
8 |
@body-background: #EEEEEE;
|
9 |
*/
|
10 |
|
11 |
*,
|
12 |
*:before, |
13 |
*:after { |
14 |
box-sizing: inherit; |
15 |
margin: 0; |
16 |
padding: 0; |
17 |
}
|
18 |
|
19 |
html { |
20 |
box-sizing: border-box; |
21 |
background: #EEEEEE; |
22 |
text-align: center; |
23 |
}
|
24 |
|
25 |
body { |
26 |
font-size: 1em; |
27 |
line-height: 1.5; |
28 |
font-family: Lucida Grande, sans-serif; |
29 |
max-width: 43.75em; /* 880/16 */ |
30 |
margin: 0 auto; |
31 |
padding: 0; |
32 |
color: #4A4A4A; |
33 |
}
|
34 |
|
35 |
img { |
36 |
max-width: 100%; |
37 |
height: auto; |
38 |
}
|
39 |
|
40 |
a { |
41 |
color: inherit; |
42 |
}
|
Di sini kita sudah setup beberapa halaman dasar gaya mengatur gambar, link, dan kita akan menggunakan model kotak. Seperti Anda mungkin telah menyadari, kami menggunakan tag body
sebagai pembungkus dengan menetapkan max-width
. Ini akan menjaga semua konten kami berpusat di tengah halaman tanpa diluar lebar tertentu.
Perhatikan kita juga didefinisikan nilai-nilai warna, kami akan menggunakan di atas komentar. Karena kita tidak menggunakan preprocessor yang memungkinkan kita untuk menetapkan variabel, ini akan berguna sebagai kita terus menulis gaya kita.
App Header
Mari kita buat header app. Ingat, kita rancang ini di sketsanya:



Jadi, ayo kita buat HTML untuk dicocokkan mock kita. Kita akan menempatkan konten ini dalam elemen header
yang kita buat sebelumnya.
1 |
<header>
|
2 |
<h1><a href="./">Gimmie Dat iCon</a></h1> |
3 |
<p>Retrieve full-sized icon artwork for iOS & Mac apps.</p> |
4 |
</header>
|
Sekarang kita telah memiliki nama aplikasi serta keterangan di bagian atas halaman. Tapi dengan gaya yang biasa.



Tulislah beberapa gaya untuk header halamannya yang membawa lebih sesuai dengan tiruannya :
1 |
/*
|
2 |
Header Styles
|
3 |
*/
|
4 |
header { |
5 |
margin: 1em 0 2em; |
6 |
color: #196E76; |
7 |
}
|
8 |
|
9 |
header h1 { |
10 |
font-family: 'Pacifico', serif; |
11 |
font-size: 3em; |
12 |
text-shadow: 0 4px 2px rgba(0, 0, 0, .1); |
13 |
margin: 0; |
14 |
}
|
15 |
|
16 |
header h1 a { |
17 |
text-decoration: none; |
18 |
}
|
19 |
|
20 |
header p { |
21 |
margin-top: -.625em; |
22 |
text-indent: 7.75em; /* indent slightly */ |
23 |
text-shadow: 0 1px 0px rgba(0, 0, 0, .15); |
24 |
font-size: .875em; /* 14/16 */ |
25 |
}
|
Berikut ini gambaran singkat dari apa yang kita kerjakan:
- Warna dan spasi untuk wadah header
- App nama
header h1
diatur untuk menggunakan Pacicifo dari Google font (ingat, kita tetapkan link ke resource ini di header kita) - App Deskripsi
header p
sedikit terimbangi untuk menghindari berjalan ke descender "G" nama app.
Sekarang header looking kita sudah lebih seperti desain:



Namun, ingat bahwa aplikasi ini akan responsif! Jadi jika kita memeriksa gaya ini pada sebuah lebar sempit yang menggunakan alat-alat dev Chrome, kalian akan melihat teks pembungkus untuk Deskripsi sedikit funky karena text-indent



Untuk mengatasi ini, di norrower widths, kami akan menghapus indentasi teks dan benjolan teks Deskripsi turun dengan besar margin-top
sehingga pembungkus tampak lebih alami. Mari kita menulis query media untuk mempermudah kita:
1 |
@media screen and (max-width: 600px) { |
2 |
header p { |
3 |
text-indent: 0; |
4 |
margin-top: .5em; |
5 |
}
|
6 |
}
|
Nah, sekarang kita memiliki header responsif!



App Input
Tahap berikutnya merupakan peralihan ke daerah input dan output duplikatnya. Ingat mereka tampak seperti ini:



Pertama, kita tambahkan input field ke elemen HTML utama
yang kita buat sebelumnya:
1 |
<main>
|
2 |
<!-- input -->
|
3 |
<form class="submit"> |
4 |
<input type="url" placeholder="iTunes Link..."> |
5 |
<button type="submit">Gimmie</button> |
6 |
</form>
|
7 |
<!-- ./input -->
|
8 |
</main>
|
Sekarang kita memiliki sebuah form dengan input dan tombol kirim. Sejauh ini terlihat baik, tapi belum terlihat seperti keinginan kita. Kita harus mambahkan beberapa gaya.



Tambahkanlah beberapa gaya untuk elemen input dan tombol form kita.
1 |
/*
|
2 |
Form Input
|
3 |
Styles for the form input and button
|
4 |
*/
|
5 |
form { |
6 |
position: relative; |
7 |
}
|
8 |
|
9 |
form input{ |
10 |
width: 100%; |
11 |
display: block; |
12 |
font-size: 1em; |
13 |
padding: .625em .85em; |
14 |
padding-right: 7em; |
15 |
line-height: 1.5; |
16 |
margin: 0; |
17 |
border: 1px solid #bbb; |
18 |
box-shadow: 0 1px 3px rgba(0, 0, 0, .1) inset, |
19 |
0 2px 4px rgba(0, 0, 0, .1); |
20 |
border-radius: 3px; |
21 |
}
|
22 |
|
23 |
form input:focus { |
24 |
border-color: #298cda; |
25 |
}
|
26 |
|
27 |
form button { |
28 |
text-decoration: none; |
29 |
background: #196E76; |
30 |
height: 100%; |
31 |
position: absolute; |
32 |
right: 0; |
33 |
top: 0; |
34 |
line-height: 1.5; |
35 |
color: white; |
36 |
font-size: 1em; |
37 |
border-radius: 0 3px 3px 0; |
38 |
border: 0; |
39 |
outline: 0; |
40 |
text-align: center; |
41 |
-webkit-appearance: none; |
42 |
margin: 0; |
43 |
padding: 0 1em; |
44 |
font-family: 'Pacifico', serif; |
45 |
}
|
46 |
form button:hover { |
47 |
cursor: pointer; |
48 |
}
|
49 |
|
50 |
form button:disabled { |
51 |
opacity: .5; |
52 |
}
|
Di sini kita tambahkan beberapa gaya pada input form dan tombol serta beberapa states yang berbeda seperti :hover
, :focus
, dan :disabled
. Inilah yang memberikan gaya seperti yang kita dirancang dalam duplikatnya.



App Output
Pada point ini kita akan membuat sesuatu yang kita sebut dengan daerah "output". Pada tempat inilah secara dinamis kita membuat ikon yang dikembalikan oleh iTunes AP. Meskipun, pada inisial halaman awal, pengguna belum belum me-request apa pun. Jadi kita akan menggunakan desain states kosong dari sekarang. Ingat gambarannya, tampak seperti ini:



Kita tambahkan elemen main
HTML yang trlah dikerjakan:
1 |
<main>
|
2 |
<!-- input -->
|
3 |
<form class="submit"> |
4 |
<input type="url" placeholder="iTunes Link..."> |
5 |
<button type="submit">Gimmie</button> |
6 |
</form>
|
7 |
<!-- ./input -->
|
8 |
<!-- output -->
|
9 |
<div class="wrapper"> |
10 |
<div class="content"> |
11 |
<p><strong>Enter a valid iTunes app store link, i.e.</strong> <a href="https://itunes.apple.com/us/app/twitter/id333903271?mt=8">https://itunes.apple.com/us/app/twitter/id333903271?mt=8</a></p> |
12 |
<img src="assets/img/icon-placeholder.svg" alt="Icon placeholder" /> |
13 |
</div>
|
14 |
</div>
|
15 |
<!-- ./output -->
|
16 |
</main>
|
Perhatikan jika kita menambahkan output HTML tepat setelah memasukan HTML. Terdiri dari wrapper, yang merupakan kotak putih besar dalam desainnya, serta konten, yang berpusat dalam itu. Kita gunakan CSS untuk mengatur elemen .content
agar memiliki lebar maksimal
512 piksel, yang merupakan ukuran paling besar untuk menampilkan ikonnya. Untuk saat ini akan terlihat seperti ini:



Perhatikan ikon placeholder yang hilang. Jika kita kembalikan ke dokumen Sketsa, mudah menampilkan aset itu sebagai SVG untuk digunakan di browser.



Sekarang kita harus memiliki gambar yang muncul di browser.



Masukkan beberapa gaya pada kotak outputnya.
1 |
/*
|
2 |
Content Styles
|
3 |
Main container for content, i.e. the icons, error messages, etc
|
4 |
*/
|
5 |
.wrapper { |
6 |
background: #fff; |
7 |
border: 1px solid #ccc; |
8 |
text-align: center; |
9 |
padding: 2em; |
10 |
margin: .5em 0 2em; |
11 |
box-shadow: 0 2px 4px rgba(0, 0, 0, .1); |
12 |
border-radius: 3px; |
13 |
position: relative; |
14 |
}
|
15 |
|
16 |
.content { |
17 |
max-width: 512px; |
18 |
margin: 0 auto; |
19 |
position: relative; |
20 |
word-wrap: break-word; /* for long urls */ |
21 |
}
|
22 |
|
23 |
.content * { /* do a simple reset on elements in .content */ |
24 |
margin: 0; |
25 |
padding: 0; |
26 |
}
|
27 |
|
28 |
.content strong { |
29 |
font-weight: bold; |
30 |
display: block; |
31 |
}
|
Sebagian besar CSS yang kita tambahkan memiliki komentar dalam kode untuk menjelaskannya. Kami tambahkan gaya keluar wrappernya, karena, kami tidak melakukan penyetelan ulang CSS lengkap pada page, kita melakukan penyetelan ulang sederhana pada elemen HTML di dalam area konten kami dengan menerapkan .konten *
.
Terakhir, kita tambahkan beberapa style untuk mempertebal state kosongnya. Sekarang seharusnya akan menyerupai gambaran awalnya.



Bagus sekali!
Sekarang setelah struktur HTML-nya siap, tepat seperti gaya yang sesuai, kami siap untuk terjun dan menangani interaksi halaman dengan JavaScript!
Pada tutorial berikutnya (dan terakhir) dari seri ini, kami akan mencari tahu cara mengambil masukan pengguna, membuat permintaan API, dan menampilkan hasilnya di browser. Sampai jumpa!