today sale icon

Akses kelas selamanya

Ambil Promo
flash sale
hamburger-menu

Tips Front-End

Meningkatkan skills menjadi 1% lebih baik

Kelas Tutorial Melakukan Fetching Data Menggunakan JavaScript di BuildWithAngga

Tutorial Melakukan Fetching Data Menggunakan JavaScript

Fetching data merupakan teknik bagaimana sebuah aplikasi melakukan permintaan resource pada server tertentu dan mengembalikan data tersebut sesuai dengan permintaan. Pada artikel kali ini kita akan membahas bagaimana melakukan Fetching data menggunakan Javascript menggunakan kata kunci fetch. Syntax fetch('url') .then(result => { // handle result here }).catch(error => { // handle error here }) Mari kita analisis: Fungsi fetch pada JavaScript menerima satu parameter bertipe data string, yaitu endpoint atau URL dimana kita akan melakukan proses permintaan data pada resource tertentu.Kemudian karena fungsi fetch merupakan sebuah Promise, maka kita perlu melakukan proses chaining dengan fungsi then agar mendapatkan data yang diinginkan.Ketika melakukan sebuah permintaan data menggunakan fetch, terkadang data yang diinginkan tidak dikembalikan sesuai permintaan. Hal tersebut terjadi karena server ataupun endpoint tersebut mengalami error yang tidak kita ketahui. Untuk mengatasi hal tersebut kita wajib melakukan error handling, yaitu dengan cara memanggil fungsi catch. Fungsi catch ini mendapatkan semua error baik saat melakukan proses pemanggilan data ataupun kesalahan saat proses development. Implementasi Kita akan mencoba untuk hit endpoint yang disediakan oleh website JSONPlaceholder untuk melakukan proses fetching sederhana menggunakan kata kunci fetch. Jadi mari kita mulai. Inisialisasi Project Silakan kamu buat folder dengan nama learn-fetching-data, kemudian buat file HTML dengan nama index.html dan script.js hal ini bertujuan agar kita memisahkan antara bagian logic dan proses render menjadi file terpisah. Dalam project kali ini kita akan menggunakan Tailwind CSS sebagai proses styling, maka didapatkan: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sample API Data</title> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet" /> <style> body { font-family: "Poppins", sans-serif; } </style> <script src="https://cdn.tailwindcss.com"></script> </head> <body> <div class="container mx-auto px-5 mt-10"> <h1 class="text-2xl font-bold mb-5">Belajar Fetching Data</h1> <div id="container" class="flex flex-col gap-5"> <!-- Semua data akan dirender disini --> </div> </div> <script src="script.js"></script> </body> </html> Maka didapatkan hasil: 2. Lakukan Fetching Data Silakan kamu buka file script.js, kemudian kita akan melakukan proses fetching data dengan URL yang sudah kita siapkan sebelumnya, maka didapatkan: const fetchAllTodos = () => { return fetch("https://jsonplaceholder.typicode.com/posts") .then((response) => { if (!response.ok) { throw new Error('Network response was not ok.'); } return response.json(); }) .then((data) => { console.log(data); return data; }) .catch((error) => { return error; }); }; fetchAllTodos(); Maka apabila kita buka browser dan pada bagian console akan didapatkan data sebagai berikut: Seperti keterangan console di atas, kita sudah berhasil melakukan proses pengambilan data dengan menggunakan kata kunci fetch pada JavaScript. Selanjutnya kita akan menampilkan data tersebut ke dalam bentuk komponen UI yang sederhana. 3. Implementasikan Kedalam UI Untuk membuat hasil fetching data menjadi sebuah komponen HTML dan mudah dibaca, kita perlu membuat design nya terlebih dahulu. Berikut komponen Card yang akan kita gunakan untuk menampilkan data tersebut: <div class="border rounded-md p-4 flex justify-between items-start gap-x-3"> <div> <h1 class="font-bold mb-3">Lorem ipsum dolor sit amet.</h1> <span class="text-sm text-gray-500">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eum, suscipit?</span> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" /> </svg> </div> </div> Maka apabila kita padukan dengan baris HTML pada langkah pertama, didapatkan kode sebagai berikut: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sample API Data</title> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet" /> <style> body { font-family: "Poppins", sans-serif; } </style> <script src="https://cdn.tailwindcss.com"></script> </head> <body> <div class="container mx-auto px-5 mt-10"> <h1 class="text-2xl font-bold mb-5">Belajar Fetching Data</h1> <div id="container" class="flex flex-col gap-5"> <!-- Semua data akan dirender disini --> <div class="border rounded-md p-4 flex justify-between items-start gap-x-3"> <div> <h1 class="font-bold mb-3">Lorem ipsum dolor sit amet.</h1> <span class="text-sm text-gray-500">Lorem ipsum dolor sit amet consectetur, adipisicing elit. Eum, suscipit?</span> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" /> </svg> </div> </div> </div> </div> <script src="script.js"></script> </body> </html> Pada langkah ini kita sudah berhasil membuat design komponen Card, hanya saja data tersebut belum sesuai dengan hasil fetching kita. Maka kita perlu menjadikannya dinamis dengan cara membuat fungsi yang me-render komponen Card yang barusan kita dibuat. Silahkan kamu buka file script.js dan tambahkan kode berikut: // Ambil tag id container const containerDisplay = document.getElementById('container') // Komponen Card untuk render semua data const cardComponent = (title, body) => { // Buat Card const data = ` <div class="border rounded-md p-4 flex justify-between items-start gap-x-3"> <div> <h1 class="font-bold mb-3">${title}</h1> <span class="text-sm text-gray-500">${body}</span> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" /> </svg> </div> </div> ` // Tambahkan kedalam elemen container yang sudah kita definisikan sebelumnya containerDisplay.insertAdjacentHTML('afterbegin', data) } Kemudian kita buat sebuah fungsi bernama render untuk menggabungkan antara fungsi fetchAllTodos yang sudah kita definisikan sebelumnya dengan fungsi cardComponent yang barusan kita buat. function render() { fetchAllTodos() .then((response) => { response.forEach(result => { cardComponent(result.title, result.body); }); }) .catch((error) => { console.error('Error rendering data:', error); }); } render(); Maka apabila kita buka browser akan didapatkan hasil seperti ini: Taraa! Selamat kalian telah berhasil melakukan fetching data dan menampilkannya ke dalam komponen HTML yang mudah dibaca. Pada langkah selanjutnya kita akan mencoba melakukan Handle Error untuk mengantisipasi terjadinya kesalahan baik itu dari aplikasi kita maupun dari sisi server. 4. Handle Error Pertama kita buat komponen HTML nya terlebih dahulu dan kita sebut sebagai komponen Alert: <div class="m-10 border border-red-700 text-red-700 bg-red-100 p-10 rounded-lg flex flex-col items-center gap-3"> <div class="flex gap-x-3"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> </svg> <h1 class="font-bold text-center md:text-xl lg:text-2xl">Terjadi Kesalahan</h1> </div> <span class="text-sm text-center text-red-600"><span class="font-bold">Error Message :</span> Some Error</span> </div> Didapatkan bentuk seperti ini: Lalu buat fungsi untuk menampung komponen Alert tersebut seperti komponen Card sebelumnya, didapatkan: // Komponen Alert jika terdapat error const alertComponent = (message) => { const data = ` <div class="m-10 border border-red-700 text-red-700 bg-red-100 p-10 rounded-lg flex flex-col items-center gap-3"> <div class="flex gap-x-3"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> </svg> <h1 class="font-bold text-center md:text-xl lg:text-2xl">Terjadi Kesalahan</h1> </div> <span class="text-sm text-center text-red-600"><span class="font-bold">Error Message :</span> ${message}</span> </div> ` containerDisplay.insertAdjacentHTML('afterbegin', data) } Kemudian kita implementasikan ke dalam fungsi render sebelumnya, didapatkan: function render() { fetchAllTodos() .then((response) => { response.forEach(result => { cardComponent(result.title, result.body); }); }) .catch((error) => { alertComponent(error.message) }); } render(); Maka dengan ini apabila terdapat error, maka fungsi AlertComponent akan berjalan dan menampilkannya sebagai komponen HTML sesuai dengan yang kita harapkan. Berikut ini kode keseluruhan file index.html dan script.js yang telah kita buat: File index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Sample API Data</title> <link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> <link href="https://fonts.googleapis.com/css2?family=Poppins&display=swap" rel="stylesheet" /> <style> body { font-family: "Poppins", sans-serif; } </style> <script src="https://cdn.tailwindcss.com"></script> </head> <body> <div class="container mx-auto px-5 mt-10"> <h1 class="text-2xl font-bold mb-5">Belajar Fetching Data</h1> <div id="container" class="flex flex-col gap-5"></div> </div> <script src="script.js"></script> </body> </html> File script.js // Ambil tag id container const containerDisplay = document.getElementById('container') // Komponen Card untuk render semua data const cardComponent = (title, body) => { // Buat Card const data = ` <div class="border rounded-md p-4 flex justify-between items-start gap-x-3"> <div> <h1 class="font-bold mb-3">${title}</h1> <span class="text-sm text-gray-500">${body}</span> </div> <div> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" /> </svg> </div> </div> ` // Tambahkan kedalam elemen container yang sudah kita definisikan sebelumnya containerDisplay.insertAdjacentHTML('afterbegin', data) } // Komponen Alert jika terdapat error const alertComponent = (message) => { const data = ` <div class="m-10 border border-red-700 text-red-700 bg-red-100 p-10 rounded-lg flex flex-col items-center gap-3"> <div class="flex gap-x-3"> <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> </svg> <h1 class="font-bold text-center md:text-xl lg:text-2xl">Terjadi Kesalahan</h1> </div> <span class="text-sm text-center text-red-600"><span class="font-bold">Error Message :</span> ${message}</span> </div> ` containerDisplay.insertAdjacentHTML('afterbegin', data) } // Fungsi untuk mendapatkan semua data fetch const fetchAllTodos = () => { return fetch("https://jsonplaceholder.typicode.com/posts") .then((response) => { if (!response.ok) { throw new Error('Network response was not ok.'); } return response.json(); }) .catch((error) => { return error; }); }; function render() { fetchAllTodos() .then((response) => { response.forEach(result => { cardComponent(result.title, result.body); }); }) .catch((error) => { alertComponent(error.message) }); } render(); Kesimpulan Tentu saja artikel ini hanya mencakup dasar fetching data dan bagaimana implementasinya dalam project sederhana. Kita juga dapat mengkombinasikan fetching data menggunakan framework JavaScript seperti React atau Vue untuk membangun sebuah website yang lebih interaktif dan efisien. Kalian bisa mulai latihan menggunakan framework JavaScript dengan cara mempelajari beberapa kelas online di BuildWithAngga. Jadi tunggu apa lagi? Mari bergabung dan sampai jumpa di kelas!

Kelas Mengenal Framework Tailwind CSS Serta Fitur Unggulannya di BuildWithAngga

Mengenal Framework Tailwind CSS Serta Fitur Unggulannya

Cascade Style Sheet (CSS) sangat penting digunakan apabila kita ingin membuat projek website menjadi lebih menarik dalam meningkatkan user interface dan user experience sehingga pengguna yang menggunakan website tersebut menjadi lebih betah dan dapat meningkatkan keuntungan dari perusahaan tersebut. Pada CSS terdapat banyak property yang bisa digunakan seperti tinggi, lebar, warna latar belakang, efek shadows, warna gradient, border, rata kanan dan kiri, dan juga sebagainya. Apabila kita menulis property tersebut satu per satu dari awal maka akan membutuhkan waktu yang begitu banyak dalam menyelesaikan sebuah tampilan projek website. Mengenal Framework Tailwind CSS Saat ini terdapat banyak framework CSS yang dapat kita gunakan untuk mempercepat kinerja kita sebagai website developer dalam mengembangkan website yang modern disertai tampilan menarik, saya akan coba memberikan rekomendasi untuk kamu segera mencoba framework CSS yang sedang popular saat ini yaitu adalah Tailwind CSS. Tailwind adalah sebuah framework CSS yang mengedepankan konsep utility-first, yang dimaksud dari utility-first adalah Tailwind telah menyediakan ratusan Class CSS yang dapat kita panggil dengan mudah pada dokumen HTML, sehingga kita tidak perlu lagi melakukan penulisan CSS secara custom karena class CSS yang disediakan oleh tailwind sudah sangat lengkap. Beberapa Class pada framework Tailwind CSS yang sering digunakan oleh website developer adalah sebagai berikut: w-10 = mengatur lebarh-10 = mengatur tinggitext-white = mengatur warna teksbg-indigo-500 = mengatur warna latar belakangflex flex-col = mengatur layout menjadi verticalgrid grid-cols-3 = mengatur layout menjadi terbagi 3 bagian (DIV) Perbedaan Tailwind CSS dengan traditional framework CSS lainnya Jika sebelumnya kamu pernah pakai Bootstrap atau Semantic UI maka ketika mulai menggunakan Tailwind CSS, kamu akan melihat perbedaan yang besar yaitu pada Tailwind CSS tidak tersedia predefined components yang siap digunakan seperti btn-primary, navbar, form-group, dan juga sebagainya layaknya tersedia pada traditional framework CSS. Konsep utility-first pada tailwind css memberikan kebebasan tak terbatas kepada website developer untuk menggunakan kreatifitas mereka dalam mengembangkan sebuah website yang modern disertai tampilan sangat menarik. Selain itu juga untuk mengurangi bloated pada projek tersebut sehingga perfomance pada website menjadi lebih cepat karena tidak menggunakan Class yang tidak terpakai. Tips mempelajari framework Tailwind CSS dengan baik Kamu perlu memperdalam property utama yang tersedia pada CSS sebelum langsung menggunakan Tailwind CSS dikarenakan seperti yang saya bilang sebelumnya kalau menggunakan Tailwind tidak akan tersedia predefined component sehingga kita perlu paham untuk mengatur tinggi, lebar, warna background, dan sebagainya menggunakan property apa saja sehingga hasilnya lebih maksimal. Setelah mengenal seluruh property penting pada CSS maka bisa dilanjutkan untuk memahami dokumen resmi framework Tailwind CSS untuk mempelajari bagaimana cara install, pemakaian class, dan juga sebagainya sehingga kita bisa lebih hafal dalam menggabungkan setiap utility yang telah disediakan oleh framework Tailwind CSS untuk membuat layout yang kompleks. Perbanyak slicing tampilan website untuk berlatih Saya biasanya memperdalam keahlian dalam menggunakan Tailwind CSS adalah dengan cara melakukan slicing berbagai layout dari mulai yang mudah sampai dengan sulit. Beberapa template Figma tersebut dapat saya download gratis sebagai bahan latihan pada website Shaynakit, seluruh design pada Shaynakit dibuat oleh designer lokal dalam membantu website developer memiliki projek yang menarik sebagai portfolio mereka kedepannya nanti. Kesimpulan menggunakan framework Tailwind CSS Tailwind CSS memberikan kebebasan dan perfomance yang baik dalam membangun website yang memiliki tampilan modern dan eye-catching. Kita dapat mengkombinasikan Tailwind CSS dengan framework JavaScript seperti React atau Vue JS dalam membangun website yang interaktif demi meningkatkan pertumbuhan bisnis perusahaan. Kamu bisa mulai latihan menggunakan framework tailwind css dengan cara mempelajari beberapa kelas online gratis tailwind css buatan mentor expert di BuildWithAngga.

Kelas Cara Membuat Button Primary Menarik - Tutorial Tailwind CSS di BuildWithAngga

Cara Membuat Button Primary Menarik - Tutorial Tailwind CSS

Pada kali ini kita akan belajar membuat button yang menarik menggunakan HTML dan Tailwind CSS untuk membangun projek website yang modern. Pertama kita perlu membuat tag HTML sederhana terlebih dahulu untuk hyperlink yang akan kita jadikan sebuah button <a href="#" class=""> View Profile </a> Kodingan HTML di atas tersedia class untuk komponen tersebut dan belum kita berikan styling menggunakan Tailwind CSS, kita akan memberikan property seperti: panjanglebarwarna backgroundtingkat radius cornerefek hover ketika disorot cursor <a href="#" class="font-bold text-white bg-orange-400 rounded-full px-5 py-3"> View Profile </a> Saya akan menjelaskan fungsi setiap class name yang digunakan di atas sebagai berikut: font-bold digunakan untuk menjadikan text pada button tersebut menjadi lebih tebal sehingga mudah dilihat penggunatext-white untuk menjadikan warna text menjadi warna putih karena kita menggunakan warna background orange sehingga lebih mudah dibacabg-orange-400 artinya adalah kita mengatur tersebut memiliki background berwarna orange dengan angka 400 sehingga warnanya di antara terang dan gelaprounded-full kita butuhkan untuk mengatur button tersebut berbentuk halus pada setiap sudutnya Pada button tersebut kita tidak mengatur lebar dan tinggi secara manual dengan angka yang pasti, namun kita menggunakan padding untuk mengatur lebar dan tinggi dari button tersebut. Mengapa demikian? agar lebarnya menjadi lebih responsive sesuai dengan panjang dari text pada button tersebut. Maka berikut hasil dari pembuatan button sejauh ini: Selanjutnya kita perlu menambahkan sedikit interaksi agar meningkatkan user experience ketika pengguna menyorot button tersebut maka akan berubah warna sehingga berbeda dengan komponen lainnya menggunakan kode berikut: <a href="#" class="hover:bg-indigo-950 font-bold text-white bg-orange-400 rounded-full px-5 py-3"> View Profile </a> Jika kita lihat di atas maka saya baru saja menambahkan hover:bg-indigo-950 yang berarti ketika di-hover atau sorot maka warnanya berubah menjadi indigo, kamu bisa cobain save projeknya lalu lihat hasilnya pada browser favoritmu. Selanjutnya kita belajar Tailwind CSS tentang apa lagi ya? saranin langsung ke BuildWithAngga ya melalui Instagram.

Kelas Mengenal CSS: Membuat Tampilan Website Menjadi Menarik di BuildWithAngga

Mengenal CSS: Membuat Tampilan Website Menjadi Menarik

Apabila kita ingin membuat pengguna betah menggunakan website buatan kita maka kita perlu memberikan tampilan yang menarik (eye-catching) di mata pengguna. Kita perlu memberikan styling seperti color, typography, spacing, grid system, dan lainnya sehingga website terlihat lebih modern, clean, minimalist, dan intuitive. Untuk melakukan styling tersebut maka kita perlu mempelajari lebih dalam ilmu CSS di dalam dunia website development. Apa itu CSS? CSS kepanjangan dari Cascading Style Sheets adalah sebuah bahasa style sheet yang digunakan oleh website developer dalam mengembangkan dan memodifikasi tampilan website sehingga bisa lebih menarik. CSS biasanya digunakan di dalam dokumen HTML dan juga bisa digunakan secara pisah dari HTML agar lebih mudah diorganisir dengan rapih. Apabila kita memisahkan CSS dari HTML maka perlu kita import menggunakan script HTML seperti <link rel=”stylesheet” type=”text/css” href=”css/style.css”> Kelebihan menggunakan CSS Dalam membuat layout website maka kita perlu menggunakan HTML, keterbatasan dari HTML adalah tidak bisa memberikan styling yang lebih complex lagi dibandingkan CSS misalnya membuat animasi, warna gradient, corners pada sudut element, dan sebagainya. Selain itu juga apabila kita memisahkan kodingan CSS dengan file HTML maka projek website akan lebih mudah di-maintenance oleh lebih dari satu developer saja pada perusahaan tersebut sehingga selain tampilan website yang jadi lebih menarik namun juga memberikan perfomance website tersebut menjadi lebih cepat dan membuat pengguna betah menggunakannya. Beberapa contoh yang saya lakukan dengan CSS dalam membuat projek website menjadi lebih menarik adalah sebagai berikut: Mengatur responsive design sehingga tampilan website tetap bagus pada laptop, handphone, dan layar smartTVMembuat beberapa animasi dalam meningkatkan user-experience pada website yang saya bangunMembuat reusable styling sehingga saya bisa lebih cepat menggunakan style yang sama dan berulang kepada halaman-halaman lainnya Cara menggunakan CSS pertama kita Kita beruntung karena CSS sebenarnya menggunakan bahasa Inggris yang mudah dipahami seperti jika kita ingin mengatur suatu lebar maka pakai width dan untuk tinggi pakai height, well, sudah waktunya perdalam bahasa Inggris kita juga nih. Untuk memberikan styling kepada sebuah element tertentu pada tampilan website kita maka kita perlu memberikan selector kepada element tersebut melalui file CSS kita. Misalnya kita ingin membuat button yang besar dan berwarna biru, maka kita perlu menuliskan kodingan seperti berikut: button { background-color: blue, width: 200px, height: 55px; } Jika kita perhatikan kodingan di atas maka kita telah mengarahkan styling kepada button lalu kita berikan property seperti background-color (warna background) menjadi biru ditambah juga mengatur lebar dan tinggi menggunakan pixel. Kodingan CSS di atas akan mengubah seluruh styling pada <button></button> pada dokumen HTML kita, namun apabila kamu hanya ingin mengubah pada beberapa button tertentu maka kita bisa menggunakan ‘.’ ditambah dengan nama kelas yang dimaksud, sebagai contoh berikut: .button-checkout { background-color: orange, width: 200px, height: 55px; } Kodingan diatas dapat membantu kita mengubah seluruh warna background menjadi warna oranye kepada button yang memiliki nama kelas button-checkout, oleh karena itu kita perlu memberikan attribute class=”” pada button menjadi <button class=”button-checkout”><button>. Apabila kamu ingin coba mempraktikkan kodingan CSS di atas maka bisa menggunakan software seperti visual studio code atau sublime text editor. Jika kamu tertarik untuk memperdalam ilmu CSS pada website design dan development maka silahkan mengikut beberapa kelas CSS gratis pada website BuildWithAngga sehingga tampilan website kamu bisa lebih menarik perhatian calon perusahaan tempat kamu bekerja nantinya. Kesimpulan perkenalan CSS Beberapa poin penting perlu kita ingat dalam mempelajari CSS: CSS adalah bahasa stylesheet yang digunakan website developer untuk membuat tampilan website lebih menarik dan meningkatkan user-experienceCSS wajib dipisah dari dokumen HTML agar mudah di-maintenanceCSS dapat membantu kita membuat layout lebih complex seperti menambahkan animasiCSS menggunakan bahasa Inggris sederhana sehingga mudah dipahami orang awamDengan menggunakan CSS kita bisa memberikan styling lebih cepat tanpa mengulang-ulang kembali pada styling yang samaCSS membantu kita membuat tampilan website lebih responsive di seluruh device Oiya nanti pada artikel selanjutnya kita akan bahas lebih tentang CSS seperti Internal dan External CSS, beberapa framework CSS pilihan, dan sebagainya. Pantau terus halaman tips ini untuk mendapatkan beberapa tips CSS terbaru lainnya. See you again in the next article.

Kelas Membuat Responsive Design Menggunakan Tailwind di BuildWithAngga

Membuat Responsive Design Menggunakan Tailwind

Tailwind adalah sebuah framework CSS yang dirancang untuk memudahkan pengembangan antarmuka pengguna dalam pengembangan web. Framework ini menyediakan sejumlah besar kelas CSS yang dapat digunakan untuk membangun dan mengatur tampilan halaman web dengan cepat dan efisien. Membuat Responsive Design Menggunakan Tailwind Responsive design, atau desain responsif, adalah pendekatan dalam pengembangan web yang memastikan tampilan halaman web dapat menyesuaikan diri dengan berbagai ukuran layar perangkat yang berbeda, seperti komputer desktop, tablet, atau smartphone. Dengan desain responsif, halaman web akan diatur ulang secara otomatis untuk memastikan konten tetap terlihat dengan baik dan dapat diakses oleh pengguna pada berbagai perangkat. Mengenal Breakpoints pada Tailwind Dalam Tailwind, breakpoint adalah titik tertentu pada rentang lebar layar yang digunakan untuk menentukan perubahan tata letak atau gaya pada elemen-elemen dalam desain responsif. Breakpoint memungkinkan untuk mengatur perilaku elemen UI ketika layar berubah ukurannya, sehingga dapat mengoptimalkan tampilan halaman web untuk berbagai perangkat. Tailwind menyediakan sejumlah breakpoint bawaan yang sudah ditentukan. Berikut adalah beberapa contoh breakpoint yang umum digunakan: Small (sm): Biasanya digunakan untuk layar smartphone dengan lebar hingga sekitar 640px.Medium (md): Digunakan untuk layar tablet dengan lebar sekitar 640px hingga 768px.Large (lg): Digunakan untuk layar laptop atau desktop dengan lebar sekitar 768px hingga 1024px.Extra Large (xl): Digunakan untuk layar desktop besar dengan lebar di atas 1024px. Membuat Komponen Card Pada kesempatan kali ini kita akan membuat sebuah komponen card menggunakan Tailwind. Pada komponen tersebut akan memiliki sebuah gambar, judul produk, dan bagian deskripsi produk. Untuk container pada komponen card tersebut kita akan menggunakan grid dari Tailwind yang berfungsi untuk membuat tata letak grid yang responsif dengan mudah. Grid memungkinkan kamu untuk mengatur elemen-elemen ke dalam baris dan kolom, grid-cols berfungsi untuk mengatur jumlah komponen yang ada di dalam kolom grid. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <div class="border border-red h-screen flex justify-center items-center"> <div class="container mx-auto px-4 py-8"> <div class="grid grid-cols-4"> <div class="bg-gray-200 p-4"> <img src="../image-1.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 1</h2> <p class="text-gray-600">Deskripsi Produk 1</p> </div> </div> </div> </div> </div> </body> </html> Menambah Komponen Card Setelah membuat komponen card kita perlu membuat beberapa komponen card lagi agar dapat menerapkan responsive pada tampilan yang kita buat. Pada container grid kita perlu memberikan kelas “gap-4” agar memberi jarak pada setiap komponen card yang ada. Pada setiap komponen card juga kita perlu memberikan background, padding, dan ukuran font yang sesuai dengan komponen card pertama. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <div class="border border-red h-screen flex justify-center items-center"> <div class="container mx-auto px-4 py-8"> <div class="grid grid-cols-4 gap-4"> <div class="bg-gray-200 p-4"> <img src="../image-1.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 1</h2> <p class="text-gray-600">Deskripsi Produk 1</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-2.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 2</h2> <p class="text-gray-600">Deskripsi Produk 2</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-3.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 3</h2> <p class="text-gray-600">Deskripsi Produk 3</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-4.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 4</h2> <p class="text-gray-600">Deskripsi Produk 4</p> </div> </div> </div> </div> </div> </body> </html> Memberikan Responsive pada Komponen Card Untuk memberikan efek responsive kita perlu menggunakan breakpoint yang telah tersedia pada Tailwind “sm” kita gunakan jika layar memiliki ukuran sebesar minimal 640px. Pada ukuran tersebut kita akan memberikan ukuran kolom pada grid sebesar dua kolom, sedangkan untuk ukuran “md” yang akan berubah jika ukuran layar memiliki ukuran minimal 768px dan kita akan memberikan ukuran kolom grid sebesar 3 kolom, dan untuk ukuran “lg” yang akan berubah jika ukuran layar memiliki ukuran minimal 1024px yang akan memberikan ukuran kolom grid sebesar 4 kolom. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <div class="border border-red h-screen flex justify-center items-center"> <div class="container mx-auto px-4 py-8"> <div class="grid grid-cols-4 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4 "> <div class="bg-gray-200 p-4"> <img src="../image-1.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 1</h2> <p class="text-gray-600">Deskripsi Produk 1</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-2.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 2</h2> <p class="text-gray-600">Deskripsi Produk 2</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-3.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 3</h2> <p class="text-gray-600">Deskripsi Produk 3</p> </div> </div> <div class="bg-gray-200 p-4"> <img src="../image-4.jpeg" alt=""> <div class="p-3"> <h2 class="text-xl">Produk 4</h2> <p class="text-gray-600">Deskripsi Produk 4</p> </div> </div> </div> </div> </div> </body> </html> Contoh tampilan di berbagai ukuran: Tampilan pada ukuran website Tampilan pada ukuran tablet Tampilan pada ukuran mobile Kesimpulan Dalam implementasi desain responsif dengan Tailwind, kita dapat menggunakan kelas “grid” untuk tata letak yang responsif dan menarik. Dengan memanfaatkan properti “min-width” dan kelas-kelas utilitas yang sesuai, kita dapat memastikan bahwa elemen-elemen penting dalam tampilan web tetap terlihat dengan baik, bahkan pada layar yang lebih kecil. Agar dapat lebih memahami penggunaan Tailwind kamu dapat mengikuti kelas CSS Tailwind Web Design dan Master Class: React JS dan Tailwind CSS Website Development pada website buildwithangga.com

Kelas 5 Fungsi Utama Software Postman API di BuildWithAngga

5 Fungsi Utama Software Postman API

Postman API adalah sebuah alat pengembangan dan pengujian aplikasi yang populer dalam dunia pengembangan perangkat lunak. Postman API dirancang untuk membantu pengembang dalam membangun, menguji, dan mendokumentasikan API. API adalah sekumpulan aturan dan protokol yang memungkinkan berbagai aplikasi berkomunikasi satu sama lain. Dalam pengembangan perangkat lunak, API memungkinkan aplikasi untuk berinteraksi dengan aplikasi lain dengan cara yang terstruktur dan terstandarisasi. 5 Fungsi Utama Software Postman API Postman API menyediakan antarmuka pengguna yang intuitif dan lengkap untuk mengelola, mengirim, dan menerima permintaan API. Anda dapat menggunakannya untuk mengirim permintaan HTTP seperti GET, POST, PUT, dan DELETE ke endpoint API yang ditentukan, serta untuk mengirim dan menerima data dalam berbagai format seperti JSON dan XML. Mengirim HTTP Request kepada Server Contoh request dengan metode GET HTTP Request adalah sebuah permintaan yang dilakukan dari sisi klien kepada server menggunakan protokol HTTP. Ada beberapa metode yang untuk melakukan HTTP Request sebagai contoh jika kamu ingin mengambil sebuah data maka kamu perlu menggunakan metode GET, sedangkan jika kamu ingin mengirim sebuah data kamu bisa menggunakan metode POST, untuk mengupdate sebuah data kamu bisa menggunakan metode PUT, dan jika kamu ingin menghapus data kamu bisa menggunakan metode DELETE. Pengujian Terhadap Response Yang Diterima Postman API menyediakan alat pengujian yang kuat untuk memvalidasi respons API. Anda dapat memeriksa status kode, header, dan data yang diterima dari permintaan API. Ini memungkinkan kamu untuk menguji fungsionalitas dan memastikan bahwa API bekerja dengan benar. Sebagai contoh kita akan mencoba untuk melakukan testing terhadap respon yang telah kita terima sebelumnya, kita akan menguji apakah response yang kita dapat memiliki status code 200 yang berarti respon telah sukses diberikan. Kita akan menuliskan kode seperti di bawah ini di bagian Test yang ada pada aplikasi Postman untuk menguji respon yang diberikan. pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); Dan hasilnya akan seperti berikut. Contoh testing pada postman Membuat Mock Server Contoh pembuatan mock server pada postman Mock server pada Postman adalah fitur yang memungkinkan Anda membuat server tiruan yang dapat mensimulasikan respons API tanpa perlu mengakses server asli atau melibatkan pengembangan penuh dari sisi server. Dengan menggunakan mock server, kamu dapat menguji permintaan API dan merancang respons yang diharapkan tanpa perlu menunggu atau mengandalkan server yang sebenarnya. Mock server memungkinkan Anda membuat skenario respons API yang berbeda berdasarkan permintaan yang diterima. Anda dapat menentukan respons yang ingin dikirimkan oleh mock server, termasuk status kode, header, dan tubuh respons. Ini memungkinkan kamu untuk mensimulasikan berbagai kasus pengujian dan melihat bagaimana klien berinteraksi dengan respons yang berbeda. Membuat Dokumentasi API Contoh dokumentasi API pada postman Dokumentasi API pada Postman API adalah fitur yang memungkinkan kamu untuk membuat dokumentasi yang terstruktur dan mudah dibaca untuk API yang Anda buat atau gunakan. Dokumentasi API ini berfungsi sebagai panduan penggunaan dan referensi bagi developer atau pengguna lain yang ingin berinteraksi dengan API tersebut. Dokumentasi API pada Postman API membantu dalam berbagi dan memahami penggunaan API. Dengan dokumentasi yang baik, pengguna atau pengembang lain dapat dengan mudah memahami cara menggunakan API, melihat contoh permintaan dan respons, serta memahami parameter dan header yang dibutuhkan. Hal ini memfasilitasi kolaborasi tim dan meningkatkan adopsi dan penggunaan API secara keseluruhan. Mengatur Environtment pada Postman Dalam Postman, kamu dapat membuat lingkungan (environment) untuk menyimpan nilai variabel yang spesifik untuk setiap lingkungan, seperti lingkungan pengembangan, produksi, atau uji. Misalnya, jika Anda bekerja dengan API yang memiliki URL yang berbeda di lingkungan pengembangan dan produksi, Anda dapat menyimpan URL ini sebagai variabel dalam masing-masing lingkungan. Dengan cara ini, Anda dapat dengan mudah mengubah nilai variabel sesuai dengan lingkungan yang ingin Anda gunakan. Selain URL, variabel-variabel lain yang umum disimpan dalam environment Postman meliputi token otentikasi, header, parameter, dan body dari permintaan HTTP. Anda dapat merujuk ke variabel-variabel ini dengan menggunakan sintaks {{nama_variabel}} dalam permintaan Anda, dan Postman akan menggantikan variabel-variabel ini dengan nilai yang tepat saat Anda menjalankan permintaan. Conton membuat variabel pada environtment postman Sebagai contoh, kita telah membuat sebuah environtment bernama “BWA test” kemudian kita membuat sebuah variabel “url” yang memiliki nilai berupa url https://jsonplaceholder.typicode.com yang akan memberikan kita respon berupa data. Sehingga pada saat kita ingin melakukan request pada url tersebut kita tidak perlu menuliskan alamat url nya secara lengkap, cukup dengan menuliskan nama variabel yang telah kita buat pada environtment. Contohnya sebagai berikut. Kesimpulan Dalam rangka pengembangan dan pengujian API yang efisien, Postman menjadi alat yang penting bagi para pengembang. Dengan lima fungsi utama yang telah kita bahas dalam artikel ini, yaitu pengujian endpoint, pengaturan dan pemantauan koleksi permintaan, dokumentasi API, kolaborasi tim, dan lingkungan pengembangan yang dapat dipersonalisasi, Postman API menjadi solusi yang kuat dan efektif bagi para pengembang dalam mengelola dan memperbaiki API mereka. Untuk mengetahui lebih lanjut mengenai Postman API kamu dapat mengikuti kelas Full-Stack Laravel Flutter 2021: Building E-Commerce and Chat Apps dan Full Stack Flutter Laravel: Laundry Market App dari buildwithangga.com atau kamu juga bisa membaca dokumentasi resmi dari Postman API.

Kelas 10 Contoh CSS Menarik Untuk Website Design di BuildWithAngga

10 Contoh CSS Menarik Untuk Website Design

Dalam membangun sebuah website CSS merupakan salah satu hal yang penting. CSS berperan untuk menciptakan tampilan yang menarik serta dapat membantu pengguna memiliki pengalaman yang menyenangkan saat mengakese website. Dengan menggunakan CSS kamu dapat menentukan ukuran, warna, posisi, dan elemen visual lainnya. 10 Contoh CSS Menarik Untuk Website Design Dalam kesempatan kali ini kami akan memberikan kamu 10 contoh CSS menarik untuk website desiain yang mungkin bisa kamu jadikan sebagai inspirasi saat membuat portofolio website kamu sendiri. 1. Efek Hovering pada Skala Elemen Contoh efek hovering skala Efek hovering skala adalah salah satu cara untuk memberikan respons visual pada elemen saat pengguna mengarahkan kursor ke atasnya. Ketika kursor berada di atas elemen, elemen tersebut akan mengalami perubahan ukuran yang membuatnya terlihat lebih besar atau lebih kecil dari ukuran aslinya. Cara kerja efek hovering skala biasanya menggunakan CSS dengan memanfaatkan properti transform dan transition. Pertama, kita mendefinisikan elemen yang ingin diberi efek hovering skala. Kemudian, kita menetapkan transisi (transition) pada elemen tersebut, yang akan mengatur kecepatan dan gaya animasi perubahan ukuran. Selanjutnya, saat pengguna mengarahkan kursor ke elemen tersebut, kita mengubah properti transform elemen dengan menggunakan pseudoclass :hover pada CSS. Properti transform dengan nilai scale digunakan untuk mengubah ukuran elemen, di mana nilai 1.0 adalah ukuran asli, sedangkan nilai di atas 1.0 akan membuat elemen terlihat lebih besar dan nilai di bawah 1.0 akan membuat elemen terlihat lebih kecil. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="scale-effect"> <h2>Elemen dengan Efek Skala</h2> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } .scale-effect { transition: transform 0.3s ease; } .scale-effect:hover { transform: scale(1.2); } 2. Efek Loading Pada Button Contoh efek loading pada button Pada contoh di atas, tombol dengan kelas "loading-button" dibuat dengan menggunakan CSS. Efek animasi loading diimplementasikan dengan menggunakan pseudo-elemen :before. Pseudo-elemen ini memiliki animasi yang memindahkan posisinya dari kiri ke kanan sejauh 100% lebar tombol dalam waktu 2 detik. Latar belakang pseudo-elemen tersebut memiliki warna semi-transparan untuk memberikan efek loading yang terlihat di belakang teks tombol. Anda dapat menyesuaikan ukuran tombol, warna latar belakang, dan gaya lainnya sesuai dengan preferensi desain kamu. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <h1 class="creative-text">Welcome to <span>My Website</span></h1> </div> </div> </div> </body> </html> .container{ height: 100vh; } .creative-text { font-size: 48px; color: #333; text-align: center; } .creative-text span { display: inline-block; font-size: 60px; color: #4CAF50; animation: textAnimation 2s ease-in-out infinite; } @keyframes textAnimation { 0% { transform: scale(1); color: #4CAF50; } 50% { transform: scale(1.2); color: #FFC107; } 100% { transform: scale(1); color: #4CAF50; } } 3. Efek pada Typography Contoh efek pada typography Pada contoh di atas, elemen judul <h1> dengan kelas "creative-text" memiliki teks "Welcome to" diikuti dengan elemen <span> yang berisi teks "My Website". Efek animasi kreatif diterapkan pada elemen <span> menggunakan CSS. Animasi tersebut mengubah ukuran teks dan warna pada dua tahap yaitu saat 50% dan 100% dari animasi. Teks akan memperbesar ukurannya dan berubah warna menjadi kuning pada tahap pertama, kemudian kembali ke ukuran semula dan warna hijau pada tahap kedua. Animasi ini akan berulang secara terus-menerus menggunakan infinite pada properti animation. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <h1 class="creative-text">Welcome to <span>My Website</span></h1> </div> </div> </div> </body> </html> .container{ height: 100vh; } .creative-text { font-size: 48px; color: #333; text-align: center; } .creative-text span { display: inline-block; font-size: 60px; color: #4CAF50; animation: textAnimation 2s ease-in-out infinite; } @keyframes textAnimation { 0% { transform: scale(1); color: #4CAF50; } 50% { transform: scale(1.2); color: #FFC107; } 100% { transform: scale(1); color: #4CAF50; } } 4. Efek hovering pada Button Contoh efek hovering pada button Pada contoh di atas, kita menggunakan CSS untuk memberikan efek gelombang pada tombol saat dihover. Kelas "wave-button" diterapkan pada elemen <button> untuk menerapkan gaya tombol. Properti position: relative; digunakan untuk mengatur elemen sejajar dengan posisinya yang asli. Pseudo-elemen ::before digunakan untuk membuat latar belakang gelombang. Pada kode ini, kita mengatur posisi latar belakang ke tengah tombol menggunakan transformasi translate(-50%, -50%);. Lebar dan tinggi latar belakang awalnya diatur sebagai 0 sehingga tidak terlihat. Pada saat hover (:hover), kita mengubah lebar dan tinggi latar belakang menjadi 200% sehingga menciptakan efek gelombang yang membesar. Selain itu, kita mengatur opasitas menjadi 1 sehingga latar belakang terlihat dengan transparansi. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <button class="wave-button">Click Me</button> </div> </div> </div> </body> </html> .container{ height: 100vh; } .wave-button { position: relative; display: inline-block; padding: 10px 20px; font-size: 16px; color: #fff; background-color: #4CAF50; border: none; cursor: pointer; overflow: hidden; } .wave-button:after { content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 0; height: 0; border-radius: 50%; background-color: rgba(255, 255, 255, 0.5); opacity: 0; pointer-events: none; transition: all 0.5s ease; } .wave-button:hover:after { width: 200%; height: 200%; opacity: 1; } 5. Efek overlay pada image Efek overlay pada image Pada contoh di atas, kita menggunakan CSS untuk memberikan efek overlay pada gambar saat dihover. Di dalam kontainer gambar (<div class="image-container">), kita meletakkan elemen gambar (<img>) dan elemen overlay (<div class="overlay">). Kelas "image-container" diterapkan pada elemen kontainer untuk mengatur posisi relatif dan tata letak inline-block. Kelas "overlay-image" diterapkan pada elemen gambar untuk memastikan bahwa gambar menempati seluruh lebar kontainer. Kelas "overlay" diterapkan pada elemen overlay dan menggunakan properti position: absolute; untuk mengatur posisi absolut di atas gambar. top: 0; left: 0; digunakan untuk mengatur posisi overlay di pojok kiri atas kontainer. Background color diatur dengan rgba(0, 0, 0, 0.5) yang mewakili warna hitam dengan tingkat transparansi 0.5. Awalnya, kita mengatur opasitas overlay menjadi 0 sehingga tidak terlihat. Namun, saat dihover (:hover), kita mengubah opasitas menjadi 1 sehingga overlay terlihat dengan transparansi. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="image-container"> <img src="gambar.jpeg" alt="Gambar" class="overlay-image" > <div class="overlay"> <h1 class="text-overlay">hello world</h1> </div> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } .image-container { position: relative; display: inline-block; } .overlay-image { display: block; width: 500px; height: auto; } .overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); opacity: 0; transition: opacity 0.3s ease; } .image-container:hover .overlay { opacity: 1; } .text-overlay{ color: white; } 6. Membuat Carousel menggunakan CSS Contoh efek carousel menggunakan CSS Pada contoh di atas di bagian kode HTML <div class="wrapper">: Ini adalah elemen pembungkus yang mengelilingi elemen carousel. Ini diperlukan untuk membuat efek overlay pada tombol navigasi. Anda dapat menerapkan gaya dan memodifikasi elemen ini sesuai kebutuhan desain Anda. <div class="carousel" tabindex="0">: Ini adalah elemen utama carousel yang memiliki kelas "carousel". Properti tabindex="0" diberikan untuk membuat elemen ini dapat menerima fokus saat interaksi keyboard. Ini memungkinkan pengguna menggunakan tombol panah untuk menggulir melalui slide. Kemudian untuk <div class="slide">: Ini adalah elemen slide dalam carousel. Setiap slide terdiri dari gambar dan tautan navigasi yang terletak di atas dan di bawah gambar. Anda dapat menambahkan lebih banyak elemen atau mengubah tampilan slide sesuai kebutuhan. <a href="#item-4">Slide 4</a>: Ini adalah tautan navigasi di dalam slide. Setiap tautan memiliki atribut href yang mengarahkan ke slide tertentu. Misalnya, tautan ini mengarahkan ke slide dengan ID "item-4". Anda dapat mengubah teks tautan dan mengatur href sesuai dengan kebutuhan. Selanjutnya <img id="item-1" src="<https://source.unsplash.com/random/800x500?1>" alt="">: Ini adalah elemen gambar dalam slide. Setiap gambar memiliki atribut src yang menunjukkan sumber gambar dan atribut alt yang memberikan teks alternatif untuk aksesibilitas. ID pada gambar yang sesuai dengan href pada tautan navigasi memungkinkan navigasi yang tepat saat menggunakan tombol panah. Kemudian pada bagian CSS Kelas .carousel digunakan untuk elemen carousel utama. Ini diberi properti position: relative; untuk mengatur posisi relatif terhadap konten sekitarnya dan display: flex; untuk mengatur tampilan elemen-elemen dalam satu baris. overflow-x: auto; mengaktifkan guliran horizontal jika kontennya melebihi lebar kontainer. Sementara itu, scroll-behavior: smooth; memberikan efek animasi saat bergeser, dan scroll-snap-type: x mandatory; mengaktifkan snap saat menggulir ke elemen-elemen carousel. Properti lain seperti z-index dan :focus diberikan untuk memberikan gaya tambahan saat interaksi dengan carousel. Selanjutnya Kelas .wrapper digunakan sebagai pembungkus elemen carousel untuk menciptakan efek overlay pada tombol navigasi. Elemen ini menggunakan pseudo-elemen ::before dan ::after untuk membuat tampilan anak panah yang muncul di sisi kiri dan kanan carousel. Properti seperti position, width, height, background-image, dan z-index diberikan untuk mengatur tampilan dan posisi anak panah. Kelas .slide mengatur tampilan setiap slide dalam carousel. Elemen-elemen ini memiliki properti position: relative; untuk mengatur posisi relatif terhadap elemen carousel dan flex: 1 0 100%; untuk memastikan setiap slide mengisi lebar penuh carousel. scroll-snap-align: center; mengatur bahwa setiap slide akan selalu muncul di tengah saat bergeser. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="wrapper"> <div class="carousel" tabindex="0"> <div class="slide"> <a href="#item-4">Slide 4</a> <img id="item-1" src="<https://source.unsplash.com/random/800x500?1>" alt=""> <a href="#item-2">Slide 2</a> </div> <div class="slide"> <a href="#item-1">Slide 1</a> <img id="item-2" src="<https://source.unsplash.com/random/800x500?2>" alt=""> <a href="#item-3">Slide 3</a> </div> <div class="slide"> <a href="#item-2">Slide 2</a> <img id="item-3" src="<https://source.unsplash.com/random/800x500?3>" alt=""> <a href="#item-4">Slide 4</a> </div> <div class="slide"> <a href="#item-3">Slide 3</a> <img id="item-4" src="<https://source.unsplash.com/random/800x500?4>" alt=""> <a href="#item-1">Slide 1</a> </div> </div> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } * { box-sizing: border-box; } body { max-width: 50rem; margin: 0 auto; padding: 2rem; } img { max-width: 100%; } ul { margin: 0; padding: 0; list-style: none; } .carousel { position: relative; display: flex; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; z-index: 0; } .carousel:focus { outline: 0.25rem solid hsl(220, 60%, 60%); outline-offset: 0.25rem; } .wrapper { position: relative; } .wrapper::before, .wrapper::after { --size: 2rem; content: ''; display: block; position: absolute; width: var(--size); height: 100%; top: 0; left: 0.5rem; padding: 0.25rem; background-image: url('data:image/svg+xml;utf8,<svg xmlns="<http://www.w3.org/2000/svg>" viewBox="0 0 10 10" fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round"><path d="M7 2 L2 5 L7 8" /></svg>'); background-size: contain; background-repeat: no-repeat; background-position: center center; color: #fff; z-index: 10; pointer-events: none; } .wrapper::after { left: auto; right: 0.5rem; background-image: url('data:image/svg+xml;utf8,<svg xmlns="<http://www.w3.org/2000/svg>" viewBox="0 0 10 10" fill="none" stroke="white" stroke-linecap="round" stroke-linejoin="round"><path d="M2 2 L7 5 L2 8" /></svg>'); } .slide { position: relative; flex: 1 0 100%; scroll-snap-align: center; } .slide a { position: absolute; top: 0; width: 3rem; height: 100%; display: grid; place-items: center; font-size: 0; } .slide a:last-of-type { top: 0; right: 0; } .carousel img { display: block; width: 100%; height: 100%; object-fit: cover; } .carousel__nav ul { margin-top: -3rem; display: flex; justify-content: center; align-items: center; position: relative; } .carousel__nav a { display: grid; place-items: center; width: 2.75rem; height: 2.75rem; color: white; text-decoration: none; text-shadow: 1px 1px 0 hsla(220, 20%, 20%, 0.5); } 7. Efek gradient pada background Contoh efek gradient menggunakan CSS Pada contoh di atas digunakan untuk membuat efek latar belakang berupa gradasi warna yang bergerak secara animasi. Ketika kode ini diterapkan pada elemen <body> dalam HTML, latar belakang akan berubah-ubah dengan perpindahan warna yang mengikuti pola linear gradient. Pada bagian pertama, properti "background" digunakan untuk mengatur latar belakang dengan menggunakan linear gradient. Warna yang digunakan adalah akan bertransisi dari satu warna ke warna lainnya. Selanjutnya, properti "background-size" dengan nilai 400% 400% menentukan ukuran latar belakang. Dalam hal ini, latar belakang akan mengisi 400% lebar dan 400% tinggi dari elemen <body> yang sedang digunakan. Animasi pada latar belakang ini ditentukan oleh properti "animation" dengan nilai "gradient 15s ease infinite". Properti ini menandakan bahwa animasi dengan nama "gradient" akan berlangsung selama 15 detik dengan perpindahan warna yang lancar. Kata kunci "infinite" mengindikasikan bahwa animasi akan berputar secara terus-menerus. Selanjutnya, properti "height" dengan nilai 100vh menentukan tinggi elemen <body> sebesar 100% dari tinggi tampilan viewport. Ini memberikan efek latar belakang yang memenuhi seluruh layar. Setelahnya, deklarasi "@keyframes gradient" digunakan untuk mendefinisikan animasi tersebut. Pada bagian ini, terdapat tiga peraturan untuk animasi dalam bentuk persentase: 0%, 50%, dan 100%. Setiap peraturan menentukan posisi latar belakang gradasi pada waktu tertentu. Pada 0%, latar belakang berada pada posisi 0% 50% (posisi horizontal 0% dan posisi vertikal 50%). Pada 50%, latar belakang berpindah ke posisi 100% 50%. Pada 100%, latar belakang kembali ke posisi awal yaitu 0% 50%. Dengan demikian, gradasi warna pada latar belakang akan bergerak dari kiri ke kanan dan kembali lagi dalam interval waktu animasi yang ditentukan. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="d-flex flex-column justify-content-center w-100 h-100"> <div class="d-flex flex-column justify-content-center align-items-center"> <h1 class="fw-light text-white m-0">Efek gradient pada background</h1> </div> </div> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } body { background: linear-gradient(-45deg, #ee7752, #e73c7e, #23a6d5, #23d5ab); background-size: 400% 400%; animation: gradient 15s ease infinite; height: 100vh; } @keyframes gradient { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } 8. Efek Lightbox pada gambar Contoh efek lightbox menggunakan CSS Lightbox adalah suatu fitur atau elemen pada sebuah website yang menampilkan konten tambahan atau gambar dalam jendela yang terpisah atau teroverlay di atas halaman utama. Ketika pengguna mengklik atau mengaktifkan suatu elemen tertentu, seperti gambar thumbnail atau tautan, lightbox akan muncul dengan konten yang lebih besar atau informasi tambahan. Umumnya, lightbox menampilkan gambar dengan ukuran yang lebih besar sehingga pengguna dapat melihat rincian yang lebih baik. Konten tambahan, seperti deskripsi, tombol navigasi, atau video, juga dapat ditampilkan dalam lightbox. Lightbox biasanya mengaburkan atau menggelapkan latar belakang halaman web utama untuk menyoroti konten yang sedang ditampilkan dan memberikan fokus kepada pengguna. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <link href="https://fonts.googleapis.com/css?family=Raleway:200,100,400" rel="stylesheet" type="text/css" /> <p>Klik untuk menampilkan efek lightbox</p> <a href="#img1"> <img src="https://picsum.photos/seed/9/500/300"> </a> <a href="#" class="lightbox" id="img1"> <span style="background-image: url('https://picsum.photos/seed/9/900/450')"></span> </a> </div> </div> </div> </body> </html> .container{ height: 100vh; } html,body { font-family: sans-serif; padding: 0 1em; font-size: 19px; background: #222; color: #aaa; text-align:center; } p { margin: 1.5em 0; color: #aaa; } img { max-height: 50vh; } a { color: inherit; } a:hover { color: #bbb; } .italic { font-style: italic; } .small { font-size: 0.8em; } .lightbox { display: none; position: fixed; z-index: 999; top: 0; left: 0; right: 0; bottom: 0; padding: 1em; background: rgba(0, 0, 0, 0.8); } .lightbox:target { display: block; } .lightbox span { display: block; width: 100%; height: 100%; background-position: center; background-repeat: no-repeat; background-size: contain; } 9. Select Box dengan CSS Contoh select box menggunakan CSS Dalam contoh di atas, kita menggunakan elemen <div> sebagai wadah (container) untuk select box. Properti CSS position: relative; diterapkan pada wadah tersebut agar kita dapat menggunakan properti CSS position: absolute; pada elemen select nanti. Pada elemen <select>, kita memberikan beberapa properti CSS seperti lebar (width), padding, ukuran font (font-size), border, dan border radius untuk menciptakan tampilan yang diinginkan. Properti appearance: none; digunakan untuk menghilangkan styling bawaan dari browser, sehingga kita dapat mengkustomisasi tampilan select box sesuai keinginan. Properti :focus digunakan untuk mengubah tampilan saat select box dalam keadaan focus, seperti menghilangkan outline dan mengubah warna border. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="select-box"> <select> <option value="option1">Option 1</option> <option value="option2">Option 2</option> <option value="option3">Option 3</option> <option value="option4">Option 4</option> </select> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } .select-box { position: relative; display: inline-block; } .select-box select { width: 200px; padding: 10px; font-size: 16px; border: 2px solid #181818; border-radius: 4px; background-color: #fff; appearance: none; } .select-box select:focus { outline: none; border-color: #4a90e2; } 10. Membuat Accordion dengan CSS Contoh Accordion menggunakan CSS Accordion pada web adalah elemen interaktif yang digunakan untuk menyajikan konten dalam bentuk daftar yang dapat diperluas dan disusutkan. Umumnya, accordion terdiri dari beberapa item atau panel yang terdiri dari header dan konten terkait. Saat pengguna mengklik header, konten terkait akan muncul atau disembunyikan dengan animasi yang halus. Tujuan utama dari accordion adalah untuk mengatur dan menyajikan konten secara terstruktur, mengurangi tampilan yang berlebihan, dan memberikan pengalaman pengguna yang lebih interaktif. Accordion sangat berguna ketika kita memiliki banyak informasi yang ingin disajikan dalam ruang yang terbatas, sehingga pengguna dapat fokus pada konten yang relevan dengan kemampuan untuk memperluas konten tambahan jika diperlukan. Accordion sering digunakan dalam halaman FAQ (Frequently Asked Questions) atau dalam menu navigasi dengan submenu yang dapat diperluas. Dengan menggunakan teknik HTML, CSS, dan JavaScript, kita dapat membuat accordion yang responsif dan dapat diakses pada berbagai perangkat. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="style.css"> <link href="<https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;500;700&display=swap>" rel="stylesheet"> <link href="<https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css>" rel="stylesheet" integrity="sha384-9ndCyUaIbzAi2FUVXJi0CjmCapSmO7SnpJef0486qhLnuZ2cdeRhO02iuK6FUUVM" crossorigin="anonymous"> <title>Document</title> </head> <body> <div class="container d-flex justify-content-center align-items-center"> <div class="row"> <div class="col"> <div class="accordion"> <input id="toggle1" type="radio" class="accordion-toggle" name="toggle" /> <label for="toggle1">Pure CSS Accordion 1</label> <section> <p> Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. </p> <p> Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. </p> </section> </div> <div class="accordion"> <input id="toggle2" type="radio" class="accordion-toggle" name="toggle" /> <label for="toggle2">Pure CSS Accordion 2</label> <section> <p> Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. </p> <p> Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. </p> </section> </div> <div class="accordion"> <input id="toggle3" type="radio" class="accordion-toggle" name="toggle" /> <label for="toggle3">Pure CSS Accordion 3</label> <section> <p> Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. </p> <p> Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. </p> </section> </div> <div class="accordion"> <input id="toggle4" type="radio" class="accordion-toggle" name="toggle" /> <label for="toggle4">Pure CSS Accordion 4</label> <section> <p> Bacon ipsum dolor sit amet beef venison beef ribs kielbasa. Sausage pig leberkas, t-bone sirloin shoulder bresaola. Frankfurter rump porchetta ham. Pork belly prosciutto brisket meatloaf short ribs. </p> <p> Brisket meatball turkey short loin boudin leberkas meatloaf chuck andouille pork loin pastrami spare ribs pancetta rump. Frankfurter corned beef beef tenderloin short loin meatloaf swine ground round venison. </p> </section> </div> </div> </div> </div> </body> </html> .container{ height: 100vh; } @import url("<https://fonts.googleapis.com/css?family=Open+Sans:400,700>"); @import url("<https://netdna.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.css>"); * { margin: 0; padding: 0; } *, *:before, *:after { box-sizing: border-box; } html, body { height: 100%; font: 16px/1 'Open Sans', sans-serif; color: #555; background: #e5e5e5; } body { padding: 50px; } .accordion{ transform: translateZ(0); box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1); background: #fff; } .accordion > .accordion-toggle{ position: absolute; opacity: 0; display: none; } .accordion > label{ position: relative; display: block; height: 50px; line-height: 50px; padding: 0 20px; font-size: 14px; font-weight: 700; border-top: 1px solid #ddd; background: #fff; cursor: pointer; } .accordion > label:after { content: '\\f078'; position: absolute; top: 0px; right: 20px; font-family: fontawesome; transform: rotate(90deg); transition: .3s transform; } .accordion > section{ height: 0; transition: .3s all; overflow: hidden; } .accordion > .accordion-toggle:checked ~ label:after{ transform: rotate(0deg); } .accordion > .accordion-toggle:checked ~ section{ height: 200px; } .accordion > section p { margin: 15px 0; padding: 0 20px; font-size: 12px; line-height: 1.5; } Kesimpulan Dalam artikel ini, kita telah menjelajahi 10 contoh CSS menarik yang dapat digunakan untuk mendesain website dengan tampilan yang menarik. Dari efek hover hingga animasi kompleks, CSS memiliki beragam fitur yang dapat memperkaya pengalaman pengguna dan meningkatkan daya tarik visual suatu halaman web. Tentu beberapa contoh tersebut bisa kamu kembangkan lagi untuk website kamu sendiri. Agar lebih menguasai Styling menggunakan CSS kamu dapat mengikuti Kelas Dasar CSS atau kamu bisa mencoba membuat sebuah projek dengan mengikuti kelas HTML CSS Bootstrap 5: Finance Landing Page Website yang bisa kamu ikutin di website Build With Angga.

Kelas Membuat Navigation Bar Menggunakan Tailwind di BuildWithAngga

Membuat Navigation Bar Menggunakan Tailwind

Tailwind adalah sebuah framework CSS yang dirancang untuk mempercepat proses pengembangan tampilan dan antarmuka pengguna dalam pembuatan aplikasi web. Dibandingkan dengan kerangka kerja CSS tradisional seperti Bootstrap, Tailwind memiliki pendekatan yang berbeda dengan memberikan sejumlah besar kelas CSS utilitas yang dapat langsung diterapkan pada elemen HTML. Membuat Navigation Bar Menggunakan Tailwind Halaman Tailwindcss Salah satu kelebihan Tailwind adalah fleksibilitasnya. Dalam Tailwind, kamu dapat dengan mudah menyesuaikan setiap aspek tampilan dengan mengubah kelas utilitas pada elemen yang sesuai. Hal ini memberikan kebebasan yang lebih besar dalam merancang antarmuka yang unik dan sesuai dengan kebutuhan proyek. Nah, pada kesempatan kali ini kita akan mencoba untuk membuat sebuah navbar menggunakan framework CSS Tailwind. Navigation bar, juga dikenal sebagai navbar, adalah elemen antarmuka pengguna yang digunakan untuk menyediakan navigasi dan aksesibilitas ke berbagai bagian atau halaman dalam sebuah situs web atau aplikasi. Biasanya, navbar ditempatkan di bagian atas layar dan berisi daftar tautan atau ikon yang memungkinkan pengguna berpindah antara halaman atau menu yang relevan. Navbar biasanya terdiri dari beberapa komponen, seperti logo atau judul situs yang mengarahkan pengguna ke halaman utama, tautan menu yang mengarahkan pengguna ke halaman-halaman penting, dan elemen tambahan seperti tombol pencarian atau tautan ke halaman profil pengguna. Desain dan penempatan elemen dalam navbar dapat bervariasi tergantung pada gaya visual dan kebutuhan proyek. Menampilkan Logo pada Navbar Tampilan logo pada navbar Sebagai langkah awal kita perlu menampilkan logo yang ada pada navbar yang ingin kita buat. Kita perlu membuat sebuah wrapper menggunakan tag nav yang akan menjadi parent wrapper pada bagian navbar ini. Setelah itu kita perlu membuat tag <div> yang di dalamnya berisi tag <img> yang kita gunakan untuk menampilkan gambar logo pada navbar, jangan lupa untuk mengatur tinggi dan lebar dari gambar tersebut sesuai desain yang ada. Pada tag <nav> kita mengubah display dari tag <nav> menjadi flex agar kita bisa menerapkan justify-center yang berguna untuk membuat semua elemen yang ada pada tag <nav> berada di tengah. Kemudian kita juga perlu memberikan tinggi sebesar 100px. Setelah itu pada tag <div> kita memberikan lebar sebesar 11 dari 12 total ukuran layar kemudian menggunakan display flex agar bisa menerapkan items-center agar posisi gambar tepat berada di tengah. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <nav class=" flex justify-center h-[100px]"> <div class="w-[1240px] flex items-center"> <img src="../logo.png" alt="" width="186" height="42"> </div> </nav> </body> </html> Membuat Bagian Menu pada Navbar Tampilan menu pada navbar Kemudian kita perlu membuat sebuah menu yang ada pada navbar untuk membuatnya kita tinggal membuat sebuah container dengan tag <div> baru yang berada pada container yang sama dengan tag <img> kemudian kita perlu tentukan ukuran lebar dari container <img> dengan begian menu dengan ukuran sebesar 577px dan memberikan flex agar bisa memberi jarak antara <img> dengan menu navbar menggunakan justify-between. Pada container menu juga perlu diberikan lebar sebesar 340px dan memberikan flex agar bisa diberikan jarak antar menu menggunakan justify-between. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <nav class=" flex justify-center h-[100px] "> <div class="w-[1240px] flex items-center"> <div class="flex items-center w-[577px] justify-between"> <img src="../logo.png" alt="" width="186" height="42"> <div class="flex w-[340px] justify-between"> <p>Program</p> <p>Mentor</p> <p>Pricing</p> <p>Business</p> </div> </div> </div> </nav> </body> </html> Membuat Button pada Navbar Tampilan button pada navbar Selanjutnya kita akan mencoba untuk membuat sebuah button yang ada pada bagian navbar. Untuk membuat button pada navbar tersebut kita akan menempatkannya diluar container dari logo dan menu yang telah kita buat sebelumnya. Karena itu kita membuat container berukuran 279px yang berisikan dua tag <button> yang memiliki padding atas-bawah berukuran 10px, padding kiri-kanan berukuran 36px, dan radius sebesar 47px. Warna yang diberikan pada setiap button juga berbeda pada button Sign In kita perlu memberikan warna background purple-200 dengan teks berwarna purple-700. Sedangkan untuk button Sign Up kita perlu memberikan backgorund purple-600 dan teks berwarna putih. <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="output.css"> <title>Document</title> </head> <body> <nav class=" flex justify-center h-[100px] "> <div class="w-[1240px] flex items-center justify-between"> <div class="flex items-center w-[577px] justify-between"> <img src="../logo.png" alt="" width="186" height="42"> <div class="flex w-[340px] justify-between"> <p class="text-purple-700">Program</p> <p>Mentor</p> <p>Pricing</p> <p>Business</p> </div> </div> <div class="w-[279px] flex justify-between"> <button class="bg-purple-200 px-[36px] py-[10px] rounded-[47px]"> <p class="text-purple-700">Sign in</p> </button> <button class="bg-purple-600 px-[36px] py-[10px] rounded-[47px]"> <p class="text-white">Sign Up</p> </button> </div> </div> </nav> </body> </html> Kesimpulan Dalam artikel ini, kita telah menjelajahi cara membuat sebuah navbar menggunakan Tailwind CSS. Tailwind CSS adalah sebuah framework yang kuat dan fleksibel yang memungkinkan pengembang web untuk dengan mudah membuat dan menyesuaikan komponen seperti navbar. Kami telah membahas langkah-langkah dasar yang meliputi pembuatan struktur HTML, penggunaan kelas-kelas Tailwind, dan beberapa fitur khusus yang tersedia. Agar dapat lebih mendalami Tailwind kamu dapat mengikuti beberapa kelas dari builwithangga.com seperti kelas CSS Tailwind Web Design dan React JS dan Tailwind CSS Website Development.

Kelas 5 Fitur Baru yang Layak Kamu Coba dari Elementor di BuildWithAngga

5 Fitur Baru yang Layak Kamu Coba dari Elementor

Mungkin sebagian dari kamu sudah familiar dengan elementor dan bahkan sudah pernah menggunakannya. Elementor merupakan salah satu page builder untuk WordPress yang populer serta memiliki komunitas yang besar dan aktif saat ini. Banyak developer memilih elementor sebagai tools utama untuk membangun websitenya. 5 Fitur baru yang layak kamu coba dari Elementor Elementor adalah sebuah plugin WordPress yang digunakan untuk membangun halaman website. Elementor ini sangat populer di kalangan pengguna WordPress karena memungkinkan pengguna yang tidak memiliki keahlian dalam pemrograman atau desain web untuk membuat tampilan halaman web yang menarik dan responsif. Dengan Elementor, kita dapat membuat halaman web menggunakan sistem drag-and-drop. Elementor memiliki user-interface yang mudah digunakan dan elemen desain yang beragam untuk pengembangan halaman websitemu, seperti judul, teks, gambar, tombol, formulir, slider, galeri, dan banyak lagi. Halaman website Elementor Elementor juga memiliki banyak fitur tambahan, seperti tema pra-desain yang dapat digunakan sebagai titik awal untuk membangun halaman web, dukungan untuk widget WordPress standar, integrasi dengan berbagai plugin populer, dan kompatibilitas yang baik dengan tema WordPress lainnya. Salah satu keunggulan utama Elementor adalah kebebasan dan fleksibilitas yang ditawarkannya. Tidak hanya memungkinkan untuk mengubah tampilan dan tata letak halaman web dengan mudah, tetapi juga menyediakan berbagai fitur dan opsi yang dapat disesuaikan. Pengguna dapat mengatur warna, ukuran, jarak, dan banyak lagi, sehingga dapat diubah sesuai dengan preferensi dan kebutuhan desain kita. 5 rekomendasi fitur baru dari Elementor. 1. Mega Menu Fitur ini memungkinkan kita untuk membuat menu navigasi yang lebih kompleks seperti pada website BuildWithAngga. Dimana navigasi bagian dropdown dapat memuat informasi yang lebih banyak, desain yang intutif serta eye-catching. Dengan Mega Menu memungkinkan kita untuk membuat tampilan submenu yang lebih terperinci. Contoh Mega Menu pada Elementor Kita juga dapat menambahkan berbagai jenis konten ke dalam submenu, seperti teks, gambar, video, widget, atau bahkan tata letak kustom yang dibuat dengan menggunakan fitur drag-and-drop dari Elementor. Ini berguna terutama untuk situs web yang memiliki banyak halaman atau kategori yang kompleks sehingga lebih terorganisir. 2. Container Flexbox Container Flex pada Elementor adalah opsi tata letak yang memungkinkan kita mengatur konten dalam container dengan menggunakan model tata letak flexbox. Flexbox adalah teknik CSS yang memungkinkan pengaturan tata letak yang fleksibel dan responsif untuk elemen-elemen di dalam suatu wadah. Seperti flex pada CSS, Container Flexbox dapat membuat layout yang lebih fleksibel dan memudahkan pengaturan responsiveness. Contoh penggunaan Container Flex dari Elementor Adapun beberapa fitur dari Container Flex yaitu: Flex Direction: Memungkinkan untuk memilih arah perataan elemen-elemen di dalam container, seperti horizontal (row) atau vertikal (column).Justify Content: Mengatur elemen di dalam container secara horizontal (row), seperti di tengah (center), di sebelah kiri (flex-start), di sebelah kanan (flex-end), atau merata (space-between, space-around).Align Items: Mengatur elemen di dalam container secara vertikal (column), seperti di tengah (center), di atas (flex-start), di bawah (flex-end), atau merata (stretch).Flex Wrap: Menentukan elemen di dalam container akan terbungkus secara otomatis ke baris atau kolom baru ketika ruang tidak cukup.Order: Mengubah urutan tampilan elemen-elemen di dalam container dengan memberikan nilai urutan (order) yang berbeda-beda. 3. Container Grid Container Grid pada Elementor adalah opsi tata letak yang memungkinkan untuk mengatur konten dalam container dengan menggunakan model grid. Grid adalah teknik membagi wadah menjadi kolom-kolom dan baris-baris, sehingga memungkinkan pengaturan tampilan yang terstruktur dan responsif. Contoh penggunan Container Grid dari Elementor Container Grid memungkinkan implementasi desain Figma yang lebih akurat dan sesuai di Elementor. Dengan fitur ini kita dapat membuat tata letak grid dengan jumlah kolom yang diinginkan, mengatur lebar kolom, dan mengatur perataan konten secara presisi. Dengan fitur ini pengguna memiliki kontrol penuh atas tata letak dan ukuran setiap elemen dalam container yang sesuai dengan kebutuhan desain situs web, serta mengatur tampilan yang responsif untuk berbagai perangkat dan ukuran layar. 4. Custom Font Dengan fitur ini kamu dapat menggunakan font premium yang tidak terdapat di library Elementor. Selain itu, Custom Font memungkinkan untuk mengunggah dan menambahkan font kustom yang sesuai dengan desain yang ingin diterapkan pada elemen-elemen konten di website kita. Contoh penggunan Custom Font dari Elementor Untuk menggunakan Custom Font, kita perlu mengunduh jenis huruf (font) yang ingin digunakan dalam format file yang sesuai (seperti .ttf atau .otf). Setelah mengunggahnya ke Elementor, pengguna dapat mengatur font ini pada elemen teks menggunakan panel pengaturan Elementor yang relevan. 5. Additional Custom Breakpoint Elementor telah menyediakan beberapa breakpoint bawaan yang dapat dikustomisasi, yang memungkinkan pengguna mengontrol tata letak dan tampilan halaman web pada ukuran layar yang berbeda. Fitur ini disebut dengan Additional Custom Breakpoint. Pengguna dapat menyesuaikan breakpoint ini untuk desktop, tablet, dan ponsel pintar untuk memastikan konten terlihat dan berfungsi dengan baik di berbagai perangkat. Kita cukup mengakses pengaturan responsif di panel elemen atau widget. Di sana, kita akan menemukan opsi untuk mengatur lebar piksel untuk setiap breakpoint yang ada. Contoh penggunan Additional Custom Breakpoint dari Elementor Kesimpulan Nah, itulah beberapa fitur menarik yang dapat kamu eksplorasi dalam Elementor untuk mengembangkan website kamu. Artikel ini diharapkan dapat memberikan bantuan dan pengetahuan tambahan seputar penggunaan Elementor. Bagi kamu yang ingin memperdalam pengetahuan WordPress dan Elementor, kamu dapat mengikuti kelas-kelas yang disediakan oleh BuildWithAngga. Salah satu kelas yang direkomendasikan adalah WordPress dan Elementor Mastery: Bikin Website Professional dan Menarik Untuk Portfolio.

Kelas 5 Cara Mengamankan Website yang Dibuat Menggunakan WordPress Elementor di BuildWithAngga

5 Cara Mengamankan Website yang Dibuat Menggunakan WordPress Elementor

Membuat dan mengelola website menggunakan WordPress Elementor adalah pilihan yang populer di kalangan pengembang dan pemilik bisnis online karena sangat mengasyikkan. Kita bisa mengatur semuanya, mulai dari pemilihan tema, font, hingga menulis postingan di blog kita. Di samping itu, ada hal yang jarang diperhatikan, yaitu keamanan. WordPress merupakan salah satu content management system (CMS) yang paling populer di dunia. Namun, siapa sangka ternyata berdasarkan data dari securi, sebuah perusahaan spesialist dalam bidang website security, menyatakan bahwa WordPress jauh lebih sering diserang dibanding CMS lain. 5 Cara Mengamankan Website yang Dibuat Menggunakan WordPress Elementor Sebelum mengetahui cara mengamankan website yang dibuat menggunakan WordPress Elementor, sebaiknya kamu harus mengetahui mengapa WordPress Elementor mudah untuk diserang. Yuk simak penjelasan di bawah ini. 3 Penyebab Website yang Dibuat Menggunakan WordPress Elementor Mudah Diserang 1. Popularitas dan penggunaan yang luas WordPress adalah platform CMS yang banyak digunakan oleh orang di seluruh dunia karena ramah bagi pemula dan mudah untuk dipelajari. Dengan popularitasnya, WordPress menjadi sasaran menarik bagi penyerang. Elementor sebagai plugin visual yang populer juga menarik perhatian penyerang yang mencari celah keamanan. Layanan keamanan Wordfence melaporkan adanya celah kerentanan di Elementor pada tanggal 29 Maret 2022 lalu. Elementor merupakan sebuah plugin WordPress untuk mendesain tampilan website dengan cara drag and drop. WordPress termasuk CMS yang populer 2. Tidak Memperbarui WordPress, Tema, dan Plugin Tidak memperbarui WordPress, tema, dan plugin secara teratur adalah salah satu penyebab umum serangan pada website. Pembaruan perangkat lunak seringkali berisi perbaikan keamanan yang penting untuk melindungi website dari celah yang diketahui. Setelah pembaruan keamanan dirilis, informasi tentang kerentanan tersebut dapat tersebar di komunitas penyerang. Penyerang yang memiliki pengetahuan tentang kerentanan ini dapat secara aktif mencari website yang menggunakan versi lama dan memanfaatkannya. Dengan memperbarui WordPress, tema, dan plugin, kamu dapat mengurangi risiko terkena serangan karena kerentanan yang diketahui tersebut. 3. Tidak Menggunakan Plugin Keamanan Tambahan WordPress memiliki beberapa fitur keamanan bawaan, penggunaan plugin keamanan tambahan dapat memberikan lapisan perlindungan ekstra. Jika kamu tidak menggunakan plugin keamanan yang andal, websitemu mungkin lebih rentan terhadap serangan. Kamu bisa mengunduh beberapa plugin keamanan tambahan, seperti Wordfence Security, Sucuri Security, All In One WP Security & Firewall, dan plugin keamanan tambahan lainnya. Plugin WordPress tambahan untuk kemanan website Setelah kamu mengetahui beberapa penyebab website yang dibuat menggunakan WordPress Elementor gampang diserang, sebaiknya kamu harus mengetahui cara mengatasinya. 5 Cara Mengamankan Website yang Dibuat Menggunakan WordPress Elementor 1. Tidak Menggunakan Plugin Elementor Pro Bajakan Plugin bajakan tidak mendapatkan pembaruan keamanan atau dukungan resmi dari pengembangnya. Artinya, kerentanan keamanan yang ditemukan dalam plugin tidak akan diperbaiki atau diperbarui secara tepat waktu. Dalam beberapa kasus, plugin bajakan dapat mengandung kode berbahaya atau skrip yang dapat merusak website Anda atau membahayakan keamanannya. Sebagai gantinya, kamu disarankan membeli versi asli dan berlisensi dari plugin Elementor Pro. Dengan membeli lisensi resmi, kamu mendapatkan akses ke dukungan teknis yang kompeten, pembaruan perangkat lunak yang teratur, dan keamanan yang ditingkatkan. Fitur WordPress Elementor 2. Mengubah URL Login Dashboard Menjadi Custom Mengubah URL login dapat memberikan keamanan tambahakan karena banyak serangan otomatis di targetkan pada URL login default. Serangan brute force adalah upaya untuk menebak kata sandi dengan mencoba berbagai kombinasi secara otomatis. Dengan mengubah URL login menjadi sesuatu yang kustom, dapat mengurangi risiko serangan brute force karena penyerang tidak akan tahu URL login yang sebenarnya. Contohnya dari yourwebsite.com/wp-admin menjadi yourwebsite.com/mygate URL custom menggunakan WordPress Elementor 3. Mengaktifkan Two Factor Authentication TFA memberikan lapisan keamanan tambahan yang melibatkan verifikasi identitas menggunakan faktor kedua setelah kata sandi. Dengan mengaktifkan TFA, selain memasukkan kata sandi, pengguna juga harus memberikan faktor otentikasi kedua, seperti kode yang dihasilkan oleh aplikasi autentikasi atau SMS ke normor hp yang terdaftar. Mengaktifkan TFA pada website WordPress Elementor relatif mudah, dengan banyak plugin keamanan yang tersedia yang menyediakan fitur TFA. Dalam banyak kasus, plugin keamanan seperti Wordfence, iThemes Security, atau Google Authenticator menyediakan opsi TFA yang dapat diaktifkan dengan beberapa langkah pengaturan. Two Factor Authentication pada WordPress Elementor 4. Menggunakan Batasan Limit Login Menggunakan batasan limit login digunakan untuk membatasi jumlah upaya login yang gagal dari alamat IP tertentu dalam periode waktu tertentu. Ini menghambat penyerang dalam melakukan serangan brute force, karena mereka akan dibatasi dalam jumlah upaya yang dapat mereka coba. Batasan limit login sangat penting untuk melindungi akun administrator. Akun administrator memiliki akses penuh ke website, sehingga menjadi target utama serangan. Dengan mengaktifkan batasan limit login, dapat membatasi kemungkinan serangan pada akun administrator dan menjaga keamanan website secara keseluruhan. Limit login untuk mengamankan web di WordPress 5. Membuat Password Login yang Rumit Penyerang sering kali menggunakan daftar kata sandi yang umum dalam serangan mereka. Kamu bisa membuat password yang rumit dan hindari kata-kata umum, tanggal lahir, dan informasi pribadi yang mudah ditebak. Membuat password login yang rumit dapat mengurangi risiko serangan "Credential Stuffing". Serangan credential stuffing terjadi ketika penyerang menggunakan kombinasi email dan kata sandi yang dicuri dari pelanggaran data di situs web lain untuk mencoba mengakses akunmu. Dengan menggunakan password yang rumit dan unik, dapat mengurangi kemungkinan bahwa kombinasi tersebut akan berhasil digunakan dalam serangan tersebut. Password yang rumit untuk mengamankan website di WordPress Kesimpulan Nah itu dia beberapa cara yang bisa kamu lakukan untuk mengamankan website yang kamu buat menggunakan WordPress Elementor. Kamu wajib memperhatikan keamanan websitemu dari para peretas. Untuk kamu yang ingin mendalami WordPress elementor kamu bisa coba belajar pada kelas yang sudah disediakan oleh BuildWithAngga, seperti kelas WordPress dan Elementor Mastery: Bikin Website Professional dan Menarik Untuk Portfolio.