Buat Twitter Clone Dari Awal: Desain
Indonesian (Bahasa Indonesia) translation by Fodal Fadul (you can also view the original English article)
Artikel ini merupakan pertama dalam upaya kelompok baru oleh Nettuts + staf, yang mencakup proses merancang dan membangun sebuah aplikasi web dari awal - dalam berbagai bahasa! Kita akan menggunakan sebuah fiksi Twitter-clone, disebut Ribbit, sebagai dasar untuk seri ini.
Dalam tutorial ini, kita perlu fokus pada UI. Kita akan memanfaatkan yang populer kurang Preprocessor untuk membuat CSS kami sebagai dikelola mungkin.
Pengenalan
Pastikan untuk men-download aset untuk tutorial ini, jika bekerja sepanjang.
Tutorial ini dibagi menjadi lima bagian utama, yang menjelaskan bagaimana gaya berbagai halaman tata letak Ribbit's. Aku akan referensi elemen HTML menggunakan CSS penyeleksi untuk membuatnya lebih mudah untuk memahami. Tapi sebelum menyelam ke dalam tata letak, mari kita secara singkat membahas bersarang.
Bersarang
Dalam CSS, referensi elemen bersarang dapat mengakibatkan panjang penyeleksi. Sebagai contoh:
1 |
someId { |
2 |
/* ... */
|
3 |
}
|
4 |
|
5 |
someId div.someClass { |
6 |
/* ... */
|
7 |
}
|
8 |
|
9 |
someId div.someClass p.someOtherClass { |
10 |
/* ... */
|
11 |
}
|
12 |
|
13 |
someId div.someClass p.someOtherClass target { |
14 |
/* ... */
|
15 |
}
|
Dan dapat tumbuh lebih besar! Dengan kurang, Anda dapat menggabungkan salah satu elemen lain, sehingga lebih mudah untuk membaca:
1 |
someId { |
2 |
/* ... */
|
3 |
div.someClass { |
4 |
/* ... */
|
5 |
p.someOtherClass { |
6 |
/* ... */
|
7 |
target { |
8 |
/* ... */
|
9 |
}
|
10 |
}
|
11 |
}
|
12 |
}
|
Variabel dan Mixins
Buat sebuah file baru dan nama itu, style.less. Bila menggunakan gaya apapun preprocessor, itu adalah ide yang baik untuk menyimpan penting warna dan ukuran dalam variabel; Anda dengan mudah dapat menyesuaikan nilai-nilai mereka tanpa mencari file, mencari nilai properti yang Anda butuhkan untuk mengubah. Kita akan menggunakan beberapa variabel untuk warna teks, warna perbatasan, dan lebar konten:
1 |
@text-color: #3F3E3D; |
2 |
@border-color: #D2D2D2; |
3 |
@content-width: 860px; |
Sekarang, mari kita membuat dua mixins. Yang pertama akan menciptakan ilusi anti-alias teks, dan kedua akan memungkinkan untuk lintas-browser gradien. Yang pertama agak sederhana:
1 |
.antialiased (@color) { |
2 |
color: @color; |
3 |
text-shadow: @color 0 0 1px; |
4 |
}
|
Kuncinya adalah untuk membuat bayangan di bawah teks dengan warna yang sama dan satu-pixel spread, membuat browser menampilkan warna yang bagus di sekitar teks.
Sekarang untuk gradien; Hal ini lebih rumit daripada anti-alias teks karena setiap browser mengimplementasikan gradien berbeda. Sekali kita telah kompensasi untuk berbagai vendor awalan, di sini adalah kode:
1 |
.gradient4f (@p1, @c1, @p2, @c2, @p3, @c3, @p4, @c4) { |
2 |
background: @c1; |
3 |
background: -moz-linear-gradient(top, @c1 @p1, @c2 @p2, @c3 @p3, @c4 @p4); |
4 |
background: -webkit-gradient(linear, left top, left bottom, color-stop(@p1, @c1), color-stop(@p2, @c2), color-stop(@p3, @c3), color-stop(@p4, @c4)); |
5 |
background: -webkit-linear-gradient(top, @c1 @p1, @c2 @p2, @c3 @p3, @c4 @p4); |
6 |
background: -o-linear-gradient(top, @c1 @p1, @c2 @p2, @c3 @p3, @c4 @p4); |
7 |
background: -ms-linear-gradient(top, @c1 @p1, @c2 @p2, @c3 @p3, @c4 @p4); |
8 |
background: linear-gradient(to bottom, @c1 @p1, @c2 @p2, @c3 @p3, @c4 @p4); |
9 |
}
|
Setiap browser memiliki awalan: - moz - Firefox, - webkit-untuk Chrome, dll. Baris terakhir menggunakan W3C direkomendasikan versi untuk gradien. Jika browser yang mendukungnya, ia akan menimpa sifat sebelumnya karena Deklarasi properti latar belakang terakhir dalam aturan. Fungsi linear gradient menerima parameter delapan: empat pasang nilai persen-warna. Itu membuat gradien dengan empat langkah warna.
Gaya global
Mari kita selanjutnya gaya beberapa elemen global, seperti tombol dan link. Kami ingin semua elemen menggunakan Helvatica atau Arial font dengan warna teks didefinisikan sebelumnya:
1 |
* { |
2 |
font-family: sans-serif; |
3 |
color: @text-color; |
4 |
}
|
Tubuh
Tubuh cukup mudah; kita perlu latar belakang putih dengan pola berbasis gambar. Ada tidak ada margin dan padding:
1 |
body { |
2 |
background: white url(gfx/bg.png); |
3 |
margin: 0; |
4 |
padding: 0; |
5 |
}
|
Input
Kami juga akan menyediakan gaya default untuk semua<input>elemen di Halaman:
1 |
input { |
2 |
width: 236px; |
3 |
height: 38px; |
4 |
border: 1px solid @border-color; |
5 |
padding: 0 10px; |
6 |
outline: none; |
7 |
font-size: 17px; |
8 |
|
9 |
&:focus { |
10 |
background: #FFFDF2; |
11 |
}
|
12 |
}
|
Kami menetapkan ukuran default dan padding, dan kami menggunakan variabel @border-color untuk menghapus garis biru menjengkelkan ketika elemen berfokus. Anda harus melihat sedikit lain kurang gula: kita dapat menambahkan CSS pseudo-Class (dan normal kelas terlalu) menggunakan & karakter (induk referensi), seperti yang ditunjukkan di sini:
1 |
&:focus { |
2 |
background: #FFFDF2; |
3 |
}
|
Hal ini menyebabkan input untuk memiliki latar belakang kuning terang, ketika fokus.
Mengajukan
Kirimkan tombol akan menggunakan mixin sebelumnya didefinisikan dan border-radius membuat efek bagus:
1 |
input[type="submit"] { |
2 |
height: 36px; |
3 |
border: 1px solid #7BC574; |
4 |
border-radius: 2px; |
5 |
color: white; |
6 |
font-size: 12px; |
7 |
font-weight: bold; |
8 |
padding: 0 20px; |
9 |
cursor: pointer; |
10 |
.gradient4f(0%, #8CD585, 23%, #82CD7A, 86%, #55AD4C, 100%, #4FA945); |
11 |
}
|
Link
Link harus memiliki warna yang berbeda dari teks biasa. Kami juga akan menggarisbawahi mereka di hover:
1 |
a { |
2 |
text-decoration: none; |
3 |
.antialiased(#58B84E);
|
4 |
&:hover { |
5 |
text-decoration: underline; |
6 |
}
|
7 |
}
|
Template dasar
Kita akan mulai dengan bagian tata letak yang tetap sama pada setiap halaman. Berikut adalah kode HTML, yang akan saya jelaskan di bawah ini:
1 |
<!DOCTYPE HTML>
|
2 |
<html>
|
3 |
<head>
|
4 |
<link rel="stylesheet/less" href="style.less"> |
5 |
<script src="less.js"></script> |
6 |
</head>
|
7 |
<body>
|
8 |
<header>
|
9 |
<div class="wrapper"> |
10 |
<img src="gfx/logo.png"> |
11 |
<span>Twitter Clone</span></p> |
12 |
|
13 |
</div>
|
14 |
</header>
|
15 |
<div id="content"> |
16 |
<div class="wrapper"> |
17 |
|
18 |
</div>
|
19 |
</div>
|
20 |
<footer>
|
21 |
<div class="wrapper"> |
22 |
Ribbit - A Twitter Clone Tutorial<img src="gfx/logo-nettuts.png"> |
23 |
</div>
|
24 |
</footer>
|
25 |
</body>
|
26 |
</html>
|
Kita mulai dengan normal doctype definisi dan dokumen kepala. Anda dapat menggunakan perpustakaan less.js dan mencakup style.less dalam tahap pengembangan (seperti yang saya lakukan dalam kode ini). Kemudian, Anda dapat mengkompilasi file kurang ke CSS, jika Anda tidak ingin menggunakan less.js. Seperti Anda mungkin telah memperhatikan sekarang, tata letak terbagi menjadi tiga bagian: header, #content, dan footer. Anda harus menyimpan HTML ini untuk melihat jika Anda adalah styling segalanya dengan benar.
Header
Mari kita mengatasi header. Ini berisi Ribbit's logo dan dua kata: 'Twitter Clone'. Itu dibungkus dalam bungkus, lebar yang dikendalikan oleh @content-width variabel. Ada beberapa pembungkus dalam tata letak, dan semua @content-width lebar dengan margin otomatis:
1 |
.wrapper { |
2 |
width: @content-width; |
3 |
margin: auto; |
4 |
}
|
Header itu sendiri adalah 85px tinggi dan lebar halaman:
1 |
header { |
2 |
background: url(gfx/bg-header.png); |
3 |
height: 85px; |
4 |
width: 100%; |
5 |
}
|
Setelah lebar, tambahkan div.wrapper's gaya dengan vertikal padding:
1 |
div.wrapper { |
2 |
padding: 11px 0; |
3 |
}
|
Jadi header akan terlihat seperti:
1 |
header { |
2 |
background: url(gfx/bg-header.png); |
3 |
height: 85px; |
4 |
width: 100%; |
5 |
|
6 |
div.wrapper { |
7 |
padding: 11px 0; |
8 |
}
|
Gambar dalam wrapper perlu 10px lebih rendah, untuk baik berpusat:
1 |
img { |
2 |
position: relative; |
3 |
top: 10px; |
4 |
margin: 0 15px 0 0; |
5 |
}
|
Juga, font di <span></span> elemen harus lebih besar dari ukuran default:
1 |
span { |
2 |
font-size: 18px; |
3 |
margin: 0 42px 0 0; |
4 |
}
|
Berikut adalah bagaimana desain kami harus terlihat saat ini.



Konten
Tidak ada banyak yang bisa kita lakukan dengan #content saat ini. Kami akan menambahkan beberapa margin untuk bagian bawah dan ketinggian minimum; tata letak akan terlihat funky jika tidak cukup tinggi:
1 |
#content { |
2 |
margin-bottom: 15px; |
3 |
min-height: 560px; |
4 |
}
|
Di dalam, pembungkus harus memiliki beberapa margin vertikal dengan margin horisontal otomatis:
1 |
div.wrapper { |
2 |
margin: 38px auto; |
3 |
}
|
Footer
Seperti header, footer adalah sama untuk semua halaman. Kita akan menggunakan gambar latar belakang dan ukuran font yang lebih kecil. Kita juga harus jelas: keduanya, karena kita akan menggunakan mengapung dalam konten. Tanpa kliring, footer tidak akan menyesuaikan sesuai dengan isi:
1 |
footer { |
2 |
background: url(gfx/bg-footer.png); |
3 |
height: 251px; |
4 |
font-size: 14px; |
5 |
clear: both; |
6 |
}
|
Mari kita sekarang menambahkan padding beberapa untuk pembungkus, dan gambar di dalamnya harus mengapung di sebelah kanan:
1 |
div.wrapper { |
2 |
padding: 15px; |
3 |
|
4 |
img { |
5 |
float: right; |
6 |
}
|
7 |
}
|
Berikut ini adalah footer kami:



Beranda
Halaman ini menampilkan untuk pengguna yang tidak login ke Ribbit. Oleh karena itu, itu akan perlu hadir form login di header dan formulir daftar, dengan gambar besar katak dalam konten. Mari kita mulai dengan dasar template.
Kotak masuk
Tambahkan ini form login ke div.wrapper header, setelah <span></span> elemen:
1 |
<form>
|
2 |
<input type="text"> |
3 |
<input type="password"> |
4 |
</form>
|
Input sudah ditata, tetapi kita perlu menambahkan margin dan membuat bentuk menampilkan sebagai inline. Tambahkan ini setelah rentang di div.wrapper header:
1 |
form { |
2 |
display: inline; |
3 |
|
4 |
input { |
5 |
margin: 0 0 0 14px; |
6 |
}
|
7 |
}
|
Formulir daftar
Berikut adalah HTML untuk formulir pendaftaran:
1 |
<img src="gfx/frog.jpg"> |
2 |
<div class="panel right"> |
3 |
<h1>New to Ribbit?</h1> |
4 |
<form>
|
5 |
<input name="email" type="text"> |
6 |
<input name="password" type="text"> |
7 |
<input name="password2" type="password"> |
8 |
<input type="submit" value="Create Account"> |
9 |
</form>
|
10 |
</div>
|
Menambahkan HTML ini dalam div.wrapper dari #content. Kami ingin gambar untuk memiliki sudut-sudut membulat dan melayang ke kiri (menambahkan ini setelah margin dalam div.wrapper #content):
1 |
img { |
2 |
border-radius: 6px; |
3 |
float: left; |
4 |
}
|
Sekarang, kita dapat gaya formulir pendaftaran. Ini juga akan menjadi sebuah panel yang akan kita gunakan kemudian; itu sebabnya kami akan gaya .panel:
1 |
div.panel { |
2 |
border: 1px solid @border-color; |
3 |
background: white; |
4 |
margin: 0; |
5 |
margin-bottom: 29px; |
6 |
border-radius: 6px; |
7 |
font-size: 14px; |
8 |
}
|
Untuk sekarang, meskipun, kita akan hanya gaya panel kanan. Hal ini sempit dan menempel sisi kanan panel. Tentu saja, masukkan berikut ke div.panel:
1 |
&.right { |
2 |
width: 303px; |
3 |
height: 313px; |
4 |
float: right; |
5 |
}
|
Juga, kita perlu untuk mengurus header dan konten panel. Kami menggunakan<h1></h1>unsur-unsur untuk header dan<p>unsur-unsur untuk konten. Pemberitahuan yang dapat Anda gunakan * wildcard dalam elemen lain:
1 |
* { |
2 |
margin: 6px 0; |
3 |
}
|
4 |
form { |
5 |
padding: 0 23px; |
6 |
}
|
7 |
h1 { |
8 |
border-bottom: 1px solid @border-color; |
9 |
margin: 5px 0; |
10 |
font-weight: normal; |
11 |
font-size: 18px; |
12 |
padding: 13px 23px; |
13 |
height: 23px; |
14 |
}
|
15 |
p { |
16 |
padding: 0 24px; |
17 |
margin: 18px 0; |
18 |
}
|
Berikut adalah bagaimana gaya div.panel yang akan terlihat:
1 |
div.panel { |
2 |
border: 1px solid @border-color; |
3 |
background: white; |
4 |
margin: 0; |
5 |
margin-bottom: 29px; |
6 |
border-radius: 6px; |
7 |
font-size: 14px; |
8 |
|
9 |
&.right { |
10 |
width: 303px; |
11 |
height: 313px; |
12 |
float: right; |
13 |
}
|
14 |
|
15 |
* { |
16 |
margin: 6px 0; |
17 |
}
|
18 |
h1 { |
19 |
border-bottom: 1px solid @border-color; |
20 |
margin: 5px 0; |
21 |
font-weight: normal; |
22 |
font-size: 18px; |
23 |
padding: 13px 23px; |
24 |
height: 23px; |
25 |
}
|
26 |
p { |
27 |
padding: 0 24px; |
28 |
margin: 18px 0; |
29 |
}
|
30 |
}
|
Dan di sini adalah screenshot dari bagaimana Halaman ini harus, dengan demikian jauh (klik untuk melihat ukuran penuh):
Teman-teman Halaman
Halaman teman harus ditampilkan ketika pengguna log in. Ini akan menampilkan daftar terakhir "Ribbits," bersama dengan beberapa statistik akun. Sekali lagi, mulai dengan dasar template. Halaman ini, bersama dengan halaman lain, akan menampilkan tombol logout tempat login form di header:
1 |
<form>
|
2 |
<input type="submit" id="btnLogOut" value="Log Out"> |
3 |
</form>
|
Tombol-tombol sudah telah ditata, jadi kita hanya perlu pin ke sisi kanan kontainer dan menambahkan beberapa margin:
1 |
#btnLogOut { |
2 |
float: right; |
3 |
margin: 14px 0 0 0; |
4 |
}
|
Karena aturan ini pemilih elemen ID, Anda dapat menempatkannya di luar setiap elemen atau dalam header di div.wrapper. Itu adalah pilihan Anda, tapi ingat bahwa, jika Anda memilih tempat itu dalam elemen lain, CSS dikompilasi akan memiliki sebuah selector lagi (header div.wrapper #btnLogOut).
Kotak "Buat Ribbit"
Pertama, tambahkan kode panel ini untuk div.wrapper dari #content:
1 |
<div id="createRibbit" class="panel right"> |
2 |
<h1>Create a Ribbit</h1> |
3 |
<p>
|
4 |
<form>
|
5 |
<textarea name="text" class="ribbitText"></textarea> |
6 |
<input type="submit" value="Ribbit!"> |
7 |
</form>
|
8 |
</p>
|
9 |
</div>
|
.Right kelas gaya sebelumnya, tetapi kita perlu menambahkan beberapa styling untuk <textarea></textarea> elemen. Kami akan memberikan ukuran yang tepat dan perbatasan:
1 |
textarea.ribbitText { |
2 |
width: 249px; |
3 |
height: 160px; |
4 |
border: 1px solid @border-color; |
5 |
}
|
Tambahkan ini dalam definisi gaya panel kanan.
Informasi pengguna
Sekarang, mari kita fokus pada panel, yang berisi informasi account. Kami akan sementara menempatkannya dengan beberapa konten acak untuk melihat Style:
1 |
<div id="ribbits" class="panel left"> |
2 |
<h1>Your Ribbit Profile</h1> |
3 |
<div class="ribbitWrapper"> |
4 |
<img class="avatar" src="gfx/user1.png"> |
5 |
<span class="name">Frogger</span> @username |
6 |
<p>
|
7 |
567 Ribbits<span class="spacing">45 Followers</span><span class="spacing">32 Following</span><br> |
8 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
9 |
</p>
|
10 |
</div>
|
11 |
</div>
|
Mungkin terlihat rumit, tetapi struktur cukup sederhana, ketika Anda menghapus konten:
1 |
<div id="ribbits" class="panel left"> |
2 |
<h1>Your Ribbit Profile</h1> |
3 |
<div class="ribbitWrapper"> |
4 |
<img class="avatar" src="gfx/user1.png"> |
5 |
<span class="name"> </span> |
6 |
<p>
|
7 |
<span class="spacing"> </span><span class="spacing"> </span><br> |
8 |
</p>
|
9 |
</div>
|
10 |
</div>
|
Terlepas dari itu, kami memiliki panel lainnya; Jadi kita perlu gaya itu pertama:
1 |
&.left { |
2 |
width: @content-width - 327; |
3 |
float: left; |
4 |
}
|
Anda mungkin tahu di mana untuk menempatkan kode ini (perhatikan bagaimana dengan mudah Anda dapat melakukan operasi aritmetika kurang). Panel ini berisi div.ribbitWrapper. Jadi, tambahkan kode berikut:
1 |
div.ribbitWrapper { |
2 |
padding: 15px 0; |
3 |
}
|
Ada dua <span></span> elemen dalam elemen ini, masing-masing dengan ukuran warna dan font yang berbeda. Mereka memiliki kelas .name dan .time:
1 |
span { |
2 |
&.name { |
3 |
font-size: 18px; |
4 |
color: #58B84E; |
5 |
}
|
6 |
|
7 |
&.time { |
8 |
font-size: 12px; |
9 |
color: #CCC; |
10 |
}
|
11 |
}
|
Kita juga harus posisi gambar avatar dekat perbatasan kiri. Tambahkan kode berikut:
1 |
img.avatar { |
2 |
margin: 0 19px 0 20px; |
3 |
float: left; |
4 |
}
|
Juga, teks Ribbit's perlu anti-alias, dibenarkan dan dipindahkan ke kanan. Kode ini akan menempatkan teks di sebelah avatar, sebagai lawan untuk di bawah ini:
1 |
p { |
2 |
margin: 5px 50px 0 90px; |
3 |
padding: 0; |
4 |
text-align: justify; |
5 |
line-height: 1.5; |
6 |
.antialiased(@text-color);
|
7 |
}
|
Dalam ayat ini, ada <span></span> elemen dengan jalur vertikal, Visual memisahkan mereka. Efek ini dicapai dengan menggunakan border, padding dan margin:
1 |
span.spacing { |
2 |
padding-left: 9px; |
3 |
margin-left: 9px; |
4 |
height: 10px; |
5 |
border-left: 1px solid @border-color; |
6 |
}
|
Ribbits teman-teman'
Panel ini berisi ribbits terbaru dari orang-orang kepada siapa pengguna mengikuti. Masukkan berikut setelah pengguna informasi panel:
1 |
<div class="panel left"> |
2 |
<h1>Your Ribbit Buddies</h1> |
3 |
<div class="ribbitWrapper"> |
4 |
<img class="avatar" src="gfx/user2.png"> |
5 |
<span class="name">Kermit</span> @username <span class="time">15m</span> |
6 |
<p>
|
7 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
8 |
</p>
|
9 |
</div>
|
10 |
<div class="ribbitWrapper"> |
11 |
<img class="avatar" src="gfx/user1.png"> |
12 |
<span class="name">Frogger</span> @username <span class="time">15m</span> |
13 |
<p>
|
14 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
15 |
</p>
|
16 |
</div>
|
17 |
<div class="ribbitWrapper"> |
18 |
<img class="avatar" src="gfx/user2.png"> |
19 |
<span class="name">Kermit</span> @username <span class="time">15m</span> |
20 |
<p>
|
21 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
22 |
</p>
|
23 |
</div>
|
24 |
<div class="ribbitWrapper"> |
25 |
<img class="avatar" src="gfx/user3.png"> |
26 |
<span class="name">Hypnotoad</span> @username <span class="time">15m</span> |
27 |
<p>
|
28 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
29 |
</p>
|
30 |
</div>
|
31 |
<div class="ribbitWrapper"> |
32 |
<img class="avatar" src="gfx/user2.png"> |
33 |
<span class="name">Kermit</span> @username <span class="time">15m</span> |
34 |
<p>
|
35 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
36 |
</p>
|
37 |
</div>
|
38 |
<div class="ribbitWrapper"> |
39 |
<img class="avatar" src="gfx/user3.png"> |
40 |
<span class="name">Hypnotoad</span> @username <span class="time">15m</span> |
41 |
<p>
|
42 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
43 |
</p>
|
44 |
</div>
|
45 |
</div>
|
Ada beberapa contoh ribbits untuk melihat bagaimana tampilannya. Kami akan menambahkan beberapa perbatasan untuk visual memisahkan mereka. Tambahkan kode berikut pada div.ribbitWrapper:
1 |
border-bottom: 1px solid @border-color; |
2 |
&:last-child { |
3 |
border: none; |
4 |
}
|
Gaya ini menambahkan perbatasan bawah, sementara menghapus perbatasan pada div.ribbitWrapper terakhir; perbatasan sudah ada pada panel.
Berikut adalah bagaimana Halaman ini harus sekarang:
Halaman Ribbits Umum
Halaman "Umum Ribbits" akan daftar ribbits terbaru dari profil yang tidak ditandai sebagai pribadi, sehingga pengguna dapat melihat ribbits orang-orang yang mereka belum di daftar teman mereka. Anehnya, tidak ada yang lain untuk gaya, tetapi kita perlu menambahkan sentuhan HTML. Satu-satunya perbedaan antara ini dan halaman sebelumnya adalah bahwa ini tidak memiliki panel informasi pengguna, tapi itu akan memiliki konten lain di situs akhir. Jadi merasa bebas untuk menyalin kode halaman teman-teman, tapi menghapus panel ini:
1 |
<div id="ribbits" class="panel left"> |
2 |
<h1>Your Ribbit Profile</h1> |
3 |
<div class="ribbitWrapper"> |
4 |
<img class="avatar" src="gfx/user1.png"> |
5 |
<span class="name">Frogger</span> @username |
6 |
<p>
|
7 |
567 Ribbits<span class="spacing">45 Followers</span><span class="spacing">32 Following</span><br> |
8 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
9 |
</p>
|
10 |
</div>
|
11 |
</div>
|
Juga mengubah header panel untuk "Umum Ribbits." Berikut adalah preview Halaman ini:
Halaman profil Umum
Pada Halaman ini, pengguna dapat melihat daftar profil yang tidak ditandai sebagai pribadi. Ada juga kotak pencarian untuk menemukan profil lain. Kita akan mulai dengan dasar template.
Cari profil
Kotak pencarian akan menggunakan panel .right dengan<input>elemen dalam:
1 |
<div class="panel right"> |
2 |
<h1>Search for profiles</h1> |
3 |
<p>
|
4 |
<form>
|
5 |
<input name="query" type="text"> |
6 |
<input type="submit" value="Ribbit!"> |
7 |
</form>
|
8 |
</p>
|
9 |
</div>
|
Daftar profil
Berikut adalah beberapa contoh profil untuk daftar profil, sehingga Anda dapat melihat bagaimana tampilannya dalam browser. Dalam pelajaran masa depan, kita tentu akan mengganti ini, sesuai.
1 |
<div id="ribbits" class="panel left"> |
2 |
<h1>Public Profiles</h1> |
3 |
<div class="ribbitWrapper"> |
4 |
<img class="avatar" src="gfx/user2.png"> |
5 |
<span class="name">Kermit</span> @username <span class="time">625 followers <a href="#">follow</a></span> |
6 |
<p>
|
7 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
8 |
</p>
|
9 |
</div>
|
10 |
<div class="ribbitWrapper"> |
11 |
<img class="avatar" src="gfx/user1.png"> |
12 |
<span class="name">Frogger</span> @username <span class="time">329 followers <a href="#">follow</a></span> |
13 |
<p>
|
14 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
15 |
</p>
|
16 |
</div>
|
17 |
<div class="ribbitWrapper"> |
18 |
<img class="avatar" src="gfx/user3.png"> |
19 |
<span class="name">Hypnotoad</span> @username <span class="time">129 followers <a href="#">follow</a></span> |
20 |
<p>
|
21 |
Cras justo odio, dapibus ac facilisis in, egestas Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor. <a href="#">http://net.tutsplus.com/tutorials/php/ ...</a> |
22 |
</p>
|
23 |
</div>
|
24 |
</div>
|
Halaman ini akan terlihat seperti:
Kompilasi CSS
Referensi elemen bersarang dapat mengakibatkan panjang penyeleksi.
Seperti yang saya catat sebelumnya, untuk produksi, Anda dapat mengkompilasi kurang Anda CSS (dan saya sarankan Anda melakukannya untuk alasan kinerja). Ada beberapa compiler online yang tersedia:
Bersama dengan beberapa compiler yang berdiri sendiri:
- Krisis! (yang adalah full-blown kurang editor)
- WinLess (fitur auto kompilasi ketika file kurang perubahan)
- SimpLESS (termasuk CSS minification)
Jika salah satu penyusun ini tidak bekerja untuk Anda, Google untuk lebih; ada banyak! Anda juga dapat menggunakan lessc dari kurang dari situs, tapi jauh lebih mudah untuk mengkompilasi file kurang dengan kompiler lainnya. Tentu saja, tidak ada yang salah dengan menggunakan perpustakaan less.js untuk secara dinamis mengkompilasi tata letak; baru browser cache CSS dihasilkan.
Kesimpulan
Seperti yang Anda lihat, kurang adalah alat yang ampuh yang membuatnya jauh lebih mudah dan lebih cepat daripada biasa CSS untuk gaya indah layout.
Tapi ini hanya permulaan. Bersiaplah untuk menerapkan Ribbit's back-end dalam sejumlah bahasa dan platform di set berikutnya dari tutorial!