Posts

Tips Cepat : Cara Termudah untuk Menampilkan Pemberitahuan Browser

Pemberitahuan Web JavaScript memungkinkan browser dekstop dan mobile untuk menampilkan notifikasi dengan konten khusus. Meskipun dukungannya dulu sangat tidak konsisten, API sekarang kompatibel dengan kebanyakan browser modern dan kita sudah melihatnya diimplementasikan dibanyak situs web dan aplikasi.

Pada artikel ini kami akan menunjukan cara tercepat untuk memasang notifikasi browser menggunakan library open source Push.js.

Setup Projek

Kita akan membuat aplikasi sederhana yang meminta izin dan kemudian mengirimkan pemberitahuan pada button klik. Untuk kesederhanaan kita akan bekerja pada satu file index.html dengan skript inline. Sumber lengkapnya tersedia di Github.

Hal pertama yang perlu kita lakukan adalah menyertakan librarynya. Push.js dapat diinstall melalui via npm atau file lokal, namun cara termudah untuk menerapkannya yakni melalui CDN :

<script src="https://cdnjs.cloudflare.com/ajax/libs/push.js/0.0.11/push.min.js"></script>

Library Push.js tidak diperlukan untuk bekerja dengan Web Notifikasi, namun API menawarkan yang jauh lebih mudah untuk bekerja dibandingkan dengan Notifikasi API asli. Push.js akan menangani permission, service worker, dan inkonsistensi lintas browser, jadi kita tidak perlu melakukannya.

Request Permission

Pengguna perlu memberi izin (permission) sebelum kita bisa mengirimkan notifikasi. Hal ini dilakukan melalui dialog browser built-in yang mungkin sudah Anda saksikan :

permission-request

Push.js secara otomatis meminta izin saat kita mencoba mengirimkan notifikasi pertama kita. Namun, dalam banyak kasus, kita ingin secara manual meminta pengguna terlebih dahulu.

Push.Permission.request();

Sekarang kita akan membuka dialog browser yang mendorong pengguna untuk menerima atau menolak untuk menerima pemberitahuan. Jika permission telah diberikan atau ditolak, kode diatas akan diabaikan.

Membuat Notifikasi

Untuk menampilkan notifikasi, kita cukup memanggil metode Push.create, yang mengharapkan sebuah judul dan objek opsional yang memegang semua jenis preferensi dan callback yang berguna :

Push.create('Hi there!', {
    body: 'This is a notification.',
    icon: 'icon.png',
    timeout: 8000,               // Timeout before notification closes automatically.
    vibrate: [100, 100, 100],    // An array of vibration pulses for mobile devices.
    onClick: function() {
        // Callback for when the notification is clicked. 
        console.log(this);
    }  
});

Hasilnya akan menampilkan notifikasi button klik, namun interaksi pengguna tidak diperlukan, notifikasi baru dapat dibuat kapan saja, termasuk saat tab tidak aktif saat ini.

notification

Pastikan tidak terlalu mengganggu pengguna. Kirim notifikasi hanya bila Anda ingin memperbaruinya pada sesuatu yang penting seperti teks pesan baru atau permintaan pertemanan baru.

Kompatibilitas Browser

Notifikasi API didukung di kebanyakan browser modern. Untuk melihat apakah browser pilihan Anda mendukungnya. Hal ini harus bekerja tanpa masalah di Chrome dekstop, Firebox dan Safari, serta Chrome untuk Android. Satu-satunya klien populer yang hilang dari daftar ini adalah iOS Safari, yang tidak menyediakan pemberitahuan web apa pun.

Hal lain yang penting untuk dicatat disini adalah agar pemberitahuan yang akan ditampilkan di Android, aplikasi web harus dihosting melalui HTTPS.

Bacaan lainnya

Notifikasi merupakan penambahan yang relatif baru dalam dunia browser namun dapat diperkirakan akan semakin banyak melihatnya, terutama karena progresif Web Apps menjadi lebih populer seperti facebook, whatsApp. Jika Anda ingin mempelajari lebih lanjut tentang notifikasi JavaScript, berikut beberapa resource yang kami sarankan Anda untuk melihatnya.

  • Sebuah postingan blog oleh creator Push.js membahas mengapa dia menciptakan projek dan rencana untuk masa depannya. Disini
  • Push API – API baru yang mengagumkan  memungkinkan pengguna menerima pemberitahuan meskipun aplikasi web tidak terbuka. Disini
  • Hal apa yang membuat notifikasi yang baik? Artikel Google Developer tentang cara membuat notifikasi lebih baik. Disini

15 menarik JavaScript dan CSS Perpustakaan untuk April 2016

15 Menarik JavaScript dan CSS Perpustakaan untuk April 2016

15 Interesting JavaScript and CSS Libraries for April 2016

9_office_ui

Office UI Fabric

Sebuah Microsoft proyek open-source resmi, ini adalah kerangka kerja untuk membangun aplikasi web yang mengikuti tampilan dan nuansa dari program desktop MS Office. Ia bekerja dengan cara yang sama untuk Bootstrap: HTML dan CSS komponen, grid responsif, dan banyak jQuery add-ons.

14_stickers

Sticker.js

Perpustakaan ini memungkinkan pengembang untuk menambahkan stiker peel off unik untuk proyek web mereka. Setiap elemen pada halaman dapat diubah menjadi stiker dan ketika seseorang melayang di atasnya animasi yang realistis diterapkan. Perpustakaan ini tidak memiliki dependensi eksternal – hanya vanili JavaScript dan animasi CSS3 halus digunakan.


4_cash

Cash

Cash adalah alternatif ringan untuk jQuery. Ini menyediakan sintaks yang sama dan banyak metode jQuery populer dan fitur, ditulis ulang menggunakan yang modern JavaScript, sehingga perpustakaan hanya 8kB dalam ukuran (dibandingkan dengan 32KB dari jQuery). Jika Anda tidak perlu untuk mendukung IE lama dan berpikir jQuery telah menjadi terlalu besar selama bertahun-tahun, memberikan Cash mencoba.

Popper.js

Popper adalah library JavaScript untuk menambahkan tooltips dan popovers untuk elemen HTML. Ia menawarkan ton pilihan kustomisasi dan sepenuhnya modular dengan plugin terpisah untuk setiap fitur. Popper cukup rumit dibandingkan dengan perpustakaan tooltip lainnya, sementara masih menjadi sangat mudah digunakan dan kecil dalam ukuran.

5_datepicker

Bootstrap Material Datepicker

Sebuah Material Desain bertema tanggal dan waktu pemetik dibangun di atas jQuery dan Momentjs. Untuk menggunakannya Anda hanya perlu mengikat ke sebuah field input, mengatur pilihan yang Anda butuhkan, dan memutuskan apakah Anda ingin tanggal pemetik, waktu pemetik atau keduanya. Ketika pengguna mengklik pada input, dialog mencari modern akan muncul yang berisi kalender Android terinspirasi atau jam.

1_material_kit

Material Kit

Sebuah UI kit gratis yang menggabungkan sintaks akrab Bootstrap dengan penampilan modern Desain Bahan Google. Ada proyek serupa lainnya seperti Material Design for Bootstrap dan Bootswatch Paper Theme, tapi Material Kit, menjadi yang terbaru, telah belajar dari kerangka yang lebih tua dan menawarkan produk dipoles dengan gaya rapi dan banyak komponen.

8_skeleton

Skeleton

Skeleton adalah perpustakaan CSS responsif yang akan mengubah proyek HTML hambar menjadi salah satu gaya dengan praktis nol usaha. Tidak seperti Bootstrap dan kerangka UI lainnya di mana Anda harus menambahkan satu ton kelas untuk HTML, Skeleton hanya memerlukan beberapa kelas dan otomatis gaya segala sesuatu yang lain. Perpustakaan ini sangat ringan, menampilkan hanya sederhana 12 kolom grid dan komponen yang paling dasar.

10_icheck

iCheck

Seperti kebanyakan pengembang web tahu, kotak centang standar HTML dan tombol radio terlihat mengerikan dan sakit besar untuk menyesuaikan dengan benar di semua browser. Itu sebabnya ada perpustakaan yang tak terhitung jumlahnya yang membantu Anda melakukan hal ini, dan iCheck mungkin adalah yang paling keren dari mereka semua. Ia menawarkan beberapa tema yang unik, adalah sangat disesuaikan, dan bahkan memiliki IE6 + dan dukungan mobile browser.

6_stylefmt

Stylefmt

Stylefmt adalah modul PostCSS yang secara otomatis format CSS dan SCSS stylesheet. Anda dapat menulis aturan format Anda sendiri atau menggunakan yang standar untuk membuat CSS proyek Anda terlihat sama, tidak peduli siapa yang menulisnya. Stylefmt tersedia di mana-mana – sebagai CLI, modul node.js, dan sebagai plugin untuk editor teks populer atau pelari tugas.

7_twitter

InlineTweet.js

Aktifkan teks pada halaman web Anda ke tombol twitter saham. Hanya menambahkan rentang dengan atribut yang tepat dan InlineTweet akan secara otomatis mengubah teks yang dipilih menjadi link. Ketika seseorang mengklik di atasnya, maka akan menghasilkan tweet, termasuk hashtags dan URL akan kembali ke halaman Anda.

 

11_smoothstate

SmoothState

SmoothState adalah proyek berani yang ternyata situs web biasa Anda menjadi aplikasi halaman. Cara kerjanya adalah mencegah link dari membuka halaman baru dan bukannya menyuntikkan mereka ke dalam satu saat menggunakan AJAX, sementara memanipulasi browser history dan URL, seolah-olah halaman telah berubah. Menambahkan animasi loading dingin sementara permintaan AJAX selesai dan Anda telah mendapatkan SPA.

Nanobar

Hanya 700 byte gzip, nanobars memungkinkan pengembang web untuk dengan cepat menciptakan kemajuan bar berfungsi penuh. perpustakaan memiliki kolam yang sangat kecil dari metode dan pilihan tetapi memberi Anda apa yang Anda butuhkan – fungsi untuk menginisialisasi bar baru, dan satu lagi untuk mengubah kemajuan itu.

3_blur

Image Blur

Ini adalah plugin jQuery yang memungkinkan deveopers untuk menambahkan blur filter pada gambar. Biasanya ini dapat dilakukan dengan menggunakan properti CSS filter, tapi browser support untuk itu masih sangat buruk. Dengan menggunakan plugin ini Anda dapat memastikan bahwa efek blur akan bekerja sama dengan baik di semua browser utama.

13_typeit

TypeIt

Dengan TypeIt Anda dapat membuat efek animasi yang akan menampilkan string seolah-olah sedang mengetik. Perpustakaan menawarkan semua fitur yang Anda mungkin berpikir seperti perulangan animasi, mengendalikan kecepatan mengetik, mengganti string dengan yang baru, dan lain-lain.

 

15_repaintless

Repaintless

CSS animasi cara yang lebih memori efisien daripada rekan-rekan JavaScript mereka, tapi masih dapat memperlambat halaman web jika mereka tidak dilakukan dengan benar. Menerapkan efek transisi dengan lebar, tinggi, atas atau kiri elemen menyebabkan redraw dari DOM dan menempati GPU. Sebaliknya, transformasi properti harus diterapkan dan orang-orang di belakang Repaintless telah menggunakan ini untuk membuat sebagian besar mentega-halus animasi perpustakaan mungkin.

 

Cara Membuat Halaman Full Animated Transition

Dimasa lalu, menambahkan transisi halaman di halaman web merupakan proses yang sederhana. Ketika Anda mengklik link tersebut akan mengarahkan Anda ke halaman berikutnya sebagai browser load halaman berikutnya. Web telah merasa ketinggalan jaman jika Anda akan berpikir tentang ada banyak ruang untuk memperbaikinya. Bukankah lebih bagus untuk menambahkan beberapa transisi halus untuk menciptakan pengalaman pengguna yang lebih baik dalam meload halaman berikutnya?

Hal baik yang bisa dilakukan. Ada banyak aplikasi rumit dan plugin yang menawarkan jenis efek yang sama dan beberapa mungkin berpikir bahwa sulit untuk memperolehnya. Untungnya hal itu tidak dengan cara ini.

Kita sudah bermain-main dengan jQery dalam mencari tahu cara untuk menggantikan reload dari halaman web dengan animasi yang mengagumkan yang pasti akan merubah pikiran pengguna tanpa menggunakan plugin dan kini kita akan berbagi cara dalam pembuatannya.

Membuat Markup

Struktur HTML hanya akan terdiri dari dua div untuk dua halaman yang berisi id main-page dan  next-page.

<div id="main-page">
    <!--- Main Content Here -->
</div>   
<div id="next-page">
    <!--- Next Page Content Here -->
</div>

Yuk kita menambahkan konten dalam div. Kita akan memberikan setiap halaman link untuk menavigasi dan menghubungkan mereka satu sama lain melalui class mainlink dan nextlink.

<div id="main-page">
    <div class="maincontent">
       <h1>Full Page Transition</h1>
       <a class="mainlink">TRY IT NOW &#10140;</a>               
    </div>
</div>             
<div id="next-page">
    <div class="nextcontent">
       <h1>Great! You're in the 2nd Page!</h1>
       <a class="nextlink"> &#8592 GO BACK</a>
    </div>
</div>

Menambahkan Style

Sekarang mari kita menambahkan beberapa style umum di markup. Kita akan mengatur elemen seluruh tubuh untuk 100% dan mengatur beberapa properti font untuk tag h1 kami.

body {
width: 100%;
}
h1 {
    font-family: 'Raleway';
    font-weight: bold;
    text-align: center;
    font-size: 50px;
    color: #fff;
    margin-top: 120px;
}

Langkah selanjutnya mari kita buat style main-page dan next-page. Keduanya berbagi sifat bawaan yang sama kecuali warna background. Kita mengatur posisi untuk mutlak dan menyembunyikan kedua elemen melalui display : none.

#main-page {
    height: 25px;
    width: 375px;
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
    margin: auto;
    background-color: #27ae60;
    display: none;
}
#next-page {
    height: 25px;
    width: 375px;
    position: absolute;
    top: 0; bottom: 0; left: 0; right: 0;
    margin: auto;
    background-color: #e74c3c;
    display: none;
}
.maincontent, .nextcontent {
    padding-top: 40px;
    display: none;
}

Kita juga menambahkan style dasar untuk tombol agar membuat mereka lebih menarik. Kami menggunakan border untuk membuat box shape halus pada tombol dan menyelaraskan ke center.

a.back{
    font-family: 'Lato';
    font-size: 20px;
    color: #dfdfdf;
    text-decoration: none;
    text-align: center;
    width: 20%;
    margin: 25px auto 30px auto;
    display: block;
}
a.mainlink, a.nextlink {
    font-family: 'Lato';
    color: #fff;
    border: 3px solid #fff;
    padding: 15px 10px;
    display: block;
    text-align: center;
    margin: 25px auto;
    width: 13%;
    text-decoration: none;
    cursor: pointer;
    font-size: 20px;
    font-weight: 500;
 
}
a.mainlink:hover, a.nextlink:hover{
    background: #fff;
    color: #575757;
}

Menghidupkan dengan jQuery

Untuk jQuery page load, kita akan mulai dengan fungsi rasional yang akan melakukan animasi kustom dari satu set properti CSS melalui properti, durasi, mengurangi value lengkap.

$(document).ready(function() {
 
    $.fn.animateRotate = function(angle, duration, easing, complete) {
      var args = $.speed(duration, easing, complete);
      var step = args.step;
      return this.each(function(i, e) {
        args.complete = $.proxy(args.complete, e);
        args.step = function(now) {
          $.style(e, 'transform', 'rotate(' + now + 'deg)');
          if (step) return step.apply(e, arguments);
        };
 
        $({deg: 0}).animate({deg: angle}, args);
      });
    };

Selanjutnya, kita akan mengatur ulang semua properti dari halaman utama dan fadenya. Ketika mainlink dan nextlink diklik akan melaksanakan fungsi dia.

Fungsi pertama akan memudarkan teks dalam halaman utama dan membuat objek menyusut. Setelah eksekusi objek berputar menggunakan fungsi untuk transisi rotasi.

$("#main-page").css("background-color", "#e74c3c");
$("#main-page").css("height", "100vh");
$("#main-page").css("width", "100%");
$("#main-page").fadeIn();
$(".maincontent").fadeIn();
 
$(".mainlink").on("click", function() {
    $(".maincontent").fadeOut();
    $("#main-page").animate({
        width: "25px",
        height: "375px"
    }, function() {
        $(this).animateRotate(90);
    });
     
    setTimeout(function() {
        $("#main-page").fadeOut();       
    }, 1500);
     
    setTimeout(function() {
        $("#next-page").animateRotate(0, 0);
        $("#next-page").css("height", "25px");
        $("#next-page").css("width", "375px");
        $("#next-page").fadeIn();
        $("#next-page").animate({
            backgroundColor: "#27ae60"
        }, function() {
            $(this).animate({
                height: "100vh"
            }, function() {
                $(this).animate({
                    width: "100%"
                }, function() {
                    $(".nextcontent").fadeIn(300);
                });
            });
        });
    }, 800);
});

Setelah semua langkah ini, fungsi fade out objek yang diklik untuk menunjukan objek baru dan kemudian mengubah warna background dari objek yang cocok dengan objek baru.

Terakhir, kita menghidupkan tinggi dan lebar serta memudar dalam isi objek baru ditampilkan.

$(".nextlink").on("click", function() {
        $(".nextcontent").fadeOut();
        $("#next-page").animate({
            width: "25px",
            height: "375px"
        }, function() {
            $(this).animateRotate(-90);
        });
         
        setTimeout(function() {
            $("#next-page").fadeOut();          
        }, 1500);
         
        setTimeout(function() {
        $("#main-page").animateRotate(0, 0);
        $("#main-page").css("height", "25px");
        $("#main-page").css("width", "375px");
            $("#main-page").fadeIn();
            $("#main-page").animate({
                height: "100vh"
            }, function() {
                $(this).animate({
                    width: "100%"
                }, function() {
                    $(".maincontent").fadeIn(300);
                });
            });
        }, 1400);
    });
     
});

Demo