Hi Sobat… ketika kita browsing dan membuka berbagai website, sering kita temui berbagai social media button dengan berbagai efek menarik,.
Efek tersebut biasanya muncul ketika kita arahkan mouse diatasnya (:hover)
, nah bagi yang penasaran bagaimana cara membuatnya, pada kesempatan ini kita akan membahasnya lebih dalam.
Kita akan buat beberapa button, tepatnya 15 button dengan efek seperti ini:
Jika sobat ingin langsung memakainya bisa langsung diklik tombol download, tinggal diedit file css-nya sesuai keperluan. Jika ingin melihat demo secara keseluruhan, silakan klik tombol demo.Pembahasan dibagi menjadi dua bagian, untuk bagian II dapat diikuti pada link: Membuat 15 Efek Social Media Button Dengan CSS Part II.
I. Persiapan
Sebelum kita membuat efek social media button, terlebih dahulu kita lakukan beberapa persiapan
Dukungan Browser
Efek yang dibahas pada tutorial ini dapat berjalan dengan baik di browser modern, karena browser tersebut telah mendukung css property transition.
Property ini merupakan komponen utama untuk membuat perpindahan element menjadi halus.
Khusus untuk Internet Explorer property ini hanya dapat berjalan dengan baik di versi 10 keatas, karena untuk versi 9 kebawah tidak mendukung property transition dan property sejenis yang berkaitan dengan animasi.
Icon Font
Sebelum masuk ke pembahasan, perlu untuk dibahas jenis icon yang digunakan.
Pada tutorial ini kita menggunakan icon font, saya mengambilnya dari iconmoon, salah satu penyedia layanan icon font yang bagus dan populer.
Icon tersebut bisa langsung digunakan dengan menambahkan class dengan awalan icon-, misal icon-facebook, namun agar lebih fleksibel, kita akan mendefinisikannya sendiri.
Untuk definisi awal, kita buat terlebih dahulu file css yaitu effect_main_single.css
, file tersebut akan selalu kita gunakan di setiap pembahasan, selanjutnya isikan css rule pada file tersebut:
@font-face {
font-family: 'icomoon';
src:url('fonts/icomoon/icomoon.eot?w6aef1');
src:url('fonts/icomoon/icomoon.eot?w6aef1#iefix') format('embedded-opentype'),
url('fonts/icomoon/icomoon.ttf?w6aef1') format('truetype'),
url('fonts/icomoon/icomoon.woff?w6aef1') format('woff'),
url('fonts/icomoon/icomoon.svg?w6aef1#icomoon') format('svg');
font-weight: normal;
font-style: normal;
}
a {
font-family: icomoon;
font-size: 40px;
line-height: 65px;
speak: none;
color: #5D5D5D;
text-decoration: none;
text-align: center;
display: inline-block;
position: relative;
width: 64px;
height: 64px;
overflow: hidden;
transition: all .3s;
}
a:before,
a:after {
transition: all .3s;
}
Pada definisi awal ini, element <a>
yang merupakan element utama kita buat dimensinya sebesar 64 x 64px, dengan font family icomoon, akan membuat element <a>
dan childrennya hanya dapat diisi icon.
Maksudnya bisa diisikan teks lain tapi jenis font-nya tetap icomoon sehingga tidak pas, karena memang pada tutorial ini kita hanya akan memakai icon.
Struktur Folder
Untuk struktur foldernya, kita buat folder misal Sample CSS Effect untuk menyimpan file html, kemudian didalamnya kita buat folder css untuk menyimpan file effect_main_single.css
dan folder icon_fonts/icomoon
untuk menyimpan file fonts.
Struktur foldernya seperti tampak pada gambar berikut:
untuk setiap pembahasan, sobat bisa langsung klik Demo Single untuk melihat langsung source code yang digunakan.
II. Membuat Social Media Button Dengan Efek Menarik
1. Efek 1: Membuat efek slide up pada icon dengan cssTop
Untuk membuat efek ini, element yang kita perlukan adalah:
- Element
<a>
sebagai element utama dengan background warna abu-abu terang. - Pseudo element
:before
dengan icon berwarna abu-abu, tanpa background dan - Pseudo element
:after
dengan icon berwarna putih, tanpa background.
Transisi element seperti tampak pada contoh dibawah (arahkan cursor diatas icon, atau jika menggunakan layar sentuh, touch dan tahan):
contoh untuk beberapa set icon:
Pada contoh diatas, kotak berwarna biru adalah element :before
sedangkan yang berwarna hijau adalah element :after
Kode HTML yang kita gunakan adalah:
<a class="fb" href="#"></a>
Sedangkan untuk css nya:
.fb{
background-color: #EAEAEA;
}
.fb:before,
.fb:after {
content: "f09a";
position: absolute;
width: 100%;
height: 100%;
left: 0;
}
.fb:before {
top: 0;
}
.fb:after {
top: 100%;
color: #FFFFFF;
}
.fb:hover {
background-color: #3b5998;
}
.fb:hover:after {
top: 0;
}
.fb:hover:before {
top: -100%;
}
Demo Single
Penjelasan:
- Baris 15 akan memposisikan element
:after
di sebelah bawah element<a>
, - Ketika terjadi event
:hover
, baris 24 akan menggeser element:before
keatas dan baris 27 akan menggeser element:after
keatas.
2. Efek 2: Membuat efek slide up-down pada icon dengan css Top
Efek ini sama seperti efek nomor 1, baik penggunaan element maupun posisi element, bedanya element :before
akan bergeser ke bawah, tidak keatas. Transisi element seperti tampak pada icon berikut:
contoh untuk beberapa set icon:
Keterangan: kotak dengan border berwarna biru adalah element :before
sedangkan yang berwarna hijau adalah element :after
Kode HTML yang kita perlukan:
<a class="dribbble" href="#"></a>
Sedangkan kode css nya sama seperti efek nomor 1 hanya pada line 27 diubah dari top: -100% menjadi top: 100%. Demo Single
3. Efek 3: Membuat efek slide to right pada icon dengan cssTop
Efek ini juga sama seperti efek sebelumnya, bedanya jika pada efek sebelumnya transisi terjadi pada warna background element <a>
, pada efek ini element yang digeser memiliki background sendiri.
Element yang kita gunakan juga sama yaitu:
- Element
<a>
yang berperan sebagai container, dengan background abu-abu terang. - Pseudo element
:before
dengan icon berwarna abu-abu, tanpa background, dan - Pseudo element
:after
dengan icon berwarna putih dengan background berwarna hijau.
Transisi element tampak sebagai berikut:
contoh untuk beberapa set icon:
pada icon diatas, element dengan border berwarna biru merupakan element :before
, sedangkan yang berwarna hijau merupakan element :after
Kode HTML yang kita perlukan:
<a class="su" href="#"></a>
Sedangkan untuk css nya:
.su {
background-color: #EAEAEA;
}
.su:before,
.su:after {
position: absolute;
content: "f1a4";
width: 100%;
height: 100%;
}
.su:before {
top: 0;
left: 0;
}
.su:after {
top: 0;
left: -100%;
background-color:#5FBB4C;
color: #FFFFFF;
}
.su:hover:before{
left:100%;
}
.su:hover:after{
left:0;
}
Demo Single
Penjelasan:
- Baris 17 akan membuat element
:after
berada di sebelah kiri. - Saat terjadi event
:hover
, baris 22 dan 25 masing-masing akan menggeser element:before
dan:after
ke kanan.
4. Efek 4: Membuat efek kubus (cube) pada icon dengan cssTop
Efek ini akan membuat element berputar seperti kubus, untuk transisi elemennya terdapat dua macam bentuk, yaitu:
a. Transisi menyerupai kubus
Pada efek ini, transisi seolah olah menyerupai kubus, namun bukan benar-benar kubus karena sedikit terjadi overlap antar element.
Dengan nilai transisi yang kecil, overlap tersebut tidak kelihatan, yang tampak adalah pergeseran yang halus, ditambah dengan efek fade in-out akan memperindah efek yang dihasilkan.
Untuk membuat efek ini, element yang kita perlukan adalah:
- Element
<a>
yang berperan sebagai container dan perspective 3D untuk element childrennya (:before
dan:after
), namun secara visual tidak terlihat. - Pseudo element
:before
dengan icon dan dengan background warna tertentu, dan - Pseudo element
:after
dengan icon dan background warna tertentu.
Transisi element seperti tampak pada contoh berikut:
contoh untuk beberapa set icon:
Pada contoh diatas, element dengan border berwarna merah adalah element <a>
, yang berwarna biru adalah element :after
, dan yang berwarna hijau adalah element :after
.
Kode HTML yang diperlukan:
<a class="gplus" href="#"></a>
sedangkan css rule nya:
.gplus {
background:none
overflow: visible;
perspective: 300px;
}
.gplus:before,
.gplus:after {
position: absolute;
top: 0;
left: 0;
content: "f0d5";
width: 100%;
height: 100%;
}
.gplus:before {
z-index: 1;
background-color: #EAEAEA;
}
.gplus:after {
background-color: #d34836;
color: #FFFFFF;
opacity: 0;
transform: translateY(33px) rotateX(-90deg);
}
.gplus:hover:before{
opacity: 0;
transform: translateY(-33px) rotateX(90deg);
}
.gplus:hover:after{
opacity: 1;
transform: rotateX(0);
}
Demo Single
Penjelasan:
- Perspective pada baris nomor 3 digunakan untuk sudut pandang efek 3D untuk element
:before
dan:after
, - Baris 23 akan memposisikan element
:after
dibawah dengan rotasi sebesar 90 ° berlawanan arah jarum jam. - Ketika terjadi event
:hover
, baris 27 membuat element:before
bergerak ke atas dan berputar 90 ° searah jarum jam dan baris 31 akan membuat element:after
berputar kedepan.
b. Transisi seperti kubus (true cube)
Berbeda dengan versi sebelumnya, pada versi ini, element akan bergerak berurutan, sehingga akan benar-benar seperti kubus yang berputar.
Terdapat beberapa teknik untuk membuat efek ini, yang perlu diperhatikan adalah apakah terjadi “zoom” pada element? baik sebelum maupun sesudah diputar.
Jika ya, maka sebaiknya cari alternatif cara lain, karena hal tersebut akan membuat teks menjadi pecah, untuk mengatasinya salah satu solusinya adalah kita buat sisi-sisi kubus berdiri sendiri dan masing-masing memiliki transisi sendiri-sendiri.
Element yang diperlukan dan pergerakan antar element sama dengan efek sebelumnya. Transisi element seperti tampak pada contoh berikut:
contoh untuk beberapa set icon:
pada contoh diatas, element dengan border berwarna biru adalah element :before
, sedangkan yang berwarna hijau (ketika :hover
) adalah element :after
.
Kode HTML yang kita perlukan:
<a class="gplus-cube" href="#"></a>
sedangkan css yang kita perlukan:
.gplus-cube {
perspective: 700px;
-webkit-transform-style: preserve-3d;
overflow: visible !important;
width: 64px;
height: 64px;
}
.gplus-cube:before,
.gplus-cube:after {
content: "f0d5";
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
transform-origin: 50% 50% -32px;
transition: all 0.3s ease-out;
}
.gplus-cube:before {
z-index: 1;
background-color: #d9d9d9;
}
.gplus-cube:after {
background-color: #d34836;
color: #FFFFFF;
transform: rotateX(-90deg);
}
/* EFFECT */
.gplus-cube:hover:after {
z-index: 2;
transform: rotateX(0);
}
.gplus-cube:hover:before {
transform: rotateX(90deg);
}
Demo Single
Penjelasan:
- Perspective pada baris 2 akan menjadi sudut pandang dari efek 3D, semakin kecil nilainyya maka akan semakin tampak efek 3D nya.
- Baris 26 akan membuat posisi awal element
:after
berputar 90 ° dan baris 16 akan membuatnya berada di posisi bawah. - Baris 20 akan membuat element before berada di depan element after
- Ketika terjadi event
:hover
, baris 31 akan memutar element:before
keatas, baris 34 membuat element:after
berputar kedepan, dan baris 30 akan membuat element:after
berada di depan element:before
.
5. Efek 5: Membuat efek flip pada icon dengan cssTop
Efek ini akan membuat element bergerak dengan sumbu tertentu (flip) ke belakang. Untuk membuat efek ini diperlukan element:
- Element
<a>
yang berperan sebagai container (secara visual tidak kelihatan) dan sebagai perspective 3d untuk element:before
dan:after
. - Pseudo element
:before
dengan icon berwarna abu-abu dan background berwarna abu-abu terang - Pseudo element
:after
dengan icon berwarna putih dan background berwarna coklat.
Transisi element tampak seperti contoh berikut:
contoh untuk beberapa set icon:
Pada contoh diatas, element dengan border berwarna merah adalah element <a>
, yang berwarna biru adalah element :before
, dan yang berwarna hijau (ketika :hover
) adalah element :after
.
Kode HTML yang diperlukan:
<a class="instagram" href="#"></a>
sedangkan kode css yang diperlukan:
.effect-raw .instagram {
background: none;
overflow: visible;
perspective: 300px;
}
.effect-raw .instagram:before,
.effect-raw .instagram:after {
content: "f16d";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.effect-raw .instagram:before {
background-color: #EAEAEA;
-webkit-transform-origin-y: 100%;
}
.effect-raw .instagram:after {
background-color:#DCAD65;
color: #FFFFFF;
opacity: 0;
z-index:1;
transform: rotateX(-90deg);
-webkit-transform-origin-y: 100%;
}
.effect-raw .instagram:hover:before{
transform: rotateX(90deg);
}
.effect-raw .instagram:hover:after{
transform: rotateX(0);
opacity: 1;
}
Demo Single
Penjelasan:
- Properti perspective pada baris 3 digunakan sebagai sudut pemutaran element
:before
dan:after
- Baris 17 digunakan sebagai sudut pemutaran element
:before
- Baris 24 digunakan sebagai sudut pemutaran element
:after
dan baris 25 merupakan posisi awal element:after
(berputar 90 ° berlawanan arah jarum jam) - Ketika terjadi event
:hover
, baris 28 digunakan untuk memutar element:before
90 ° searah jarum jam dan baris 32 untuk memutar element:after
90 ° searah jarum jam
6. Efek 6: Membuat efek icon berputar dengan cssTop
Efek ini akan membuat icon berputar 360 ° sebanyak satu kali. Element yang kita gunakan adalah anchor <a>
dan pseduo element :before
, element <a>
kita gunakan sebagai background sedangkan element :before
berisi icon.
Transisi element seperti tampak pada contoh berikut:
Contoh untuk beberapa set icon:
Pada contoh diatas, element dengan border warna biru adalah element :before
dan yang berwarna merah adalah element <a>
.
Kode HTML yang kita gunakan:
<a class="twitter" href="#"></a>
sedangkan css yang kita gunakan:
.twitter {
background-color: #5FA9FF;
}
.twitter:before {
color: #FFFFFF;
content: "f099";
}
.twitter:hover {
background-color: #2289FF;
}
.twitter:hover:before{
transform: rotate(360deg);
}
Demo Single
Penjelasan: Ketika terjadi event :hover
, maka baris 14 akan merubah warna background pada element <a>
dan baris 17 akan membuat element :before
berputar 360 °.
7. Efek 7: Membuat efek zoom pada icon dengan cssTop
Efek ini hanya merubah warna background dan ukuran font, cukup menggunakan transition, semua perubahan tersebut terlihat halus.
Element yang kita gunakan cukup <a>
dan :before
. Element <a>
berfungsi sebagai background dan element :before
berisi icon. Transisi element seperti contoh berikut:
contoh untuk beberapa set icon:
Pada contoh diatas, element dengan border warna biru adalah element :before
dan yang berwarna merah adalah element <a>
Kode HTML yang diperlukan:
<a class="rss" href="#"></a>
Kode css yang diperlukan:
.rss {
color: #FFFFFF;
background-color: #FF9F5B;
}
.rss:before {
color: #FFFFFF;
content: "f09e";
}
.rss:hover {
background-color: #FF7F24;
}
.rss:hover:before {
font-size: 120%;
}
Demo Single
Ketika terjadi event :hover
, baris 10 akan mengubah warna background pada element <a>
dan baris 13 akan memperbesar ukuran icon.
Efek ini akan tidak maksimal jika menggunakan background gambar, dimana jika gambar di perbesar biasanya akan pecah.
8. Efek 8: Membuat efek perubahan warna pada icon dengan cssTop
Efek ini akan merubah warna pada icon ketika mouse berada di atas icon. Untuk membuatnya kita cukup menggunakan element <a>
sebagai background dan :before
sebagai icon.
Transisi warna seperti tampak pada contoh berikut:
contoh untuk beberapa set icon:
Pada contoh diatas, element dengan border warna merah adalah element , sedangkan yang berwarna biru adalah element
:before
Kode HTML yang kita gunakan:
<a class="digg" href="#"></a>
Sedangkan style yang kita perlukan:
.digg {
background: #757575;
color: #5D5D5D;
}
.digg:before {
content: "f1a6";
}
.digg:hover:before {
color: #79BAFF;
}
Demo Single
Ketika terjadi event :hover
baris 9 akan merubah warna icon menjadi biru dan property transition akan membuat perubahan tersebut menjadi halus.
Efek ini akan sulit dilakukan jika kita menggunakan icon berupa gambar, karena warna icon sudah fixed sesuai dengan gambar yang ada.
III. Kesimpulan
Pada bagian satu ini kita membahas beberapa efek yang dapat kita buat hanya dengan menggunakan CSS, diantaranya efek slide dan kubus (3d).
Sobat dapat bereksperimen dengan mengubah nilai yang ada, untuk efek yang lainnya kita bahas pada bagian dua: Membuat 15 Efek Social Media Button Dengan CSS Part II
Subscibe Now
Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com
40 Feedback dari pembaca
Cara pakainya gimana bang? misalnya jadi widget disidebar/colum footer. Maklum masih pemula, hehehe
Tinggal di copy-paste kode HTML nya mas, terus di load file CSS nya
Gan? Yang dimaksud dengan content itu apa ya?kan ada tuh yg di atas mksdnya apa ya?
Content maksudnya isi dari element mas, memang untuk pseudo element ::before dan ::after HARUS kita isi contentnya meskipun kosong (“”)
gan itu bisa di ganti dengan logo kita kah?
boleh di tunjukan kah untuk ganti objeknya
Bisa mas, namun perlu beberapa perubahan. Intinya gambar pada button tersebut menggunakan icon font, untuk mengubahnya menjadi logo, maka perlu untuk gambar menjadi background bukan icon font
gan, itu file icon fontsnya upload ke hosting?
Iya mas…
Mantap!! Terima kasih..
Sama sama mas
gan, cara ngatasi supaya font web kita nggak ikut berubah gmna?
manu saya fontnya jadi besar karena dihubungkan dengan effect_main_single
Untuk web, sebaiknya font dideklarasikan pada bagian body mas, misal: body {font-family: open-sans}, selanjutnya untuk bagian spesifik, seperti icon font, definisikan class sendiri, misal: .social-btn { … }
mas mau tanya dong, kalau membuat efek highlight ketika datanya berubah gimana ?
Maksudnya bagaimana ya mas? highlight pada row tabel ketika diedit?
mas, bisa dicontohkan untuk mengubah jadi logo ?
maaf mas, saya masih bingung, karna baru belajar juga.
Coba property dan value pada selector anchornya diganti mas:
a { … }
coba diisi background-image: …
Om ada efek yang tiba tiba ada gambar panah gtuh klo dipencet tapi awalnya itu kga ada gambarnya cmn ada tulisan
Itu sama seperti efek 3 mas, awalnya tidak kelihatan kemudian kelihatan, tanda panah bisa diletakkan di pseudo element :before atau :after dan tidak terlihat, ketika mouse berada di atas elemen, pseudo elemen tersebut di munculkan.
Mas, maaf saya newbie he
Kalau file fontnya dan css nya disimpan di bawah folder apa jika dimasukan ke theme wordpress yang sudah ada?
Didalam folder themes mas, misal wp-content/themes/nama_theme/css
Mas saya kok ganti pakai icon lain kodenya berbeda ya jadi tidak muncul
ex kode facebook yg mas gunakan “\f09a” sedangkan yang ada di web iconmoon “ea90”
saya bingung mas mencari librarynya.
Mending langsung menggunakan font awesome saja mas:
https://jagowebdev.com/cara-menggunakan-font-awesome/
Ijin make efek yang ke 15 mas. Terima kasih sebelumnya mas
Ohiya mas, saya mau tanya. Apakah sudah ada icon untuk sosial media LINE? Karena sudah bongkar penelurusan digoogle belum ketemu . Rata – rata make gambar, sedangkan saya kurang nyaman kalau icon menggunakan gambar .
Mungkin ada saran dari mas.
Sama sama mas
Di Font Awesome ada mas line icon
o gitu toh… mulai sedikit ngerti..
Sip mass….
akhirnyeee ktemu jga artikel bermanfaat kek gini:))
Siap mas…
terimakasih mas, cukup membantu untuk yang baru hijrah ke wp hehe
Sama sama mas…
kalau pakai foto sendiri (bukan icon) bisa ga mas?
Bisa mas…
maaf masih pemula….
cara menggunkannya gimana? sy pake blogspot
ini khusus buat wordpress?
kalau bisa buat blogspot kodenya ditempel di bagian mana?
Ini penggunaannya umum mas, bisa wordpress, blogspot, maupun lainnya. Untuk blogspot saya belum pernah
Bagi tutorial buat blogspot mas Sy tdk mengerti bagaimana cara pakenya buat blogspot
Maaf tidak familiar dengan blogspot mas…
mas cara uploud file icon font nya ke Blogger gimana ya?
Maaf, saya tidak begitu paham platform blogger mas
mantap
Bagaimana caranya jika untuk menambahkan di google sites?