Menambahkan Gaya ke Pembuatan Halaman Skeleton Kita
Indonesian (Bahasa Indonesia) translation by ⚡ Rova Rindrata (you can also view the original English article)
Dalam bagian proses pengembangan berkelanjutan kita, kita akan fokus pada gaya HTML. Tutorial ini akan memiliki tiga bagian utama:
- Menambahkan gambar
- Mengkonversi font ke font web
- Gaya pada setiap bagian
Mari dengan cepat mengingat kembali apa yang telah kita bangun sejauh ini:



Mengingat kita bertujuan untuk ini, kita memiliki sedikit yang wajar untuk dilakukan!
Menambahkan Gambar
Alih-alih memotong gambar latar untuk setiap bagian, kita akan mengunduh gambar dari www.unsplash.com, yang memiliki banyak gambar dan bebas untuk menggunakannya. Kita akan menggunakan gambar berikut ini:
Buat folder baru, sebut saja "images" dan unduh gambar disana. Jika Anda ingin mengoptimalkan dan menyimpan ulang mereka untuk melepaskan beberapa kilobyte lagi, silakan.
Selain itu, untuk gambar portofolio kita, kita akan meraih beberapa gambar trianglify yang agak bagus.



Unduh enam file SVG dan letakkan di folder "images/portfolio", masing-masing file harus diberi nama sebagai berikut: "work_1.svg", "work_2.svg" ... "work_6.svg".
Untuk bagian clients, people dan services, kita akan mengekspor gambar dari PSD. Saya tidak akan terlalu jauh ke dalam proses ini, karena ada banyak tutorial tentang bagaimana mengekspor gambar dari PSD. Alat yang saya suka dan gunakan secara pribadi, setiap hari, untuk mengekspor gambar disebut Semser.
Setiap gambar dari section harus ditempatkan di bawah direktori yang relevan "images/section_name". Struktur folder seharusnya terlihat seperti ini:



Mengkonversi Font ke Webfonts
Font yang digunakan di PSD adalah Amble, SlimJoe & BigJohn dan FontAwesome.
Untuk font SlimJoe and BigJohn, kita akan menggunakan FontSquirrel untuk mengubah dari otf ke webfonts. Pergi ke FontSquirrel dan unggah font yang diunduh dari sini. Layar akan terlihat seperti ini:
Penting: Kapan pun Anda menggunakan alat konversi seperti Fontsquirrel, Anda harus yakin bahwa file font yang Anda konversi memiliki lisensi yang sesuai.



Setelah FontSquirrel selesai melakukan konversi, Anda bisa mengunduh kitnya. Di dalam arsip Anda akan memiliki file berikut:



Agar semuanya tetap bersih, setelah mengunduh Amble, SlimJoe & BigJohn dan FontAwesome, kita perlu memindahkan setiap paket font ke dalam folder "fonts". Struktur folder untuk font akan terlihat seperti ini:



Ok, sekarang kita sudah selesai dengan folder "images" dan "fonts", tugas yang tersisa adalah menata bagian-bagian sesuai dengan PSD, jadi mari kita lanjutkan ke bagian selanjutnya.
Menata Bagian-bagian
Setiap bagian yang disajikan dalam tutorial sebelumnya membutuhkan beberapa sentuhan CSS, untuk menghadirkan tampilan dan nuansa PSD. Mari kita mulai dengan membuat file baru, yang disebut "style.css" di mana kita akan menulis semua css kustom kita untuk bagian-bagiannya.
Catatan: Anda mungkin merasa nyaman menggunakan preprocessor seperti Sass atau LESS, dalam hal ini Anda akan menggabungkan file Anda menjadi satu, tapi demi daya tarik global, kita akan tetap berpegang pada CSS kuno yang bagus dalam tutorial ini.
Jadi, secara singkat, kita telah mengubah font kita menjadi webfonts dan sekarang kita perlu mereferensikannya di CSS kita. Kode untuk font Amble, SlimJoe and BigJohn terlihat seperti ini:
1 |
/* Fonts */
|
2 |
/* Generated by Font Squirrel (http://www.fontsquirrel.com) */
|
3 |
|
4 |
/* SlimJoe */
|
5 |
@font-face { |
6 |
font-family: 'slim_joeregular'; |
7 |
src: url('../fonts/SlimJoe/slim_joe-webfont.eot'); |
8 |
src: url('../fonts/SlimJoe/slim_joe-webfont.eot?#iefix') format('embedded-opentype'), |
9 |
url('../fonts/SlimJoe/slim_joe-webfont.woff2') format('woff2'), |
10 |
url('../fonts/SlimJoe/slim_joe-webfont.woff') format('woff'), |
11 |
url('../fonts/SlimJoe/slim_joe-webfont.ttf') format('truetype'), |
12 |
url('../fonts/SlimJoe/slim_joe-webfont.svg#slim_joeregular') format('svg'); |
13 |
font-weight: normal; |
14 |
font-style: normal; |
15 |
}
|
16 |
|
17 |
/* BigJohn */
|
18 |
@font-face { |
19 |
font-family: 'big_johnregular'; |
20 |
src: url('../fonts/BigJohn/big_john-webfont.eot'); |
21 |
src: url('../fonts/BigJohn/big_john-webfont.eot?#iefix') format('embedded-opentype'), |
22 |
url('../fonts/BigJohn/big_john-webfont.woff2') format('woff2'), |
23 |
url('../fonts/BigJohn/big_john-webfont.woff') format('woff'), |
24 |
url('../fonts/BigJohn/big_john-webfont.ttf') format('truetype'), |
25 |
url('../fonts/BigJohn/big_john-webfont.svg#big_johnregular') format('svg'); |
26 |
font-weight: normal; |
27 |
font-style: normal; |
28 |
}
|
29 |
|
30 |
/* == http://www.fontsquirrel.com/fonts/amble */
|
31 |
|
32 |
/* Amble Regular */
|
33 |
@font-face { |
34 |
font-family: 'ambleregular'; |
35 |
src: url('../fonts/Amble/Regular/Amble-Regular-webfont.eot'); |
36 |
src: url('../fonts/Amble/Regular/Amble-Regular-webfont.eot?#iefix') format('embedded-opentype'), |
37 |
url('../fonts/Amble/Regular/Amble-Regular-webfont.woff') format('woff'), |
38 |
url('../fonts/Amble/Regular/Amble-Regular-webfont.ttf') format('truetype'), |
39 |
url('../fonts/Amble/Regular/Amble-Regular-webfont.svg#ambleregular') format('svg'); |
40 |
font-weight: normal; |
41 |
font-style: normal; |
42 |
}
|
43 |
|
44 |
/* Amble Bold */
|
45 |
@font-face { |
46 |
font-family: 'amblebold'; |
47 |
src: url('../fonts/Amble/Bold/Amble-Bold-webfont.eot'); |
48 |
src: url('../fonts/Amble/Bold/Amble-Bold-webfont.eot?#iefix') format('embedded-opentype'), |
49 |
url('../fonts/Amble/Bold/Amble-Bold-webfont.woff') format('woff'), |
50 |
url('../fonts/Amble/Bold/Amble-Bold-webfont.ttf') format('truetype'), |
51 |
url('../fonts/Amble/Bold/Amble-Bold-webfont.svg#amblebold') format('svg'); |
52 |
font-weight: normal; |
53 |
font-style: normal; |
54 |
}
|
55 |
|
56 |
/* Amble Light */
|
57 |
@font-face { |
58 |
font-family: 'amblelight'; |
59 |
src: url('../fonts/Amble/Light/Amble-Light-webfont.eot'); |
60 |
src: url('../fonts/Amble/Light/Amble-Light-webfont.eot?#iefix') format('embedded-opentype'), |
61 |
url('../fonts/Amble/Light/Amble-Light-webfont.woff') format('woff'), |
62 |
url('../fonts/Amble/Light/Amble-Light-webfont.ttf') format('truetype'), |
63 |
url('../fonts/Amble/Light/Amble-Light-webfont.svg#amblelight') format('svg'); |
64 |
font-weight: normal; |
65 |
font-style: normal; |
66 |
}
|
FontAwesome menyediakan file CSS, yang disebut font-awesome.css yang perlu ditempatkan di dalam folder css. Baik style.css dan font-awesome.css memerlukan referensi di dalam index.html seperti yang dapat Anda lihat dari cuplikan di bawah ini.
1 |
<!-- CSS
|
2 |
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
|
3 |
<link rel="stylesheet" href="css/normalize.css"> |
4 |
<link rel="stylesheet" href="css/skeleton.css"> |
5 |
<link rel="stylesheet" href="css/font-awesome.css"> |
6 |
<link rel="stylesheet" href="css/style.css"> |
Setelah menambahkan referensi untuk file gaya, mari melompat ke css/style.css dan mulai menambahkan beberapa gaya default, menimpa default Skeleton. Hal pertama yang ingin saya lakukan adalah menambahkan box-sizing
ke semua elemen sebagai berikut:
1 |
/* Personal Flavour */
|
2 |
* { |
3 |
-webkit-box-sizing: border-box; |
4 |
-moz-box-sizing: border-box; |
5 |
-ms-box-sizing: border-box; |
6 |
box-sizing: border-box; |
7 |
}
|
Sekarang mulai penulisan ulang tipografi. Karena desainer menambahkan font kustom dan kita telah mengubahnya menjadi font web, kita perlu menetapkannya ke judul, paragraf dan body. Tipografi memainkan peran penting saat merancang situs web; kita perlu memastikan bahwa kita memenuhi spesifikasi desainernya.
1 |
/* Typography */
|
2 |
|
3 |
body { |
4 |
font-size: 16px; |
5 |
letter-spacing: .05em; |
6 |
color: #222222; |
7 |
font-family: "amblelight", "Raleway", Helvetica, Arial, sans-serif; |
8 |
}
|
9 |
h1, h3{ |
10 |
font-family: "big_johnregular", "Raleway", "Helvetica Neue", Helvetica, Arial, sans-serif; |
11 |
}
|
12 |
h4 { |
13 |
font-size: 22px; |
14 |
}
|
15 |
h3 { |
16 |
font-size: 28px; |
17 |
}
|
Seperti yang bisa Anda lihat dari potongannya, h1
dan h3
berbagi font-family
yang sama, BigJohn. Kita juga perlu membuat beberapa perubahan untuk tipografi body
, seperti font-size
, letter-spacing
, color
dan font-family
.
Jika Anda ingat dari bagian pertama, saat kita menulis HTML, kita membuat beberapa kelas utilitas kustom ke elemen tengah, dan juga kelas separator yang memiliki dua warna berbeda, #222
(abu-abu gelap) dan #d87843
(oranye). Untuk memusatkan elemen, kita akan memposisikannya secara absolute dan menggunakan properti transform
untuk memposisikannya dengan benar.
1 |
.centered { |
2 |
position: absolute; |
3 |
top: 50%; |
4 |
left: 50%; |
5 |
-webkit-transform: translate(-50%,-50%); |
6 |
-moz-transform: translate(-50%,-50%); |
7 |
-ms-transform: translate(-50%,-50%); |
8 |
-o-transform: translate(-50%,-50%); |
9 |
transform: translate(-50%,-50%); |
10 |
}
|
11 |
.vertical-centered { |
12 |
position: absolute; |
13 |
top: 50%; |
14 |
-webkit-transform: translateY(-50%); |
15 |
-moz-transform: translateY(-50%); |
16 |
-ms-transform: translateY(-50%); |
17 |
-o-transform: translateY(-50%); |
18 |
transform: translateY(-50%); |
19 |
width: 100%; |
20 |
}
|
Idenya di sini adalah bahwa dibutuhkan dimensi elemen saat ini dan memindahkannya. Misalnya, translateY(-50%)
akan memindahkan elemen ke atas sebesar 50% dari tingginya.
Pada tutorial sebelumnya, kita membuat elemen dengan kelas separator untuk membuat garis dari desainnya. Gayanya sangat minim, tapi triknya disini adalah kita menggunakan pseudo element :before
agar membuatnya terlihat. Kelas separator hanyalah penolong untuk jarak dan keselarasan teks.
1 |
/* Separator */
|
2 |
|
3 |
.separator { |
4 |
position: relative; |
5 |
margin-bottom: 1.7em; |
6 |
padding-bottom: 1.7em; |
7 |
text-align: center; |
8 |
font-weight: bold; |
9 |
text-transform: uppercase; |
10 |
color: inherit; |
11 |
}
|
12 |
.separator:before { |
13 |
content: ''; |
14 |
position: absolute; |
15 |
top: 100%; |
16 |
left: 50%; |
17 |
width: 86px; |
18 |
height: 2px; |
19 |
background-color: #222; |
20 |
|
21 |
-webkit-transform: translateX(-50%); |
22 |
-ms-transform: translateX(-50%); |
23 |
-o-transform: translateX(-50%); |
24 |
transform: translateX(-50%); |
25 |
}
|
26 |
.separator.orange:before { |
27 |
background-color: #d87843; |
28 |
}
|
Skeleton dilengkapi dengan gaya yang telah ditentukan untuk tombol:



Tombol SkeletonDalam desain kita ada dua jenis tombol yang berbeda, salah satunya memiliki garis tepi dan yang lainnya dibulatkan untuk tombol putar dari bagian video.
1 |
/* Button inverted */
|
2 |
|
3 |
.button.inverted { |
4 |
font-size: inherit; |
5 |
padding: 25px 70px; |
6 |
color: white; |
7 |
height: auto; |
8 |
border: 3px solid white; |
9 |
text-transform: none; |
10 |
font-size: 26px; |
11 |
font-family: "ambleregular"; |
12 |
}
|
13 |
|
14 |
.button.inverted:hover { |
15 |
background: white; |
16 |
color: #222; |
17 |
}
|
18 |
|
19 |
.button.circle { |
20 |
padding: 0; |
21 |
width: 2.5em; |
22 |
height: 2.5em; |
23 |
line-height: 2.5em; |
24 |
border-radius: 50%; |
25 |
text-align: center; |
26 |
-webkit-box-sizing: content-box; |
27 |
-moz-box-sizing: content-box; |
28 |
-ms-box-sizing: content-box; |
29 |
box-sizing: content-box; |
30 |
}
|
Kelas tambahan untuk membuat tombol yang bergaris tepi adalah terbalik, dan memiliki latar belakang transparan dan #222
untuk color dan border. Pada hover, warna latar belakangnya adalah #222
dan warna teksnya adalah white
. Saya juga menambahkan padding substansial untuk keperluan jarak dan desain.
Gaya Default untuk Bagian-bagian
Jika Anda ingat, setiap bagian memiliki nama kelas yang berbeda yang akan kita targetkan sekarang. Keseluruhan ide di sini adalah bahwa setiap bagian harus memiliki background-color
atau background-image
.
Selain itu, bagian-bagian dengan background-image, untuk menghindari pengulangan, memiliki kelas lain featured-bg-image
yang pada dasarnya menentukan posisi background-image, ukuran dan opacity, dan menciptakan efek background-cover yang akan meregangkan gambar di seluruh ukuran kontainer.
Setiap bagian memiliki padding 80px
untuk bagian top
dan bottom
dan 0px
untuk left
dan right
.
1 |
/* =Section general styling
|
2 |
-------- */
|
3 |
|
4 |
section { |
5 |
text-align: center; |
6 |
padding: 80px 0; |
7 |
}
|
8 |
|
9 |
/*
|
10 |
|
11 |
Section with featured background image. Every section which will have this
|
12 |
class will get the effect with a background cover.
|
13 |
|
14 |
*/
|
15 |
|
16 |
.featured-bg-image { |
17 |
position: relative; |
18 |
background-color: #222222; |
19 |
color: white; |
20 |
min-height: 500px; |
21 |
}
|
22 |
|
23 |
.featured-bg-image:before { |
24 |
content: ''; |
25 |
position: absolute; |
26 |
top: 0; right: 0; left: 0; bottom: 0; |
27 |
background-size: cover; |
28 |
background-position: 50% 50%; |
29 |
background-repeat: no-repeat; |
30 |
opacity: .35; |
31 |
}
|
32 |
|
33 |
.help:before { |
34 |
background: url("../images/help_bg_image.jpg"); |
35 |
}
|
36 |
|
37 |
.creativity:before { |
38 |
background: url("../images/creativity_bg_image.jpg"); |
39 |
background-position: 50% 0; |
40 |
}
|
41 |
|
42 |
.quote:before { |
43 |
background: url("../images/quote_bg_image.jpg"); |
44 |
}
|
45 |
|
46 |
.video-iframe{ |
47 |
position: absolute; |
48 |
left: 0; top: 0; bottom: 0; right: 0; |
49 |
height: 100%; |
50 |
width: 100%; |
51 |
display: none; |
52 |
}
|
53 |
|
54 |
.video:before { |
55 |
background: url("../images/video_bg_image.jpg"); |
56 |
}
|
57 |
|
58 |
.clients { |
59 |
background-color: #f4f4f4; |
60 |
}
|
61 |
|
62 |
.footer { |
63 |
background-color: #222222; |
64 |
color: white; |
65 |
}
|
Navigasi
Navigasi berasal dari ikon hamburger dan unordered list dari tautan. Navigasi adalah fixed, untuk tetap di atas segalanya saat bergulir. Ini memiliki lebar 320px
dan tinggi 100%
. Untuk menempatkan navigasi di luar situs web, kita menggunakan properti transform
translate
(yang juga kita gunakan untuk elemen tengah) tapi kali ini kita translate 100%
dari width
-nya, jadi tidak akan terlihat.
Tautan di dalam navigasi memiliki teks huruf besar, color
white dan width
100%
. Saya juga menghapus text-decoration
yang ada pada tautan dan membuat font-weight
bold.
Ikon hamburger memiliki font-size
30px
dan color
white, dengan padding
20px
di sekelilingnya. Saya juga menambahkan efek transisi untuk background-color
dan kondisi active
. Sesuatu yang ingin saya fokuskan lebih jauh adalah penempatan ikon hamburger, karena seperti yang dapat Anda lihat dari desainnya, ia berada "di luar" navigasi. Solusi cepat untuk ini adalah menempatkannya absolute dan left 100%. left: 100%
mewakili lebar navigasi, jadi sekarang kita bisa menambah lebar navigasi dan ikon akan selalu berada di luarnya.
1 |
/* =Navigation
|
2 |
-------- */
|
3 |
|
4 |
.navigation { |
5 |
position: fixed; |
6 |
top: 0; left: 0; bottom: 0; |
7 |
height: 100%; |
8 |
z-index: 3; |
9 |
width: 320px; |
10 |
-webkit-transform: translateX(-100%); |
11 |
-moz-transform: translateX(-100%); |
12 |
-ms-transform: translateX(-100%); |
13 |
-o-transform: translateX(-100%); |
14 |
transform: translateX(-100%); |
15 |
|
16 |
-webkit-transition: all .5s ease-in-out; |
17 |
-moz-transition: all .5s ease-in-out; |
18 |
-ms-transition: all .5s ease-in-out; |
19 |
-o-transition: all .5s ease-in-out; |
20 |
transition: all .5s ease-in-out; |
21 |
}
|
22 |
|
23 |
.navigation.active { |
24 |
-webkit-transform: translateX(0); |
25 |
-moz-transform: translateX(0); |
26 |
-ms-transform: translateX(0); |
27 |
-o-transform: translateX(0); |
28 |
transform: translateX(0); |
29 |
}
|
30 |
|
31 |
.navigation ul { |
32 |
list-style: none; |
33 |
position: absolute; |
34 |
top: 0; |
35 |
left: 0; |
36 |
bottom: 0; |
37 |
right: 0; |
38 |
margin: 0; |
39 |
background: #222; |
40 |
}
|
41 |
.navigation ul li { |
42 |
display: block; |
43 |
text-align: center; |
44 |
margin: 0; |
45 |
padding: 0; |
46 |
}
|
47 |
.navigation ul li a { |
48 |
display: block; |
49 |
height: 100%; |
50 |
padding: 10px 0; |
51 |
|
52 |
text-decoration: none; |
53 |
text-transform: uppercase; |
54 |
color: white; |
55 |
font-weight: 900; |
56 |
}
|
57 |
|
58 |
.navigation ul li a.current, |
59 |
.navigation ul li a:hover { |
60 |
color: #222; |
61 |
background-color: white; |
62 |
}
|
63 |
|
64 |
.navigation .menu-icon { |
65 |
color: white; |
66 |
font-size: 30px; |
67 |
line-height: 1em; |
68 |
|
69 |
position: absolute; |
70 |
left: 100%; |
71 |
padding: 20px; |
72 |
|
73 |
-webkit-transition: all .15s ease-in-out; |
74 |
-moz-transition: all .15s ease-in-out; |
75 |
-ms-transition: all .15s ease-in-out; |
76 |
-o-transition: all .15s ease-in-out; |
77 |
transition: all .15s ease-in-out; |
78 |
}
|
79 |
|
80 |
.navigation .menu-icon.active { |
81 |
background-color: rgba(0,0,0, .3); |
82 |
}
|
83 |
.navigation .menu-icon:hover { |
84 |
color: #222; |
85 |
background-color: transparent; |
86 |
}
|
Bagian Hero
Bagian hero mewarisi gaya yang sama dengan bagian dengan gambar latar belakang unggulan, tapi sekarang kita ingin memiliki pendekatan yang berbeda, karena ada banyak gaya untuknya. Ini terdiri dari background-image sebagai latar belakang, background-color sebagai pengisi warna, gradient-overlay dan tinggi yang berbeda: 500px.
Efek gradient-overlay dibuat dengan pseudo element (:after
) dibuat menggunakan Gradient CSS3. Saya membuat efek ini karena memberi kita fleksibilitas untuk mengubah estetika gambar tanpa membuka Photoshop.
1 |
/* =Hero
|
2 |
-------- */
|
3 |
|
4 |
.hero { |
5 |
padding: 0; |
6 |
min-height: 500px; |
7 |
text-align: center; |
8 |
position: relative; |
9 |
background-color: #d56d4d; /* layer fill content */ |
10 |
color: white; |
11 |
}
|
12 |
.hero-image { |
13 |
background: url("../images/hero_bg_image.jpg") no-repeat; |
14 |
background-size: cover; |
15 |
background-position: 50% 50%; |
16 |
position: absolute; |
17 |
top: 0; right: 0; bottom: 0; left: 0; |
18 |
opacity: .9; |
19 |
}
|
20 |
.hero-image:after { |
21 |
content: ''; |
22 |
opacity: .87; /* layer alpha */ |
23 |
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/Pgo8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDEwMCAxMDAiIHByZXNlcnZlQXNwZWN0UmF0aW89Im5vbmUiPjxsaW5lYXJHcmFkaWVudCBpZD0iaGF0MCIgZ3JhZGllbnRVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giIHgxPSIxMDAlIiB5MT0iNTAlIiB4Mj0iLTEuNDIxMDg1NDcxNTIwMmUtMTQlIiB5Mj0iNTAlIj4KPHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iI2JiNDI0MiIgc3RvcC1vcGFjaXR5PSIxIi8+CjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iI2VmYWI0YSIgc3RvcC1vcGFjaXR5PSIxIi8+CiAgIDwvbGluZWFyR3JhZGllbnQ+Cgo8cmVjdCB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCIgZmlsbD0idXJsKCNoYXQwKSIgLz4KPC9zdmc+); /* gradient overlay */ |
24 |
background-image: -moz-linear-gradient(right, #bb4242 0%, #efab4a 100%); /* gradient overlay */ |
25 |
background-image: -o-linear-gradient(right, #bb4242 0%, #efab4a 100%); /* gradient overlay */ |
26 |
background-image: -webkit-linear-gradient(right, #bb4242 0%, #efab4a 100%); /* gradient overlay */ |
27 |
background-image: linear-gradient(right, #bb4242 0%, #efab4a 100%); /* gradient overlay */ |
28 |
position: absolute; |
29 |
top: 0; right: 0; bottom: 0; left: 0; |
30 |
}
|
31 |
.hero h2 { |
32 |
font-size: 24px; |
33 |
}
|
34 |
|
35 |
.hero p { |
36 |
padding: 0 15%; |
37 |
}
|
38 |
.hero .separator:before { |
39 |
background-color: white; |
40 |
}
|
Bagian "Contact us"
Bagian "Contact us" dibuat dari dua subbagian; satu untuk kiri, satu untuk sisi kanan, dan memiliki warna #f2f2f2
sebagai warna latar belakang. Sisi kiri memiliki padding 70px di sekelilingnya dan latar belakang transparan. Item daftar social-links di-float, list style none dan 10px untuk margin-right
agar menambahkan spasi di antara item.
Bentuknya sendiri tidak memiliki terlalu banyak gaya (selain 70px untuk padding dan warna latar belakang) karena Skeleton telah menangani hal itu untuk kita.
1 |
/*Contact*/
|
2 |
|
3 |
.contact-us { |
4 |
background-color: #f2f2f2; |
5 |
text-align: left; |
6 |
}
|
7 |
.contact-us-details { |
8 |
padding: 70px; |
9 |
}
|
10 |
.contact-us-details h5 { |
11 |
font-size: 2rem; |
12 |
}
|
13 |
.contact-us-details .social-links a { |
14 |
color: #222; |
15 |
display: block; |
16 |
}
|
17 |
|
18 |
.contact-us-details .social-links li { |
19 |
list-style: none; |
20 |
float: left; |
21 |
font-size: 24px; |
22 |
margin-right: 10px; |
23 |
}
|
24 |
.contact-us-details .social-links li:last-child { |
25 |
margin-right: 0; |
26 |
}
|
27 |
.contact-us-form { |
28 |
padding: 70px; |
29 |
background-color: #e4e4e4; |
30 |
}
|
31 |
.contact-us .row { |
32 |
margin: 0; |
33 |
}
|
Bagian Work
Filter Work
Item filter Work memiliki "SlimJoe" untuk font-family
, teksnya adalah huruf besar, ukuran font 18px dan 0.5em untuk margin kiri dan kanan agar menciptakan ruang di antara keduanya. Status active
memiliki font-family yang berbeda, "BigJohn" untuk membedakannya dari sisa item saat aktif.
1 |
/* Work Filters */
|
2 |
|
3 |
.work-filters { |
4 |
list-style: none; |
5 |
}
|
6 |
.work-filters li { |
7 |
display: inline-block; |
8 |
margin: 0 .5em; |
9 |
font-size: 18px; |
10 |
text-transform: uppercase; |
11 |
font-family: "slim_joeregular"; |
12 |
}
|
13 |
.work-filters li a { |
14 |
color: inherit; |
15 |
text-decoration: none; |
16 |
}
|
17 |
.work-filters li.active { |
18 |
font-family: "big_johnregular" |
19 |
}
|
Item work dan detail work
Item work memiliki tinggi tetap 360px dan 33% untuk lebar, memberi kita grid dengan tiga item per baris. Ruang "palsu" antar item dibuat dengan border yang diterapkan pada setiap item.
Detail work lebih merupakan keterangan untuk setiap item, diregangkan di sepanjang item work dengan posisi absolute, dan 0px untuk kiri, kanan, atas, dan bawah. Ini juga memiliki latar belakang dengan opacity .75, menciptakan efek overlay karena berada di atas gambar. Secara default, kontainer detail tersembunyi, dan bila item work di-hover, ia menjadi terlihat–dianimasikan melalui transisi CSS.
1 |
/* Work items */
|
2 |
|
3 |
.work-items { |
4 |
list-style: none; |
5 |
width: 100%; |
6 |
display: inline-block; |
7 |
}
|
8 |
.work-items li { |
9 |
position: relative; |
10 |
overflow: hidden; |
11 |
height: 360px; |
12 |
|
13 |
/* important because we need to overwrite the default skeleton */
|
14 |
margin: 0!important; |
15 |
width: 33%; |
16 |
border: 10px solid white; |
17 |
|
18 |
position: relative; |
19 |
}
|
20 |
.work-items li:nth-child(4n) { |
21 |
margin-left: 0; |
22 |
}
|
23 |
.work-items li img{ |
24 |
width: auto; |
25 |
height: 100%; |
26 |
display: block; |
27 |
}
|
28 |
/* Work detail */
|
29 |
|
30 |
.work-detail { |
31 |
position: absolute; |
32 |
top: 0; bottom: 0; left: 0; right: 0; |
33 |
|
34 |
opacity: 0; |
35 |
background: rgba(0,0,0,.75); |
36 |
color: white; |
37 |
|
38 |
-webkit-transition: all .3s ease-in-out; |
39 |
-moz-transition: all .3s ease-in-out; |
40 |
-ms-transition: all .3s ease-in-out; |
41 |
-o-transition: all .3s ease-in-out; |
42 |
transition: all .3s ease-in-out; |
43 |
}
|
44 |
.work-detail h3 { |
45 |
font-size: 16px; |
46 |
letter-spacing: .05em; |
47 |
}
|
48 |
.work-detail p { |
49 |
font-size: 20px; |
50 |
text-transform: capitalize; |
51 |
padding-left: 20px; |
52 |
padding-right: 20px; |
53 |
}
|
54 |
|
55 |
.work-items li:hover .work-detail{ |
56 |
opacity: 1; |
57 |
box-shadow: inset 0 0 0 10px #222; |
58 |
}
|
Bagian Clients
Bagian Clients adalah daftar inline sederhana. Satu-satunya hal yang layak disebutkan di sini adalah bahwa saya menggunakan filter CSS grayscale untuk desaturate gambarnya. Lebar untuk setiap item adalah 18% dan 2% untuk jarak kanan.
1 |
/* Clients */
|
2 |
|
3 |
.clients { |
4 |
list-style: none; |
5 |
}
|
6 |
.clients li { |
7 |
display: inline-block; |
8 |
width: 18%; |
9 |
margin-right: 2%; |
10 |
}
|
11 |
.clients li:last-child { |
12 |
margin-right: 0; |
13 |
}
|
14 |
.clients li img { |
15 |
max-width: 100%; |
16 |
height: auto; |
17 |
display: block; |
18 |
-webkit-filter: grayscale(100%); |
19 |
-moz-filter: grayscale(100%); |
20 |
filter: grayscale(100%); |
21 |
}
|
Bagian "About"
Bagian About, mewarisi penataan bagian work, kecuali untuk tinggi item, 300px.
1 |
/* About */
|
2 |
|
3 |
.people-list { |
4 |
list-style: none; |
5 |
margin: 70px 0; |
6 |
width: 100%; |
7 |
}
|
8 |
.people-list li { |
9 |
position: relative; |
10 |
height: 300px; |
11 |
overflow: hidden; |
12 |
}
|
13 |
.people-list li img { |
14 |
width: auto; |
15 |
height: 100%; |
16 |
display: block; |
17 |
}
|
18 |
|
19 |
.people-list .people-hover { |
20 |
position: absolute; |
21 |
top: 0; bottom: 0; left: 0; right: 0; |
22 |
background: rgba(0,0,0,.45); |
23 |
|
24 |
opacity: 0; |
25 |
|
26 |
-webkit-transition: all .3s ease-in-out; |
27 |
-moz-transition: all .3s ease-in-out; |
28 |
-ms-transition: all .3s ease-in-out; |
29 |
-o-transition: all .3s ease-in-out; |
30 |
transition: all .3s ease-in-out; |
31 |
}
|
32 |
|
33 |
.people-list .people-hover a { |
34 |
position: absolute; |
35 |
top: 10px; |
36 |
right: 10px; |
37 |
color: white; |
38 |
}
|
39 |
|
40 |
/* About people details */
|
41 |
|
42 |
.people-list .people-detail { |
43 |
position: absolute; |
44 |
bottom: 0; |
45 |
width: 100%; |
46 |
text-align: center; |
47 |
padding: 0 20px; |
48 |
z-index: 1; |
49 |
color: white; |
50 |
}
|
51 |
.people-list .people-detail h3 { |
52 |
font-size: 22px; |
53 |
margin-bottom: 0; |
54 |
}
|
55 |
.people-list .people-detail p { |
56 |
font-size: 16px; |
57 |
}
|
58 |
|
59 |
.people-list li:hover .people-hover{ |
60 |
opacity: 1; |
61 |
box-shadow: inset 0 0 0 5px #222; |
62 |
}
|
Item terakhir dari daftar memiliki gaya yang berbeda, karena tidak memiliki efek hover. Warna latar belakang adalah putih dan warna border sekitarnya yang berbeda.
1 |
/* Feature people hiring */ |
2 |
|
3 |
.people-list li.blank-feature{ |
4 |
box-shadow: inset 0 0 0 3px #222; |
5 |
} |
6 |
.people-list li.blank-feature img { |
7 |
visibility: hidden; |
8 |
} |
9 |
.people-list li.blank-feature h3 { |
10 |
font-size: 26px; |
11 |
} |
Bagian “Services”
Gambar untuk services setinggi 150px dan margin bawah 20px. Seperti yang dapat Anda lihat dari kodenya, gambar memiliki display block yang berbeda dan 100% untuk max-width.
1 |
/* Services */
|
2 |
|
3 |
.services { |
4 |
list-style: none; |
5 |
margin: 70px 0; |
6 |
}
|
7 |
|
8 |
.services .service-image { |
9 |
height: 150px; |
10 |
margin-bottom: 20px; |
11 |
}
|
12 |
|
13 |
.services .service-image img{ |
14 |
display: block; |
15 |
max-width: 100%; |
16 |
margin: 0 auto; |
17 |
text-align: center; |
18 |
}
|
19 |
|
20 |
.services p { |
21 |
font-size: 16px; |
22 |
letter-spacing: 0; |
23 |
}
|
Sifat Responsif
Karena kita menggunakan sistem grid Skeleton, situs web responsif sudah termasuk, namun masih ada beberapa masalah penataan untuk ukuran font, margin, padding dan penjajaran.
Seperti yang dapat Anda lihat dari kode di bawah ini, padding tombol lebih kecil untuk tampilan mobile.
Untuk tabel, item work harus memiliki lebar 100% dan item people harus dua buah per baris. Kita juga perlu mengurangi padding untuk bagian contact dan social link akan menjadi lebar 33% dan sejajar di tengah.
1 |
/* Media Queries |
2 |
–––––––––––––––––––––––––––––––––––––––––––––––––– */ |
3 |
|
4 |
/* Larger than mobile */ |
5 |
@media (max-width: 400px) { |
6 |
.button.inverted { |
7 |
padding: 15px; |
8 |
} |
9 |
} |
10 |
@media (min-width: 400px) and (max-width: 750px) { |
11 |
.work-items li.isotope-item.columns { |
12 |
width: 100%; |
13 |
} |
14 |
.people-list li.people-list-item.columns { |
15 |
width: 46%; |
16 |
margin: 2%; |
17 |
box-sizing: content-box; |
18 |
} |
19 |
.contact-us-details { |
20 |
padding: 70px 25px; |
21 |
text-align: center; |
22 |
} |
23 |
.contact-us-details .social-links li { |
24 |
text-align: center; |
25 |
width: 33%; |
26 |
margin: 0; |
27 |
} |
28 |
.contact-us-details h5 { |
29 |
font-size: 1.7rem; |
30 |
} |
31 |
|
32 |
} |
Kesimpulan
Jika Anda memanfaatkan kerangka Skeleton, seperti yang dapat Anda lihat dari tutorial ini, sebagian besar pekerjaan berat dilakukan dengan mudah, memberi Anda ketenangan pikiran untuk sebagian besar dari apa yang Anda bangun.
Benar, Anda perlu menerapkan font familly yang berbeda, ukuran font, jarak dan, bila diperlukan, gaya tombol yang berbeda tapi hanya tentang itu.
Itu untuk pelajaran ini, saya harap Anda menikmatinya, dan saya tak sabar untuk bertemu dengan Anda di tutorial berikutnya dimana kita akan menerapkan JavaScript. Sampai jumpa!