Advertisement
  1. Web Design
  2. HTML/CSS
  3. JavaScript for Designers

Membuat Situs "About Me" Satu Halaman dengan Prepros, Jade & Stylus

Scroll to top
Read Time: 31 min

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

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

Hari ini, kita akan belajar cara membuat satu halaman "About Me" statis menggunakan aplikasi Prepros gratis dari Alpha Pixels.

Prepros adalah tool antarmuka yang menangani preprocessing, dan tugas front-end lainnya. Kekuatan terbesar Prepros adalah kemudahan luar biasa yang memungkinkan Anda menggunakan berbagai macam preprocessors, baik itu untuk CSS, HTML atau JavaScript. Jadi saat kami menyusun situs statis kami, kami akan bermain dengan tiga preprocessor untuk bahasa ini; Stylus, Jade dan (sedikit) CoffeeScript masing-masing.

Dengan Prepros ada tidak perlu untuk menginstal Node.js, Ruby atau modul apapun dan gems, dan Anda tidak pernah menyentuh baris perintah. Hanya menginstal dan menjalankan Prepros, menambahkan proyek Anda dan akan menangani semua Anda mengkompilasi, menggabungkan, dan minifying untuk Anda.

Sebagai bagian dari pembuatan situs kami, kami juga akan menyertakan beberapa efek gulir halus untuk membawa pengunjung dari satu bagian situs ke bagian berikutnya, ditambah beberapa efek animasi berbasis CSS untuk pukulan tambahan. Lihat demo langsung untuk melihat apa yang akan Anda buat.

1. Memulai  Setup

Kita akan mulai dengan mendapatkan Anda setup dengan folder proyek yang diselenggarakan untuk terbaik untuk bekerja dengan Prepros.

Saya selalu menemukan lebih mudah untuk menjaga file sumber preprocessor Anda bekerja pada terpisah dari file situs sebenarnya mereka akan mengkompilasi ke dalam. Dengan memiliki semua file output folder sendiri sangat mudah untuk mengambil seluruh hal dan meng-upload ke situs hidup Anda ketika Anda sudah selesai.

Siapkan Struktur Proyek Anda

Buat folder proyek dengan nama apa pun yang Anda suka, misalnya static_site_project.

Di dalam folder proyek Anda membuat subfolder dua; site dan source.

Dalam source folder buat sebuah file bernama index.jade dan subfolder empat tambahan; contentscriptsstylus dan templates.

Dalam folder scripts Buat file bernama site.js dan subfolder lain, bernama js.

Dalam folder stylus buat sebuah file bernama style.styl

Setelah selesai, struktur proyek Anda akan terlihat seperti ini:

Menginstal & Mengkonfigurasi Prepros

Out of the box Prepros akan secara otomatis menonton dan mengkompilasi semua file Anda untuk Anda. Yang perlu kita lakukan adalah mengatakan itu di mana untuk menempatkan file kami dikompilasi, serta folder yang kita benar-benar ingin mengabaikan.

Download dan instal Prepros. Menjalankan Prepros, kemudian menyeret static_site_project folder ke antarmuka untuk menambahkannya sebagai sebuah proyek baru.

Klik ikon perkakas yang kecil, satu detik dari sebelah kiri di sudut kanan bawah dari antarmuka Prepros, pergi ke pengaturan proyek.

Klik CSS Options, kemudian ubah Output Path Type ke "Relative to Source File Directory" dan masukkan ../../site/css/ di field CSS Path.

Klik HTML Options, kemudian ubah Output Path Type ke "Relative to Source File Directory" dan masukkan ../site/ di field Html jalan Html Path.

Selanjutnya, klik JS Options dan masukkan ../../site/js/ di field Concatenated & JMinified S Path.

Kemudian klik Project Filters dan masukkan content,templates  di field Comma Separated Filters To Exclude.

Saatnya untuk memeriksa kami setup dan mencoba kompilasi. Klik nama proyek Anda di sidebar kiri Prepros. Semuanya sekarang harus terlihat seperti ini:

Jika ya, Anda siap menjalankan kompilasi proyek pertama Anda, yang akan menambahkan file ke dalam folder site Anda yang kosong. Klik ikon More Options, tombol paling kanan di kanan bawah Prepros, lalu pilih Compile All Files.

Lihatlah folder site Anda. Anda sekarang harus melihat file dan folder berikut di dalam:

Sekarang kita sudah siap untuk memulai coding!

2. Jade di Nutshell

Alih-alih mengkode HTML mentah kita akan bekerja dengan Jade. Saya suka menganggap Jade sebagai 'singkatan' untuk HTML. Hal ini memungkinkan Anda menulis jauh lebih sedikit kode dan menggunakan hal-hal seperti variabel dan mixins untuk menambahkan logika, yang semua datang bersama-sama untuk membuat proses yang sangat efisien.

Jika Anda melihat referensi bahasa untuk Jade Anda mungkin pada awalnya merasa seperti itu sedikit rumit, namun ada beberapa prinsip kunci yang cukup sederhana yang fungsi utama intinya:

Elemen HTML

Tempatkan elemen HTML apa pun dengan hanya menghapus tanda < and >, tidak perlu tag penutup. Misalnya.

1
<body></body>
2
...use instead:
3
body
4
5
<h1></h1>
6
...use instead:
7
h1
8
9
<p></p>
10
...use instead:
11
p

Bersarang

Alih-alih mencoba untuk melacak membuka dan menutup tag HTML, hanya tab indent dimanapun Anda perlu sesuatu untuk diulang. Misalnya

1
<main><p>...</p></main>
2
3
...use instead:
4
5
main
6
    p

Beberapa baris yang diindentasi dengan jumlah tab yang sama akan dibungkus oleh elemen induk yang sama.

Teks Biasa dalam Elemen

Teks biasa dapat ditempatkan di dalam elemen dengan mengetikkannya pada baris yang sama, setelah spasi misalnya

1
<h1>Heading Text</h1>
2
3
...use instead:
4
5
h1 Heading Text

Atau, Anda dapat menempatkan teks pada barisnya sendiri dan menempatkan simbol pipa di depannya, misalnya

1
h1
2
    | This is a heading but I'd like to have
3
    br
4
    | a line break in it

Class dan ID CSS

Dalam kebanyakan kasus, class dan id CSS dapat ditambahkan langsung ke elemen HTML misalnya

1
<h1 id="idname" class="classname otherclass">Heading Text</h1>
2
3
...use instead:
4
5
h1#idname.classname.otherclass Heading Text

Jika Anda hanya menempatkan div, Anda bahkan tidak perlu menentukan elemen. Div adalah elemen Jade default, jadi jika Anda menempatkan ID / class itu sendiri maka akan secara otomatis diterapkan ke div misalnya

1
<div class="thisclass">...</div>
2
3
...use instead:
4
5
.thisclass

Atribut

Dimanapun tag kebutuhan atribut, hanya menempatkan mereka antara tanda kurung dengan pemisahan koma, misalnya:

1
<a href="webdesign.tutsplus.com" target="_blank">Link Text</a>
2
3
...use instead:
4
5
a( href="webdesign.tutsplus.com", target="_blank" ) Link Text

Ada banyak fitur canggih lainnya yang kami akan bekerja dengan kemudian seperti variabel, mixins dan logika, tapi apa yang Anda lihat di atas mencakup inti nyata menggunakan Jade.

Catatan: Ini adalah ide yang baik untuk mendapatkan sintaks Jade stabilo untuk editor kode pilihan Anda sebelum pergi ke depan. Saya menggunakan Jade for Sublime Text (bekerja dengan versi 2 dan 3).

3. Buat Template Wrapper Anda

Salah satu hal paling keren yang dapat Anda lakukan dengan Jade adalah membuat template yang extendable dan reusable yang memiliki placeholder block dimana konten dapat ditempatkan. Cara termudah untuk menjelaskan apa artinya ini adalah dengan contoh sederhana.

Katakanlah Anda membuat template dasar ini, bernama base.jade:

1
//- base.jade
2
header.pagetitle
3
    h1
4
        block pagetitle
5
6
main.pagecontent
7
    block pagecontent

Dua block baris adalah placeholders untuk konten akan diberikan dari tempat lain.

Anda kemudian dapat membuat template lain bernama page.jade yang extends template base.jade, dan menyediakan konten di dalamnya untuk disisipkan di mana placeholder block berada, hanya dengan mencocokkan nama blokir:

1
//- page.jade
2
extends base
3
4
block pagetitle
5
    | Welcome to the Page
6
7
block pagecontent
8
  p Have a nice day!

Konten setelah block pagetitle di template page.jade akan muncul di tempat yang cocok dengan tempat penampung block pagetitle yang cocok dalam template base.jade.

Demikian juga, konten setelah block pagecontent di page.jade akan muncul mana block pagecontent adalah di base.jade.

Oleh karena itu, page.jade akan mengkompilasi ke dalam:

1
<header class="pagetitle">
2
<h1>Welcome to the Page</h1>
3
</header>
4
<main class="pagecontent">
5
<p>Have a nice day!</p>
6
</main>

Dengan menggunakan teknik ini, Anda dapat menggunakan kembali templat Anda berulang kali, menyediakan konten yang berbeda untuk dimasukkan ke blok placeholder setiap kali, yang sangat berguna baik untuk menjaga kode Anda tetap teratur dan untuk membuat situs multi-halaman.

Kita akan menggunakan pendekatan ini untuk membuat template yang akan berisi HTML dasar penting untuk situs dan pembungkus untuk pergi sekitar isi situs kami.

Membuat wrapper.jade

Dalam folder proyek Anda source > templates buat file bernama wrapper.jade lalu tambahkan kode ini ke dalamnya:

1
doctype html
2
html( lang="en" )
3
    head
4
		title
5
			block title
6
		meta( charset='utf-8' )
7
		meta( http-equiv='X-UA-Compatible', content='IE=edge' )
8
		meta( name='viewport', content='width=device-width, initial-scale=1.0' )
9
		link( href='css/style.css', rel='stylesheet', type='text/css' )
10
		link( href='//fonts.googleapis.com/css?family=Bangers|Indie+Flower', rel='stylesheet', type='text/css' )
11
		script( src='//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js' )
12
		script( src='js/site.min.js' )
13
	body
14
		block content

Ketika dikompilasi kode ini akan berubah menjadi tag doctype, html, head, title, meta, link, script dan body kami. Kami memuat file style.css dan site.min.js yang kami buat sebelumnya serta beberapa Google Font yang akan kami gunakan.

Catatan dua block placeholders, block title dan block content. Ketika kita extend template ini segera kami akan menyediakan konten yang harus ditempatkan di sana, menghasilkan judul halaman dan isinya.

Ketika Anda menyimpan file ini tidak akan secara otomatis dikompilasi seperti yang telah kami sampaikan kepada Prepros untuk mengabaikan file apa pun dalam folder template. Ini karena kami tidak ingin file 'wrapper.html' kosong di situs kami yang tidak memiliki judul atau konten halaman. Sebagai gantinya, ini semua akan dikompilasi setelah kami extend template di langkah berikutnya.

4. Extend Wrapper Anda

Anda akan ingat kita membuat sebuah file dalam folder source Anda bernama index.jade. Prepros adalah dikonfigurasi untuk autocompile file ini ke site > index.html setiap saat yang Anda simpan.

Tambahkan kode berikut ke index.jade:

1
extends templates/wrapper
2
3
block title
4
    | Static Site With Prepros
5
6
block content
7
	#section01.pane
8
		.wrapper
9
			h3 Welcome
10
			p Content goes here

Simpan file Anda dan Anda akan melihat ini muncul di sudut kanan bawah layar Anda:

Pergi ke Prepros, klik More Options lainnya kemudian pilih Copy Live Preview Url:

Tempelkan URL itu ke browser Anda dan tambahkan /situs/ ke ujung untuk memuat situs Anda yang dikompilasi. Anda harus melihat:

Catatan: Kami akan membuat single page dalam tutorial ini, namun Anda dapat mengulangi proses di atas sebanyak yang Anda suka untuk situs multi-page. Misalnya, jika Anda membuat file bernama about.jade dengan cara yang sama, maka akan secara otomatis dideteksi oleh Prepros yang akan menghasilkan file situs about.html untuk Anda.untuk Anda.

5. Mengatur Dasar-Dasar Stylus Anda

Sebelum kita melangkah lebih jauh dengan coding konten situs Anda kami ingin mendapatkan sedikit styling dasar di tempat. Kami preprocessor pilihan untuk tutorial ini adalah Stylus. Anda dapat membaca semua tentang cara kerjanya dalam artikel saya pada Mengapa Stylus adalah favorit saya.

Stylus memiliki sintaks yang sangat mirip untuk Jade yang menggunakan tab indentasi untuk menentukan bersarang, tidak memerlukan semi-kolon baris Terminator dll. Dapat mengikuti beberapa aturan sintaks yang sama ketika bekerja dengan dua bahasa pada saat yang sama waktu membantu untuk menjaga hal-hal yang berjalan dengan lancar.

Nib dan Normalize.css

Hal pertama yang akan kita lakukan adalah membawa library mixin Nib yang mengagumkan, ditambah beberapa kode Normalize.css yang diformat dalam sintaks Stylus sehingga kita dapat memprosesnya ke stylesheet kami.

Pergi ke Prepros, klik pada file style.styl dalam antarmuka dan Anda akan melihat pilihan sidebar membuka di sebelah kanan. Di daerah pilihan centang kotak Use Nib:

Selanjutnya, ambil file ini Stylus Normalize dari Cory Simmons dan menyimpannya ke folder source > stylus. Namun ketika Anda melakukannya, simpan sebagai _normalize.styl. Underscore akan mencegah Prepros secara otomatis mengopile file.

Sekarang buka file style.styl yang Anda buat sebelumnya dan tambahkan kode ini:

1
// *************
2
// IMPORTS
3
// *************
4
5
@import nib
6
@import _normalize

File Anda akan secara otomatis dikompilasi dan ketika Anda kembali ke situs Anda jika semuanya sudah diimpor dengan benar Anda akan melihat font default telah berubah:

Tambahkan Detail

Kami sekarang memiliki semua dasar kami jadi kami siap untuk menambahkan beberapa custom style.

Kita akan menambahkan variabel untuk menentukan layout, tipografi dan pengaturan warna untuk situs kami, dan kami akan menyiapkan beberapa mixin dan style untuk menerapkannya ke dalam desain kami.

Saya akan membagikan beberapa kode Stylus super magic saya untuk dominasi universal yang saya gunakan dalam proyek pribadi saya.

Lanjutkan dan tambahkan kode berikut ke file style.styl Anda, di bawah garis impor sudah Anda tambahkan:

1
// *************
2
// VARIABLES
3
// *************
4
5
$base_font_size = 16
6
//standard default browser size is 16px, so this brings base font size to 18px while keeping things flexible for user
7
$base_font_size_ems = unit($base_font_size / 16, em)
8
9
$px = unit(1 / $base_font_size, rem)
10
11
$type_regular_font_family = 'Indie Flower'
12
$type_h_font_family = 'Bangers'
13
14
$type_h_font_sizes = {
15
    'h1': 3,
16
	'h2': 2.35,
17
	'h3': 1.95,
18
	'h4': 1.65,
19
	'h5': 1.313,
20
	'h6': 1.125
21
}
22
23
$type_h_font_vmargins = {
24
	'h1': 1,
25
	'h2': 1,
26
	'h3': 1.313,
27
	'h4': 1.313,
28
	'h5': 1.313,
29
	'h6': 1.313
30
}
31
32
$type_h_font_lineheight = 1.313em
33
34
$type_wrapper_font_size = 18 * $px
35
36
$layout_site_width = 1200
37
38
$color_site_bg = lighten( black, 10% )
39
$color_wrapper_bg = white
40
41
$color_text_default = black
42
$color_link_default = #c00
43
$color_link_hover = saturate($color_link_default, 70%)
44
45
$color_highlight = #ffc600
46
$color_shadow = black
47
48
49
// *************
50
// MIXINS
51
// *************
52
53
h_tags($factor=1)
54
	h1, h2, h3, h4, h5, h6
55
			font-family $type_h_font_family
56
			line-height $type_h_font_lineheight
57
			font-weight 400
58
	for h_lvl, value in $type_h_font_sizes
59
		{h_lvl}
60
			((value * $factor) < 1) ? $size = 1 : $size = value * $factor
61
			font-size unit( $size, em )
62
			margin unit( $type_h_font_vmargins[h_lvl], em ) 0
63
64
raised()
65
	box-shadow 1 * $px 1 * $px 3 * $px rgba(0,0,0,.5)
66
67
68
// *************
69
// STYLES
70
// *************
71
72
73
// ELEMENTS
74
// -------------
75
76
*
77
	box-sizing border-box
78
79
html, body
80
	height 100%
81
82
html
83
	font-size $base_font_size_ems
84
	font-family $type_regular_font_family
85
	background-color $color_site_bg
86
	color $color_text_default
87
	overflow-x hidden
88
89
img
90
	max-width 100%
91
	height auto
92
93
a, a:link, a:visited
94
	text-decoration none
95
	color $color_link_default
96
97
a:hover, a:active
98
	text-decoration none
99
	color $color_link_hover
100
101
//H tag font family, size, line-height, margin
102
h_tags()
103
104
105
// CLASSES
106
// -------------
107
108
.pane
109
	display table
110
	width 100%
111
	height 100%
112
	position relative
113
	padding 20 * $px
114
115
.wrapper
116
	display table-cell
117
	vertical-align middle
118
	margin 0 auto
119
	padding 80 * $px 0
120
	background-color $color_wrapper_bg
121
	font-size $type_wrapper_font_size
122
	text-align center
123
	border 10 * $px solid $color_shadow
124
	box-shadow 4 * $px 4 * $px 5 * $px rgba(0,0,0,.5)

Bagian Variabel

Di bagian variabel Anda akan melihat variabel $base_font_size dan $base_font_size_ems. Kedua variabel ini mengatur ukuran font dasar untuk situs kami dan kemudian mengonversinya menjadi nomor berbasis em yang dapat kami gunakan untuk menjaga agar desain kami dapat skalabel dan fleksibel. Variabel $px memberi kita rem berbasis sama dengan satu pixel yang dapat kita gunakan sebagai pengganti unit px, misalnya daripada 20px menggunakan 20 * $px.

Variabel diawali $type_ atur seperti berikut ini, dalam rangka:

  • Regular font family
  • Heading font family
  • Heading 1 sampai 6 font sizes - didefinisikan sebagai hash
  • Heading 1 sampai 6  font vertical margins - didefinisikan sebagai hash
  • Heading line height
  • Font size untuk teks di dalam class .wrapper

Variabel $layout_site_width menetapkan lebar maksimum yang kita inginkan untuk diregangkan oleh konten kita, dan variabel awalan $color_ mengatur berbagai warna yang akan kita gunakan di seluruh desain.

Bagian Mixins

Di bagian mixins Anda akan melihat kode pembuatan tag heading keren yang berguna. Ini memproses angka dari variabel yang diawali $type_h_ menjadi kode H tag yang indah dan fleksibel.

Ini juga menerima argumen $factor yang merupakan pengali multiplier terhadap semua ukuran font heading. Ini memberi Anda kemampuan untuk menskalakan semua teks heading Anda saat diperlukan, seperti dalam kueri media, hanya dengan melewatkan pengganda. Misalnya, memanggil h_tags(0,5) akan membuat semua judul Anda setengah ukuran dari apa yang telah didefinisikan dalam variabel $type_h_ Anda.

Mixin raised() adalah style bayangan yang akan kami gunakan pada beberapa elemen nanti di tutorial.

Bagian Style

Bagian gaya dibagi menjadi dua kategori; 'elements', untuk elemen HTML default, dan 'classes', yang berisi pemilih yang ditentukan khusus.

Bagian elemen berisi kode penjelasan yang cukup jelas yang menetapkan beberapa perilaku default, color, style dan typography. Bagian kelas menggunakan kelas .pane dan .wrapper untuk membuat kotak putih besar, berbatasan hitam dengan bayangan yang dikelilingi oleh jarak yang ditunjukkan melalui latar belakang situs abu-abu gelap. Melalui penggunaan garis display table, display table-cell dan vertical-align middle, semua konten dalam kotak putih ini disejajarkan secara vertikal.

Situs Anda sekarang harus terlihat seperti ini:

6. Tambahkan Beberapa Konten

Sekarang kita memiliki style dasar mari tambahkan beberapa konten untuk digunakan. Di sinilah folder content yang Anda buat sebelumnya ikut bermain.

Dalam folder sumber > konten Anda buat sebuah file bernama hello.jade. Tambahkan kode untuk itu:

1
h1 Hello
2
h3 I'm Your Name
3
h4 This is What I Do

Ganti placeholder di baris kedua dan ketiga dengan sesuatu yang mewakili Anda dan apa yang Anda lakukan.

Sebelumnya kami mengatakan kepada Prepros untuk mengabaikan file di folder content, sehingga untuk mendapatkan konten ini di situs kami, kami akan menggunakan fungsi include di Jade.

Kembali ke file index.jade dan update berikut:

1
extends templates/wrapper
2
3
block title
4
    | Static Site With Prepros
5
6
block content
7
	#section01.pane.hello
8
		.wrapper
9
			include content/hello

Apa yang telah kami lakukan adalah mengganti konten inline dengan baris include content/hello yang akan menarik konten dari file yang baru kita buat.

Kita akan membuat beberapa panel putih seperti yang sudah kita miliki. Oleh karena itu kami juga telah menambahkan class yang cocok .hello ke div parent sehingga kami memiliki sesuatu melalui yang kami tambahkan style yang unik.

Simpan file index.jade Anda dan Anda akan melihat konten baru Anda di tempat:

Ini adalah konten yang akan menyambut orang-orang ke situs tersebut sehingga kami ingin memiliki dampak yang sedikit lebih besar. Tambahkan kode baru ini ke file style.styl Anda:

1
.hello
2
    .wrapper
3
		font-size 42 * $px
4
		h1
5
			color $color_highlight
6
			font-size 5.2em
7
			line-height 0.7em
8
			margin-bottom 0.7em
9
			font-family 'Bangers'
10
			background-color $color_shadow
11
			text-shadow 12 * $px 12 * $px 0 $color_shadow, -3 * $px -3 * $px 0 $color_shadow, 3 * $px -3 * $px 0 $color_shadow, -3 * $px 3 * $px 0 $color_shadow, 3 * $px 3 * $px 0 $color_shadow
12
		h3, h4
13
			font-family 'Indie Flower'
14
			margin 1em 0

Dengan kode ini kami menargetkan kelas .hello yang kami tambahkan sebelumnya dan menggunakannya untuk meningkatkan ukuran font dasar dari panel ini, yang pada gilirannya akan meningkatkan tag heading di dalamnya karena mereka berbasis em.

Namun kami ingin baris pertama dari membaca teks 'Hello' menjadi lebih besar sehingga meningkat dari standar 3em hingga 5.2em. Ini juga berwarna kuning cerah, diberi garis hitam dan bayangan, kemudian ditempatkan di atas strip hitam besar.

Akhirnya, kami mengubah font yang diterapkan pada baris kedua dan ketiga ke "Indie bunga" dan mengurangi ukuran margin mereka supaya mereka bisa cocok pada halaman lebih pas.

Inilah hasilnya:

7. Tambahkan Ekstra White Panes

Sekarang mari kita lanjutkan dan tambahkan beberapa ekstra white panes dan file konten untuk mereka.

Dalam folder source > content Anda buat file-file ini: skills.jade, systems.jade, types.jade, tools.jade, contact.jade. Masing-masing file ini akan menyimpan konten untuk white pane di situs Anda. Setiap white pane akan meregang agar sesuai dengan keseluruhan viewport dan akan ada tautan 'Next' & 'Prev' untuk menavigasi di antara mereka.

Buka file skills.jade Anda dan tambahkan kode ini:

1
h1
2
    | My Skills Are...
3
ul
4
	//- Start square
5
	li
6
		h3 Skill One
7
		ul
8
			li +
9
			li Extra Info
10
			li More info
11
	//- End square
12
	//- Start square
13
	li
14
		h3 Skill Two
15
		ul
16
			li +
17
			li Extra Info
18
			li More info
19
	//- End square

Menggantikan "keterampilan satu" / "Keterampilan dua" dan "Tambahan info" / "More info" pengganti dengan info pada kemampuan Anda sendiri.

Setiap item daftar ini akan diubah menjadi ubin persegi kecil, jadi salin dan tempel kode antara //-Start square dan //-End square untuk membuat kotak untuk setiap keterampilan Anda. Kotak akan berada dalam baris empat jadi cobalah untuk mendapatkan kelipatan empat jika Anda bisa membuatnya terlihat rapi.

Perbarui index.jade Anda menjadi ini:

1
extends templates/wrapper
2
3
block title
4
    | Static Site With Prepros
5
6
block content
7
	#section01.pane.hello
8
		.wrapper
9
			include content/hello
10
			a( class="next", href="#section02" ) NEXT
11
	#section02.pane.skills
12
		.wrapper
13
			a( class="prev", href="#section01" ) PREV
14
			include content/skills
15
			a( class="next", href="#section03") NEXT
16
	#section03.pane.systems
17
		.wrapper
18
			a( class="prev", href="#section02" ) PREV
19
			include content/systems
20
			a( class="next", href="#section04" ) NEXT
21
	#section04.pane.types
22
		.wrapper
23
			a( class="prev", href="#section03" ) PREV
24
			include content/types
25
			a( class="next", href="#section05" ) NEXT
26
	#section05.pane.tools
27
		.wrapper
28
			a( class="prev",href="#section04" ) PREV
29
			include content/tools
30
			a( class="next", href="#section06" ) NEXT
31
	#section06.pane.contact
32
		.wrapper
33
			a( class="prev",href="#section05" ) PREV
34
			include content/contact

Dalam kode di atas, kami telah membuat panel baru yang berisi pemanggilan include untuk setiap file konten baru kami. Masing-masing memiliki ID unik seperti #section04 yang dapat kita gunakan untuk menargetkan tautan 'Next' dan / atau 'Prev' antara satu bagian dan bagian berikutnya.

Refresh situs Anda dan sekarang Anda akan melihat link 'Next' yang berfungsi di panel putih pertama Anda.

Klik link itu dan Anda akan diarahkan ke panel 'Skills' yang baru Anda buat, yang terlihat seperti ini:

8. Persegi dan Pane Heading

Panel 'skills' Anda saat ini terlihat agak lucu karena kami hanya memiliki style bawaan yang diterapkan pada unordered list kami. Mari masukkan beberapa style untuk membuat tiles persegi kecil kami dan mengubah judul panel utama.

Dalam style.styl file ganti seluruh kelas .wrapper Anda dengan ini:

1
.wrapper
2
    display table-cell
3
	vertical-align middle
4
	margin 0 auto
5
	padding 80 * $px 0
6
	background-color $color_wrapper_bg
7
	font-size $type_wrapper_font_size
8
	text-align center
9
	border 10 * $px solid $color_shadow
10
	box-shadow 4 * $px 4 * $px 5 * $px rgba(0,0,0,.5)
11
	h1
12
		margin-top 0
13
		font-family $type_regular_font_family
14
	> ul
15
		$skew = 1.5deg
16
		max-width $layout_site_width * $px
17
		list-style-type none
18
		margin 0 auto
19
		padding 0
20
		> li
21
			$spacing = 0.25%
22
			raised()
23
			border 8 * $px solid black
24
			background-color $color_link_default
25
			float left
26
			width 24.5%
27
			margin 0 $spacing
28
			height 230 * $px
29
			padding 40 * $px 30 * $px
30
			transform: skewY($skew * -1);
31
			&:nth-child(8n+1), &:nth-child(8n+3), &:nth-child(8n+6), &:nth-child(8n+8)
32
				background $color_highlight
33
			&:nth-child(4n+5)
34
				clear left
35
			&:nth-child(4n+1)
36
				margin-top 3 * $spacing
37
			&:nth-child(4n+2)
38
				margin-top 2 * $spacing
39
			&:nth-child(4n+3)
40
				margin-top 1 * $spacing
41
		li
42
			h3
43
				margin 0
44
				transform: skewY($skew);
45
			ul
46
				list-style-type none
47
				margin 0
48
				padding 0
49
				li
50
					transform: skewY($skew);

Kode ini mengubah font yang diterapkan pada judul utama dan menghapus margin atasnya. Ini menghilangkan lingkaran peluru dari daftar tak beraturan dan mengatur margin dan padding ke nol.

Daftar item yang memegang masing-masing kotak kecil kami diberi lebar masing-masing 24,5% dan melayang ke kiri, yang memberi kami empat item per baris. Mereka juga diatur ke ketinggian 230 piksel masing-masing (dikonversi ke nilai-nilai rem) dengan menambahkan padding dan margin.

Munculnya kotak diatur dengan memberi mereka masing-masing border hitam tebal dan menerapkan raised() bayangan mixin kami menambahkan sebelumnya. Masing-masing dapat dipengaruhi oleh-1.5 derajat yang akan membuat diagonal atas dan tepi bawah. Item h3 dan li miring sebesar 1,5 derajat; memiringkan mereka dengan jumlah yang sama ke arah yang berlawanan akan membuat mereka meluruskan lagi daripada juga tampak miring secara diagonal.

default background color setiap persegi kecil diatur melalui variabel $color_link_default, tapi kami menggunakan kode berikut untuk menerapkan warna $color_highlight dengan cara yang akan menciptakan pola kotak-kotak:

1
&:nth-child(8n+1), &:nth-child(8n+3), &:nth-child(8n+6), &:nth-child(8n+8)

Baris ini mengidentifikasi setiap baris kedelapan dimulai dengan yang pertama, (8n+1), lalu setiap seperempat persegi dimulai dengan yang ketiga, (8n+3), setiap baris kedelapan dimulai dengan keenam, (8n+6), dan setiap persegi kedelapan dimulai dengan yang kedelapan, (8n+8).

Jika Anda menggambar kotak dan warna hanya dalam kotak yang baru saja dijelaskan, Anda akan melihatnya akan memberi Anda pola kotak-kotak yang berkelanjutan tidak peduli berapa banyak baris yang Anda buat.

Sisa &:nth-child() baris bertanggung jawab untuk membersihkan pada akhir setiap baris dan membuat jumlah yang tepat dari batas atas di atas setiap persegi.

Semua di atas harus memberikan efek berikut setelah Anda menyimpan dan refresh:

9. Styling Pada Link Pagination

Sekarang tombol "Next" dan "Prev" link hanya mengambang dan terlihat sangat sederhana. Mari kita ubah itu. Tambahkan kode ini ke bagian akhir file style.styl Anda:

1
.prev, .next
2
    background-color $color_shadow
3
	raised()
4
	font-size $type_wrapper_font_size
5
	display inline-box
6
	position absolute
7
	left 50%
8
	width 80 * $px
9
	margin-left -40 * $px
10
11
.prev
12
	padding-bottom 8 * $px
13
	padding-top 25 * $px
14
	top 0
15
	&:before
16
		position absolute
17
		bottom 35 * $px
18
		content " "
19
		border-left: 20 * $px solid transparent
20
		border-right: 20 * $px solid transparent
21
		border-bottom: 20 * $px solid $color_link_default
22
23
.next
24
	padding-top 8 * $px
25
	padding-bottom 25 * $px
26
	bottom 0
27
	&:before
28
		position absolute
29
		top 35 * $px
30
		content " "
31
		border-left: 20 * $px solid transparent
32
		border-right: 20 * $px solid transparent
33
		border-top: 20 * $px solid $color_link_default

Dengan kode ini kami telah menempatkan link pada background hitam, terapkan mixin bayangan raised() dan tambahkan sedikit dan turun CSS segitiga melalui tiga baris perbatasan pengaturan Anda lihat &:before selector. Kami juga telah menggunakan posisi absolute dan margin negatif untuk menempatkan link di tengah layar, ditempelkan ke bagian atas dan bawah area panel.

Inilah yang seharusnya terlihat seperti sekarang:

10. Menambahkan Smooth Scroll dan Animation

Sekarang ketika seorang pengunjung mengklik tombol 'Next' atau 'Prev', ia akan langsung mengarahkannya ke panel berikutnya tanpa transisi. Sebaliknya, kami ingin membuat efek smooth scrolling dari satu panel ke panel berikutnya. Kami juga akan menambahkan beberapa efek animasi elemen pada layar untuk memberi mereka sedikit lebih hidup.

Menggabungkan Smooth Scrolling JavaScript

Untuk membuat smooth scrolling dari satu panel ke panel yang berikutnya kita akan menggunakan jQuery snippet dengan CSS Trik.

Dalam folder source > scripts > js buat sebuah file bernama smoothscroll.js dan tambahkan kode ini untuk itu:

1
$(function() {
2
  $('a[href*=#]:not([href=#])').click(function() {
3
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
4
      var target = $(this.hash);
5
      target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
6
      if (target.length) {
7
        $('html,body').animate({
8
          scrollTop: target.offset().top
9
        }, 1000);
10
        return false;
11
      }
12
    }
13
  });
14
});

Sekarang buka file site.js dari folder source > scripts dan tmbahkan baris ini untuk itu:

1
//@prepros-append js/smoothscroll.js

Kode //@prepros-append memungkinkan Anda untuk memberitahu Prepros file yang Anda ingin combine dan minify. Simpan file Anda dan secara otomatis akan menarik file smoothscroll.js Anda dan memasukkan ke file site.min.js yang sudah di load di situs kami.

Fungsi smooth scrolling berjalan secara otomatis, jadi sekarang, ketika Anda klik "Next" atau "Prev" link Anda akan melihat transisi smooth dari satu panel ke yang lain.

Gabungkan Animasi

Kita akan menggunakan kombinasi perpustakaan Animate.css dari animasi CSS murni, dan skrip Wow.js untuk mengontrol waktu dari animasi ini.

Klik kanan dan simpan wow.js ke dalam folder source > scripts > js sebagai wow.js:

Kemudian, seperti yang Anda lakukan dengan skrip smooth scroll Anda, tambahkan baris ke skrip site.js Anda untuk memberi tahu Prepros bahwa Anda ingin menarik wow.js ke dalam skrip site.min.js Anda.

Update source > scripts > site.js untuk menampilkan:

1
//@prepros-append js/smoothscroll.js

2
//@prepros-append js/wow.js

Simpan file sehingga ia meminta Prepros untuk mengkompilasi ulang.

Sekarang saatnya untuk animate.css. Klik kanan dan save animate.css ke folder source > stylus, namun tidak menyimpannya dengan ekstensi .css. tapi simpan dengan nama _animate.styl yang akan memungkinkan kita untuk mengimpor melalui file Stylus utama kami:

Di file style.styl Anda, di bawah baris dua @import, tambahkan berikut:

1
@import _animate

Simpan dan stylesheet Anda akan mengkompilasi ulang dengan Animate.css termasuk di dalamnya.

Sekarang satu-satunya yang tersisa untuk mengaktifkan animasi adalah menambahkan skrip kecil yang akan mengaktifkan wow.js.

Buka file wrapper.jade Anda, dan tambahkan tiga baris berikut langsung sebelum baris body Anda, pastikan baris pertama menjorok ke tingkat yang sama sebagai baris script yang sebelumnya:

1
    	:coffee
2
			w = Math.max document.documentElement.clientWidth, window.innerWidth or 0
3
			new WOW().init() if w > 1200

Kode filter :coffee memberitahu Jade compiler bahwa beberapa CoffeeScript akan datang, dan akan dikompilasi menjadi JavaScript.

Kode di atas pertama kali memeriksa apakah viewport setidaknya berukuran lebar 1200 pixels, karena kami tidak ingin efek animasi pada layar yang lebih kecil, maka jika demikian fungsi animasi dimulai.

Seluruh file wrapper.jade Anda sekarang akan terlihat seperti ini:

1
doctype html
2
html( lang="en" )
3
    head
4
		title
5
			block title
6
		meta( charset='utf-8' )
7
		meta( http-equiv='X-UA-Compatible', content='IE=edge' )
8
		meta( name='viewport', content='width=device-width, initial-scale=1.0' )
9
		link( href='css/style.css', rel='stylesheet', type='text/css' )
10
		link( href='//fonts.googleapis.com/css?family=Bangers|Indie+Flower', rel='stylesheet', type='text/css' )
11
		script( src='//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js' )
12
		script( src='js/site.min.js' )
13
		:coffee
14
			w = Math.max document.documentElement.clientWidth, window.innerWidth or 0
15
			new WOW().init() if w > 1200
16
	body
17
		block content

Sekarang kami siap menambahkan beberapa animasi.

Animasikan 'Hello' Pane

Menambahkan animasi sekarang super mudah. Yang perlu Anda lakukan adalah menambahkan class wow untuk setiap elemen dan kemudian memilih class Animate.css menambahkan untuk menentukan efek, seperti .fadeIn. Anda juga dapat menambahkan atribut data-wow-duration dan data-wow-delay attribute untuk menentukan durasi dan delay animasi

Kita akan memiliki baris 'Hello' pada slide panel pertama dari atas, kemudian baris kedua meluncur dari kanan, dan baris ketiga dari kiri. Buka file hello.jade Anda dan ubah kode menjadi ini:

1
h1.wow.slideInDown( data-wow-duration="1s" ) Hello
2
h3.wow.slideInRight( data-wow-duration="1s", data-wow-delay="1s" ) I'm Your Name
3
h4.wow.slideInLeft( data-wow-duration="1s", data-wow-delay="2s" ) This is What I Do

Jika menyimpan file hello.jade Anda tidak secara otomatis memicu rekompilasi, cukup buka file index.jade Anda dan simpan, yang akan meminta Prepros.

Pergi ke situs Anda dan refresh kemudian Anda akan melihat masing-masing dari tiga baris menganimasi dirinya sendiri.

Animasikan Panel Lainnya

Kami sekarang akan menganimasikan judul dan kotak kecil di halaman skills Anda. Anda masih belum mengisi konten untuk panel kosong lainnya saat ini, dan kami tidak ingin Anda harus menulis class animasi berulang kali ketika Anda melakukannya. Untuk membuat semuanya efisien kita akan membuat beberapa mixins yang berisi kode animasi kami.

Dalam folder source > content buat file bernama mixins.jade dan tambahkan kode ini ke dalamnya:

1
- var duration = "0.25s"
2
- var delay = 0.75
3
- var stagger = 0.25
4
5
mixin showSquare()
6
    li.wow.fadeIn( data-wow-duration=duration, data-wow-delay=( delay += stagger ) + "s" )
7
		block
8
9
mixin panelHead()
10
	h1.wow.fadeIn
11
		block

Di mana pun mixin ini ditempatkan, kode yang dikandungnya akan disisipkan.

Ketiga variabel dan mixin showSquare() akan memudar di masing-masing kotak kecil kami, masing-masing seperempat detik setelah yang terakhir. Mixin panelHead() akan memudar judul utama segera setelah pengunjung menuju ke sana.

Dalam file skills.jade Anda tambahkan baris ini ke bagian atas file Anda untuk membawa mixin baru Anda:

1
include mixins

Replace baris h1 Anda dengan:

1
+panelHead()

Dan replace li pertama dari masing-masing persegi Anda dengan:

1
    +showSquare()

Anda harus berakhir dengan sesuatu seperti ini:

1
include mixins
2
3
+panelHead()
4
    | My Skills Are...
5
ul
6
	+showSquare()
7
		h3 Skill One
8
		ul
9
			li +
10
			li Extra Info
11
			li More info
12
	+showSquare()
13
		h3 Skill Two
14
		ul
15
			li +
16
			li Extra Info
17
			li More info
18
	+showSquare()
19
		h3 Skill Three
20
		ul
21
			li +
22
			li Extra Info
23
			li More info
24
	+showSquare()
25
		h3 Skill Four
26
		ul
27
			li +
28
			li Extra Info
29
			li More info
30
	+showSquare()
31
		h3 Skill Five
32
		ul
33
			li +
34
			li Extra Info
35
			li More info
36
	+showSquare()
37
		h3 Skill Six
38
		ul
39
			li +
40
			li Extra Info
41
			li More info
42
	+showSquare()
43
		h3 Skill Seven
44
		ul
45
			li +
46
			li Extra Info
47
			li More info
48
	+showSquare()
49
		h3 Skill Eight
50
		ul
51
			li +
52
			li Extra Info
53
			li More info

Sekarang ketika Anda me-refresh situs Anda setelah mengkompilasi ulang dan pergi ke panel kedua Anda, Anda akan melihat judul memudar di diikuti oleh setiap kotak kecil berturut-turut terhuyung-huyung.

11. Tambahkan Rest Konten Anda

Sekarang mixin kami siap mari lanjutkan dan tambahkan konten ke panel yang tersisa. Tambahkan kode placeholder berikut ke setiap file konten kosong Anda dan sesuaikan sesuai keinginan Anda.

systems.jade

1
include mixins
2
3
+panelHead()
4
    | I Work With These Systems
5
ul
6
	+showSquare()
7
		h3 This CMS
8
		ul
9
			li More info here
10
	+showSquare()
11
		h3 That Engine
12
		ul
13
			li More info here
14
	+showSquare()
15
		h3 This System
16
		ul
17
			li More info here
18
	+showSquare()
19
		h3 That System
20
		ul
21
			li More info here

types.jade

1
include mixins
2
3
+panelHead()
4
    | I create these types of projects
5
ul
6
	+showSquare()
7
		h3 Project Type
8
		ul
9
			li More info
10
	+showSquare()
11
		h3 Project Type
12
		ul
13
			li More info
14
	+showSquare()
15
		h3 Project Type
16
		ul
17
			li More info
18
	+showSquare()
19
		h3 Project Type
20
		ul
21
			li More info

tools.jade

1
include mixins
2
3
+panelHead()
4
    | I work with these tools
5
ul
6
	+showSquare()
7
		h3 Tool Name
8
	+showSquare()
9
		h3 Tool Name
10
	+showSquare()
11
		h3 Tool Name
12
	+showSquare()
13
		h3 Tool Name
14
	+showSquare()
15
		h3 Tool Name
16
	+showSquare()
17
		h3 Tool Name
18
	+showSquare()
19
		h3 Tool Name
20
	+showSquare()
21
		h3 Tool Name
22
	+showSquare()
23
		h3 Tool Name
24
	+showSquare()
25
		h3 Tool Name
26
	+showSquare()
27
		h3 Tool Name
28
	+showSquare()
29
		h3 Tool Name

Contact.Jade

1
include mixins
2
3
+panelHead()
4
    | CONTACT ME
5
	br
6
	| Via These
7
ul
8
	+showSquare()
9
		h3 
10
			a( href="http://<sociallink>" ) Social
11
	+showSquare()
12
		h3
13
			a( href="http://<sociallink>" ) Social
14
	+showSquare()
15
		h3
16
			a( href="http://<sociallink>" ) Social
17
	+showSquare()
18
		h3
19
			a( href="http://<sociallink>" ) Social

Memodifikasi Styling Panel "Tools" dan "Contact"

Setelah mendapatkan semua konten di atas di tempat Anda akan melihat panel "tools" dan "contact" sedikit berbeda dengan yang lain. Panel 'Tools' memiliki dua belas kotak dengan judul saja sehingga tinggi mereka saat ini terlalu besar. Panel 'Contact' memiliki tautan pada kotak dan warnanya saat ini tidak berfungsi dengan baik.

Untuk memperbaiki kedua masalah ini, tambahkan kode ini ke file style.styl:

1
.tools
2
    .wrapper
3
		ul li
4
			height 140 * $px
5
6
.contact
7
	.wrapper
8
		ul li
9
			height 140 * $px
10
			a
11
				color black

Anda seharusnya memiliki link hitam pada panel "Contact" Anda dan tata letak yang seperti ini pada panel "Tools" Anda:

12. Animasikan Tombol 'Next'

Kita akan menggunakan animasi tombol berikutnya, waktunya setelah pane elemen memiliki yang semua muncul, untuk meminta pengunjung yang mereka bisa pergi ke halaman berikutnya dan juga untuk memastikan mereka menyadari link ada.

Untuk melakukan ini, yang harus kita lakukan adalah menambahkan kelas .wow dan .bounceInUp ke masing-masing tautan 'Next' dan tetapkan penundaan. File index.jade akan dapat mengakses variabel delay dan stagger yang dimasukkan ke setiap panel melalui mixins animasi kami, sehingga kami dapat menggunakan variabel-variabel tersebut dalam pengaturan penundaan untuk secara otomatis menampilkan animasi 'Next' pada waktu yang tepat untuk setiap panel.

Update index.jade Anda jadi berikut:

1
extends templates/wrapper
2
3
block title
4
    | Static Site With Prepros
5
6
block content
7
	#section01.pane.hello
8
		.wrapper
9
			include content/hello
10
			a( class="next wow bounceInUp", href="#section02", data-wow-delay="3s" ) NEXT
11
	#section02.pane.skills
12
		.wrapper
13
			a( class="prev", href="#section01" ) PREV
14
			include content/skills
15
			a( class="next wow bounceInUp", href="#section03", data-wow-delay=( delay -= stagger ) + "s" ) NEXT
16
	#section03.pane.systems
17
		.wrapper
18
			a( class="prev", href="#section02" ) PREV
19
			include content/systems
20
			a( class="next wow bounceInUp", href="#section04", data-wow-delay=( delay -= stagger ) + "s" ) NEXT
21
	#section04.pane.types
22
		.wrapper
23
			a( class="prev", href="#section03" ) PREV
24
			include content/types
25
			a( class="next wow bounceInUp", href="#section05", data-wow-delay=( delay -= stagger ) + "s" ) NEXT
26
	#section05.pane.tools
27
		.wrapper
28
			a( class="prev",href="#section04" ) PREV
29
			include content/tools
30
			a( class="next wow bounceInUp", href="#section06", data-wow-delay=( delay -= stagger ) + "s" ) NEXT
31
	#section06.pane.contact
32
		.wrapper
33
			a( class="prev",href="#section05" ) PREV
34
			include content/contact

Kembali ke situs Anda sekarang dan Anda akan melihat tombol 'Next' muncul pada waktu yang tepat untuk setiap panel.

13. Jadikan Responsif

Hal terakhir yang perlu kita lakukan adalah menambahkan beberapa pertanyaan media untuk membuat tata letak responsif. Kami akan mengurangi ukuran tag judul dan font default saat kami menurunkan, mengurangi jumlah kotak kecil per baris dan memperbarui warna dan jaraknya.

Tambahkan kode ini ke akhir style.styl file:

1
// *************
2
// QUERIES
3
// *************
4
5
$query_01 = "(max-width: " + $layout_site_width * $px + ")"
6
7
@media $query_01
8
    h_tags(0.9)
9
	.wrapper > ul > li
10
		$spacing = 0.25%
11
		width 32.8%
12
		&:nth-child(2n+1)
13
			background $color_highlight
14
		&:nth-child(2n+2)
15
			background $color_link_default
16
		&:nth-child(4n+5)
17
			clear none
18
		&:nth-child(3n+4)
19
			clear left
20
		&:nth-child(3n+1)
21
			margin-top 3 * $spacing
22
		&:nth-child(3n+2)
23
			margin-top 2 * $spacing
24
		&:nth-child(3n+3)
25
			margin-top 1 * $spacing
26
27
28
$query_02 = "(max-width: " + 1000 * $px + ")"
29
30
@media $query_02
31
	h_tags(0.8)
32
33
34
35
$query_03 = "(max-width: " + 800 * $px + ")"
36
37
@media $query_03
38
	h_tags(0.7)
39
	.hello
40
		.wrapper
41
			font-size 36 * $px
42
	.wrapper > ul > li
43
		width 49.5%
44
		&:nth-child(4n+1), &:nth-child(4n+4)
45
			background $color_highlight
46
		&:nth-child(4n+2), &:nth-child(4n+3)
47
			background $color_link_default
48
		&:nth-child(3n+4)
49
			clear none
50
		&:nth-child(2n+3)
51
			clear left
52
53
54
55
$query_04 = "(max-width: " + 500 * $px + ")"
56
57
@media $query_04
58
	.hello
59
		.wrapper
60
			font-size 24 * $px
61
	h_tags(0.6)
62
	.wrapper > ul > li
63
		height auto
64
		width 99.5%
65
		margin 0.25% !important
66
		&:nth-child(2n+1)
67
			background $color_highlight
68
		&:nth-child(2n+2)
69
			background $color_link_default

Sekarang ketika Anda menyusut situs Anda segera turun Anda akan memiliki tata letak yang seperti ini:

Wrapping Up

Anda dapat melihat versi lengkap saya sendiri dari situs ini dengan ketrampilan pribadi saya, peralatan dan sebagainya.

Seperti yang Anda lihat, Prepros adalah aplikasi kecil yang hebat dan itu membuat berhadapan dengan preprocessors hampir semudah didapat. Serta Jade dan Stylus juga dapat menangani LESS, Sass, SCSS (dengan Kompas built in), Slim, Coffeescript, LiveScript, Haml dan Markdown. Dengan versi pro, Anda juga bisa mendapatkan FTP dan alat pengujian dan debug tambahan.

Saya kadang-kadang masih mengatur alur kerja berdasarkan Grunt jika saya perlu bekerja dengan beberapa jenis proses tambahan, seperti menghasilkan dokumentasi misalnya, tetapi untuk sebagian besar proyek Prepros telah menjadi standar saya.

Dengan versi gratis yang menawarkan begitu banyak, serta versi Windows dan Mac, ini adalah aplikasi yang harus Anda coba.

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.