Advertisement
  1. Web Design
  2. Web Apps

Membuat Aplikasi Web Berbasis API Dengan HTML dan CSS

Scroll to top
Read Time: 8 min
This post is part of a series called Building a Mini, API-Driven Web App.
Designing an API-Driven Web App in Sketch
Connecting an API-Driven Web App with Javascript

() translation by (you can also view the original English article)

Final product imageFinal product imageFinal product image
What You'll Be Creating

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:

Screenshot of the header component in SketchScreenshot of the header component in SketchScreenshot of the header component in Sketch

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 &amp; Mac apps.</p>
4
</header>

Sekarang kita telah memiliki nama aplikasi serta keterangan di bagian atas halaman. Tapi dengan gaya yang biasa.

Screenshot of HTML headerScreenshot of HTML headerScreenshot of HTML header

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:

Screenshot of HTML header after adding stylesScreenshot of HTML header after adding stylesScreenshot of HTML header after adding styles

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

Screenshot of header text wrappingScreenshot of header text wrappingScreenshot of header text wrapping

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!

Screenshot of completed headerScreenshot of completed headerScreenshot of completed header

App Input

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

Screenshot of the input component in SketchScreenshot of the input component in SketchScreenshot of the input component in Sketch

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.

Screenshot of app input without stylesScreenshot of app input without stylesScreenshot of app input without styles

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.

Screenshot of styled inputScreenshot of styled inputScreenshot of styled input

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:

Screenshot of the zero state in SketchScreenshot of the zero state in SketchScreenshot of the zero state in Sketch

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:

Screenshot of output without stylesScreenshot of output without stylesScreenshot of output without styles

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

Screenshot of outputing icon placeholder in sketchScreenshot of outputing icon placeholder in sketchScreenshot of outputing icon placeholder in sketch

Sekarang kita harus memiliki gambar yang muncul di browser.

Screenshot of output without stylesScreenshot of output without stylesScreenshot of output without styles

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.

Screenshot of output with stylesScreenshot of output with stylesScreenshot of output with styles

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! 

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.