Advertisement
  1. Web Design
  2. jQuery

Membangun Jendela Modal Popup Menggunakan Plugin jQuery Reveal

Scroll to top
Read Time: 12 min
This post is part of a series called Bringing Premium Pixels to Life.
Menu Notification Badges Using HTML5 Data-Attributes
Powering Orman's Image Slider Controls With Nivo

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

Hari ini kita akan menggunakan Jendela Modal Popup dari Orman dan membuatnya ulang dengan HTML dan CSS. Kita kemudian akan menggunakan plugin jQuery Reveal untuk memberikan fungsionalitas penuh. Kita bahkan akan mengambil langkah lebih jauh dan menambahkan beberapa Media Queries CSS3 untuk menyesuaikannya dengan penggunaan mobile. Mari kita gali!

[Ini] jendela modal kecil sederhana, sempurna mungkin untuk pesan konfirmasi kecil seperti yang terlihat di pratinjaunya. Dan tidak, tidak ada alasan untuk menggunakan Comic Sans. Orman Clark

Langkah 1: Basis HTML5

Kita akan memulai dengan membuat dokumen kosong menggunakan markup HTML5. Kita telah menautkan ke stylesheet kita dan ke HTML5 Shiv yang akan memungkinkan elemen HTML5 di-render dengan benar di IE. Yang penting, kita juga telah terhubung ke perpustakaan jQuery terbaru (dihosting oleh Google) di bagian bawah halaman kita untuk pemuatan halaman yang dioptimalkan.

Terakhir, Anda mungkin memperhatikan kita juga menyertakan baris lain di head kita; metatag viewport. Ini akan memungkinkan perangkat untuk menafsirkan halaman kita dengan benar terlepas dari ukuran layarnya. Jika Anda ingin mengetahui lebih lanjut tentang ini, pastikan untuk memeriksa Tip Cepat ini!

1
2
<!DOCTYPE html>
3
<html>
4
<head>
5
6
  <!--Meta tags-->
7
	<meta charset="utf-8">
8
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
9
10
	<!--Title-->
11
	<title>Pop Up Modal Window</title>
12
		
13
	<!--Stylesheets-->
14
	<link rel="stylesheet" href="css/styles.css">
15
16
	<!--HTML5 Shiv-->
17
	<!--[if lt IE 9]>

18
			<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>

19
	<![endif]-->
20
	
21
</head>
22
<body>
23
24
25
26
27
28
29
	<!--jQuery-->
30
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
31
32
</body>
33
</html>

Langkah 2: Mengunduh Reveal

Sebelum kita mulai menambahkan markup dan gaya apa pun kita akan mengunduh plugin Reveal. Pergi ke http://www.zurb.com/playground/reveal-modal-plugin dan tekan 'Download the Reveal kit' di sebelah kanan halaman.

Buka paket file yang telah Anda unduh. Anda harus menyalin jquery.reveal.js ke root situs Anda, atau folder mana pun yang Anda inginkan. Saya membuat folder bernama "js", yang mana saya biasanya menyimpan sumber daya javascript saya. Selanjutnya kita perlu mereferensikan skrip kita, jadi salin berikut ini setelah skrip jQuery Anda, pastikan jalurnya benar.

1
<script src="js/jquery.reveal.js"></script>

Langkah 3: Membuat Tombol

Untuk tutorial ini, kita akan membuat tombol yang dapat diklik untuk mengaktifkan modal. Saya telah maju dan mengambil gaya tombol dari Simple Web Buttons gratis dari Orman.

1
2
<body>
3
4
	<a href="#" id="button">Click me</a>

Sebelum kita pergi dan melemparkan beberapa gaya kita akan dengan cepat menambahkan reset untuk menghapus margin yang tidak diinginkan dll. dari browser. Kita juga menambahkan beberapa gaya untuk body, hanya font-family, latar belakang dan mengamankan ukuran font pada 100%.

1
2
html, body, div, span, applet, object, iframe,
3
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
4
a, abbr, acronym, address, big, cite, code,
5
del, dfn, em, img, ins, kbd, q, s, samp,
6
small, strike, strong, sub, sup, tt, var,
7
b, u, i, center,
8
dl, dt, dd, ol, ul, li,
9
fieldset, form, label, legend,
10
table, caption, tbody, tfoot, thead, tr, th, td,
11
article, aside, canvas, details, embed, 
12
figure, figcaption, footer, header, hgroup, 
13
menu, nav, output, ruby, section, summary,
14
time, mark, audio, video {
15
	margin: 0;
16
	padding: 0;
17
	border: 0;
18
	font: inherit;
19
	vertical-align: baseline;
20
}
21
html {
22
	font-size: 62.5%; 
23
}
24
/* HTML5 display-role reset for older browsers */
25
article, aside, details, figcaption, figure, 
26
footer, header, hgroup, menu, nav, section {
27
	display: block;
28
}
29
body {
30
	line-height: 1;
31
	}
32
ol, ul {
33
	list-style: none;
34
}
35
blockquote, q {
36
	quotes: none;
37
}
38
blockquote:before, blockquote:after,
39
q:before, q:after {
40
	content: '';
41
	content: none;
42
}
43
table {
44
	border-collapse: collapse;
45
	border-spacing: 0;
46
}
47
a {
48
	text-decoration:none;
49
}
50
51
52
body {
53
	font-family:'Helvetica Neue', Helvetica, Arial, sans-serif;
54
	font-size:100%;
55
56
	background:#fff;
57
}

Untuk tombol tersebut, kita akan membuat gaya menggunakan beberapa gradien, box shadow, dan border-radius. Hal utama yang perlu Anda perhatikan di sini adalah penempatan.

Pertama-tama, kita memposisikan tombol secara absolut, terhadap body/browser. Menerapkan 50% ke kiri dan atas akan memposisikan sudut kiri atas pusat secara sempurna di layar. Selanjutnya kita perlu minus beberapa margin atas dan kiri. Untuk mengetahui apa yang kita butuhkan untuk mengurangi mereka, kita akan melihat tinggi dan lebar kita. Kita perlu setengah dari lebar 78 untuk mendapatkan 39, dan minus margin-left untuk itu. Lalu kita ambil 28/2 = 14 dan minus margin atas dengan itu. Jika Anda tidak yakin dengan apa yang terjadi di sini, itu adalah trik yang rapi untuk memusatkan secara vertikal dan horizontal sebuah item dalam CSS. Jika Anda ingin mengetahui lebih lanjut, lihat posting yang rapi ini di CSS Tricks.

Setelah melakukan ini, kita juga menambahkan efek hover yang bersifat opsional.

1
2
#button {
3
	width:78px;
4
	height:28px;
5
6
	background-image: -webkit-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 72));
7
	background-image: -moz-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 72));
8
	background-image: -o-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 72));
9
	background-image: -ms-linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 72));
10
	background-image: linear-gradient(top, rgb(254, 218, 113), rgb(254, 186, 72));
11
	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#feda71', EndColorStr='#feba48');
12
13
	border:1px solid #ca9336;
14
15
	-webkit-box-shadow:
16
		inset 0px 1px 0px #fee395,
17
		      0px 1px 1px rgba(0,0,0,.15);
18
	-moz-box-shadow:
19
		inset 0px 1px 0px #fee395,
20
		      0px 1px 1px rgba(0,0,0,.15);
21
	box-shadow:
22
		inset 0px 1px 0px #fee395,
23
		      0px 1px 1px rgba(0,0,0,.15);
24
25
	-webkit-border-radius:4px;
26
	-moz-border-radius:4px;
27
	border-radius:4px;
28
29
	font-size:13px;
30
	font-weight:bold;
31
	text-align:center;
32
	line-height:28px;
33
34
	color:#996633;
35
	text-shadow:0px 1px 0px rgba(255,255,255,.4);
36
37
	position:absolute;
38
	top:50%;
39
	left:50%;
40
	margin-top:-14px;
41
	margin-left:-39px;
42
}
43
44
#button:hover {
45
	background-image: -webkit-linear-gradient(top, rgb(254, 194, 82), rgb(254, 205, 97));
46
	background-image: -moz-linear-gradient(top, rgb(254, 194, 82), rgb(254, 205, 97));
47
	background-image: -o-linear-gradient(top, rgb(254, 194, 82), rgb(254, 205, 97));
48
	background-image: -ms-linear-gradient(top, rgb(254, 194, 82), rgb(254, 205, 97));
49
	background-image: linear-gradient(top, rgb(254, 194, 82), rgb(254, 205, 97));
50
	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#fec252', EndColorStr='#fecd61');
51
52
	-webkit-box-shadow:
53
		inset 0px 1px 0px #fed17e,
54
		      0px 1px 1px rgba(0,0,0,.1);
55
	-moz-box-shadow:
56
		inset 0px 1px 0px #fed17e,
57
		      0px 1px 1px rgba(0,0,0,.1);
58
	box-shadow:
59
		inset 0px 1px 0px #fed17e,
60
		      0px 1px 1px rgba(0,0,0,.1);
61
}

Langkah 4: Menciptakan Dasar dari Modal

Selanjutnya kita akan menambahkan beberapa markup yang akan membuat jendela modal kita. Kita akan memulai dengan membuat div dengan ID 'modal'. Ini akan menjadi dasar dari jendela modal kita.

1
2
<body>
3
4
<a href="#" id="button">Click me</a>
5
6
7
<div id="modal">
8
9
</div>

Oke, ke beberapa penataan untuk jendela ini. Sekali lagi kita akan menggunakan metode pemusatan. Anda mungkin juga melihat kita menggunakan !important. Memaku gaya CSS dalam metode ini sering tidak disarankan (dapat merusak kekhususan stylesheet dan membuat pengeditan di masa mendatang benar-benar aneh), tetapi dalam kasus ini kita tidak memiliki alternatif karena gaya plugin yang ditentukan harus ditimpa.

Kita juga menambahkan visibility:hidden; untuk menyembunyikan menu, ini akan ditampilkan dengan mengklik tombol kita.

1
2
#modal {
3
	width:360px;
4
	height:189px;
5
	padding:8px;
6
7
	background:rgba(0,0,0,.3);
8
9
	-webkit-border-radius:8px;
10
	-moz-border-radius:8px;
11
	border-radius:8px;
12
13
	position:absolute !important;
14
	top:50% !important;
15
	left:50% !important;
16
	margin-top:-94px !important;
17
	margin-left:-180px !important;
18
	z-index:101;
19
}

Kita telah menerapkan border-radius 8px yang mungkin tampak seperti nilai yang tidak biasa, tetapi ini akan memastikan sudut luar mengalir dengan tepat mengelilingi mereka di bagian dalam.

Base ModalBase ModalBase Modal

Langkah 5: Judul Modal

Selanjutnya kita akan menambahkan judul modal, ini akan menjadi div lain dengan ID heading dan hanya beberapa teks di dalamnya. Tentu saja, jangan ragu untuk menggunakan <h2> atau apa pun yang Anda inginkan.

1
2
<body>
3
4
<a href="#" id="button">Click me</a>
5
6
7
<div id="modal">
8
9
	<div id="heading">
10
		Are you sure you want to do that?
11
	</div>

Setelah itu, kita akan menambahkan beberapa CSS untuk menatanya, hanya beberapa hal dasar di sini, box shadow, gradien dll.

1
2
#heading {
3
	width:360px;
4
	height:44px;
5
6
	background-image: -webkit-linear-gradient(top, rgb(249, 249, 249), rgb(233, 233, 233));
7
	background-image: -moz-linear-gradient(top, rgb(249, 249, 249), rgb(233, 233, 233));
8
	background-image: -o-linear-gradient(top, rgb(249, 249, 249), rgb(233, 233, 233));
9
	background-image: -ms-linear-gradient(top, rgb(249, 249, 249), rgb(233, 233, 233));
10
	background-image: linear-gradient(top, rgb(249, 249, 249), rgb(233, 233, 233));
11
	filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0,StartColorStr='#f9f9f9', EndColorStr='#e9e9e9');
12
13
	border-bottom:1px solid #bababa;
14
15
	-webkit-box-shadow:
16
		inset 0px -1px 0px #fff,
17
		0px 1px 3px rgba(0,0,0,.08);
18
	-moz-box-shadow:
19
		inset 0px -1px 0px #fff,
20
		0px 1px 3px rgba(0,0,0,.08);
21
	box-shadow:
22
		inset 0px -1px 0px #fff,
23
		0px 1px 3px rgba(0,0,0,.08);
24
25
	-webkit-border-radius:4px 4px 0px 0px;
26
	-moz-border-radius:4px 4px 0px 0px;
27
	border-radius:4px 4px 0px 0px;
28
29
	font-size:14px;
30
	font-weight:bold;
31
	text-align:center;
32
	line-height:44px;
33
34
	color:#444444;
35
	text-shadow:0px 1px 0px #fff;
36
}
Modal TitleModal TitleModal Title

Langkah 6: Konten Utama Modal

Sekarang kita akan membuat bagian yang menampung paragraf dan tombol.

1
2
<body>
3
4
<a href="#" id="button">Click me</a>
5
6
7
<div id="modal">
8
9
	<div id="heading">
10
		Are you sure you want to do that?
11
	</div>
12
	
13
	<div id="content">
14
		<p>Clicking yes will make Comic Sans your new system<br> default font. Seriously, have you thought this through?</p>
15
16
		<a href="#" class="button green close"><img src="images/tick.png">Yes, do it now!</a>
17
18
		<a href="#" class="button red close"><img src="images/cross.png">No, I’m insane!</a>
19
	</div>

Beberapa aturan dasar CSS lagi, untuk paragraf kita mendefinisikan lebar 100% dan menyejajarkan teks ke tengah tetapi perhatikan dalam HTML kita menggunakan line break.

1
2
#content {
3
	width:360px;
4
	height:144px;
5
6
	background:#fcfcfc;
7
8
	-webkit-box-shadow:0px 1px 3px rgba(0,0,0,.25);
9
	-moz-box-shadow:0px 1px 3px rgba(0,0,0,.25);
10
	box-shadow:0px 1px 3px rgba(0,0,0,.25);
11
12
	-webkit-border-radius:0px 0px 4px 4px;
13
	-moz-border-radius:0px 0px 4px 4px;
14
	border-radius:0px 0px 4px 4px;
15
}
16
17
#content p {
18
	font-size:13px;
19
	font-weight:normal;
20
	text-align:center;
21
	line-height:22px;
22
	color:#555555;
23
24
	width:100%;
25
	float: left;
26
27
	margin:19px 0;
28
}
Modal Main ContentModal Main ContentModal Main Content

Langkah 7: Tombol-tombol Itu!

Kita menambahkan beberapa markup untuk tombol di langkah terakhir tetapi sekarang kita akan menambahkan beberapa gaya untuk mereka. Anda mungkin telah memperhatikan bahwa kita juga menggunakan dua gambar di sini, ini digunakan untuk tanda silang dan centang. Cara kita menyusun ini adalah dengan menambahkan dua kelas, button yang menentukan semua gaya utama dari tombol dan kemudian kelas red dan green, jelas untuk menciptakan warna.

Kita juga telah menargetkan gambar di dalam tombol, float ke kiri dan memberi mereka lebar dan tinggi.

1
2
.button {
3
	width:138px;
4
	height:33px;
5
6
	font-size:13px;
7
	font-weight:bold;
8
	line-height:33px;
9
10
	color:#fff;
11
	text-shadow:0px 1px 0px rgba(0,0,0,.2);
12
13
	-webkit-border-radius:3px;
14
	-moz-border-radius:3px;
15
	border-radius:3px;
16
17
	-webkit-box-shadow:
18
		inset 0px 1px 0px rgba(255,255,255,.5),
19
		0px 1px 2px rgba(0,0,0,.3);
20
	-moz-box-shadow:
21
		inset 0px 1px 0px rgba(255,255,255,.5),
22
		0px 1px 2px rgba(0,0,0,.3);
23
	box-shadow:
24
		inset 0px 1px 0px rgba(255,255,255,.5),
25
		0px 1px 2px rgba(0,0,0,.3);
26
27
	float:left;
28
}
29
.button img { 
30
	float:left;
31
	width:33px;
32
	height:33px;
33
}
34
35
36
37
.button.green {
38
	background: -webkit-linear-gradient(top,  rgba(170,212,79,1) 0%,rgba(116,185,49,1) 90%,rgba(106,173,45,1) 95%,rgba(96,157,41,1) 100%);
39
	background: -moz-linear-gradient(top,  rgba(170,212,79,1) 0%,rgba(116,185,49,1) 90%,rgba(106,173,45,1) 95%,rgba(96,157,41,1) 100%);
40
	background: -o-linear-gradient(top,  rgba(170,212,79,1) 0%,rgba(116,185,49,1) 90%,rgba(106,173,45,1) 95%,rgba(96,157,41,1) 100%);
41
	background: -ms-linear-gradient(top,  rgba(170,212,79,1) 0%,rgba(116,185,49,1) 90%,rgba(106,173,45,1) 95%,rgba(96,157,41,1) 100%);
42
	background: linear-gradient(top,  rgba(170,212,79,1) 0%,rgba(116,185,49,1) 90%,rgba(106,173,45,1) 95%,rgba(96,157,41,1) 100%);
43
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#aad44f', endColorstr='#609d29',GradientType=0 );
44
45
	border:1px solid #5b8821;
46
47
	margin:0 5px 0 35px;
48
}
49
.button.red {
50
	background: -webkit-linear-gradient(top,  rgba(248,114,136,1) 0%,rgba(243,71,85,1) 90%,rgba(225,65,77,1) 95%,rgba(206,59,70,1) 100%);
51
	background: -moz-linear-gradient(top,  rgba(248,114,136,1) 0%,rgba(243,71,85,1) 90%,rgba(225,65,77,1) 95%,rgba(206,59,70,1) 100%);
52
	background: -o-linear-gradient(top,  rgba(248,114,136,1) 0%,rgba(243,71,85,1) 90%,rgba(225,65,77,1) 95%,rgba(206,59,70,1) 100%);
53
	background: -ms-linear-gradient(top,  rgba(248,114,136,1) 0%,rgba(243,71,85,1) 90%,rgba(225,65,77,1) 95%,rgba(206,59,70,1) 100%);
54
	background: linear-gradient(top,  rgba(248,114,136,1) 0%,rgba(243,71,85,1) 90%,rgba(225,65,77,1) 95%,rgba(206,59,70,1) 100%);
55
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f87288', endColorstr='#ce3b46',GradientType=0 );
56
57
	border:1px solid #b0333e;
58
59
	margin:0 35px 0 5px;
60
}
ButtonsButtonsButtons

Langkah 8: Menghubungkannya dengan Reveal

Sekarang kita akhirnya selesai menata modal kita, kita akan menghubungkannya dengan plugin Reveal. Pertama kita harus kembali ke CSS, menemukan #modal dan menambahkan visibility:hidden; untuk itu.

Selanjutnya kita harus kembali ke dokumen html dan menambahkan yang berikut ke bagian bawah dokumen kita, di bawah tempat kita mereferensikan skrip Reveal. Di sini kita mengaitkan tombol sebagai item mengklik kita dan div modal kita sebagai item yang terbuka.

1
2
<script type="text/javascript">
3
	$(document).ready(function() {
4
		$('#button').click(function(e) { 		// Button which will activate our modal

5
			$('#modal').reveal({ 				// The item which will be opened with reveal

6
				animation: 'fade',              // fade, fadeAndPop, none

7
				animationspeed: 600,            // how fast animtions are

8
				closeonbackgroundclick: true,   // if you click background will modal close?

9
				dismissmodalclass: 'close'    	// the class of a button or element that will close an open modal

10
			});
11
		return false;
12
		});
13
	});
14
</script>

Langkah 9: Di mana Overlay itu?

Anda mungkin berpikir kita sudah selesai, tapi tunggu! Kita seharusnya memiliki lapisan hitam untuk menutupi semuanya di bawah modal - seluruh halaman. Untuk memperbaiki ini, kita perlu menerapkan beberapa CSS ke elemen yang dibuat oleh plugin reveal, menutupi halaman.

1
2
.reveal-modal-bg { 
3
	position: fixed; 
4
	height: 100%;
5
	width: 100%;
6
	background: #000;
7
	background: rgba(0,0,0,.4);
8
	z-index: 100;
9
	display: none;
10
	top: 0;
11
	left: 0; 
12
}
OverlayOverlayOverlay

Langkah 10: Membuatnya Mobile

Oke, kita telah menyelesaikan modal kita sekarang tetapi kita akan menambahkan beberapa gaya diperuntukkan bagi perangkat yang lebih kecil. Media query berikut (ditambahkan setelah semua aturan css lainnya) menerapkan gaya bila dilihat dengan layar tidak lebih lebar dari 767px. Agar modal dapat dilihat dengan benar tanpa tumpang tindih dari layar, kita hanya mengubah beberapa lebar, tinggi dan ukuran font.

1
2
@media only screen and (max-width: 767px) {
3
        
4
	#modal {
5
		width:284px;
6
		height:156px;
7
		padding:8px;
8
9
		margin-left:-150px !important;
10
		margin-top:-78px;
11
	}
12
	#heading {
13
		width:284px;
14
		height:28px;
15
16
		line-height:28px;
17
		font-size:0.688em;
18
	}
19
	#content {
20
		width:284px;
21
		height:128px;
22
   	}
23
   	#content p {
24
   		width:284px;
25
   		font-size:0.688em;
26
   	}
27
   	.button img { 
28
		width:23px;
29
		height:23px;
30
	}
31
	.button {
32
		width:108px;
33
		height:23px;
34
35
		line-height:23px;
36
		font-size:0.688em;
37
	}
38
	.button.green {
39
		margin:0 4px 0 28px !important;
40
	}
41
	.button.red {
42
		margin:0 28px 0 4px !important;
43
	}
44
}

Browser Lama

Jadi bagaimana semua biaya ini di browser yang lebih lama?

Nah, selain teknik CSS3 modern seperti gradien, border-radius dll, modal akan bekerja seperti yang diharapkan pada versi Internet Explorer yang lebih lama. Contoh sempurna dari degradasi yang anggun.


Kesimpulan

Oke kita telah melakukannya! Kita telah mengambil salah satu desain Orman dan mengkodekannya, kali ini menggunakan plugin jQuery gratis bernama Reveal.

CompletedCompletedCompleted

Saya harap Anda menyukai tutorial ini, terima kasih telah membaca!

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.