• Home
  • Disclaimer
  • Privacy Policy
  • Sitemaps

Pinguin Techno

Select Menu
  • Home
  • Blogging
  • Sumber Artikel
  • Tools
    • Font Awesome
    • HTML Editor
    • HTML Encrypter
    • Code Color
    • Responsive Cek
  • Error Page
Home » CSS » jQuery » Hover and Click Trigger for Circular Elements with jQuery

Wednesday, 15 January 2014

Hover and Click Trigger for Circular Elements with jQuery

Unknown
Add Comment
CSS, jQuery
Wednesday, 15 January 2014
Menerapkan a:hover pseudo-class untuk elemen secara luas dikenal sebagai classic “hovering” di atas sebuah elemen pada halaman web. Masalah yang muncul dengan diperkenalkannya properti border-radius. Hal ini menjadi ekstrim ketika kita membuat lingkaran dengan menetapkan batas-radius persegi sampai 50% (setengah dari lebar dan tinggi luarnya).


  • Demo
  • Download



Hari ini saya ingin berbagi salah satu solusi untuk masalah circle hovering. Kami akan membuat sebuah plugin yang akan mengurus 'mouseenter', 'mouseleave' dan 'klik'.

Cara kerjanya

Dalam contoh kita, kita akan membuat sebuah lingkaran dengan beberapa jenis efek hover. Struktur hanya akan menjadi:
<a href="#" id="circle" class="ec-circle">
<h3>Hovered</h3>
</a>

CSS

.ec-circle{
width: 420px;
height: 420px;
-webkit-border-radius: 210px;
-moz-border-radius: 210px;
border-radius: 50%;
text-align: center;
overflow: hidden;
font-family:'Kelly Slab', Georgia, serif;
background: #dda994 url(../images/1.jpg) no-repeat center center;
box-shadow:
inset 0 0 1px 230px rgba(0,0,0,0.6),
inset 0 0 0 7px #d5ad94;
transition: box-shadow 400ms ease-in-out;
display: block;
outline: none;
}
Sekarang, kita akan mendefinisikan sebuah class untuk efek hover tapi bukan pseudo-class :hover yang dinamis. Idenya adalah untuk menerapkan class ini maka dengan jQuery ketika kita memasuki area melingkar dari elemen tsb:
.ec-circle-hover{
box-shadow:
inset 0 0 0 0 rgba(0,0,0,0.6),
inset 0 0 0 20px #c18167,
0 0 10px rgba(0,0,0,0.3);
}
Ketika kita memiliki JavaScript yg dinonaktifkan, kita akan menambahkan pseudo-class. CSS Style ini dapat ditemukan di noscript.css:
.ec-circle:hover{
box-shadow:
inset 0 0 0 0 rgba(0,0,0,0.6),
inset 0 0 0 20px #c18167,
0 0 10px rgba(0,0,0,0.3);
}

JavaScript

$.CircleEventManager            = function( options, element ) {

this.$el = $( element );

this._init( options );

};

$.CircleEventManager.defaults = {
onMouseEnter : function() { return false },
onMouseLeave : function() { return false },
onClick : function() { return false }
};

$.CircleEventManager.prototype = {
_init : function( options ) {

this.options = $.extend( true, {}, $.CircleEventManager.defaults, options );

// set the default cursor on the element
this.$el.css( 'cursor', 'default' );

this._initEvents();

},
_initEvents : function() {

var _self = this;

this.$el.on({
'mouseenter.circlemouse' : function( event ) {

var el = $(event.target),

circleWidth = el.outerWidth( true ),
circleHeight = el.outerHeight( true ),
circleLeft = el.offset().left,
circleTop = el.offset().top,
circlePos = {
x : circleLeft + circleWidth / 2,
y : circleTop + circleHeight / 2,
radius: circleWidth / 2
};

// save cursor type
var cursor = 'default';

if( _self.$el.css('cursor') === 'pointer' || _self.$el.is('a') )
cursor = 'pointer';

el.data( 'cursor', cursor );

el.on( 'mousemove.circlemouse', function( event ) {

var distance = Math.sqrt( Math.pow( event.pageX - circlePos.x, 2 ) + Math.pow( event.pageY - circlePos.y, 2 ) );

if( !Modernizr.borderradius ) {

// inside element / circle
el.css( 'cursor', el.data('cursor') ).data( 'inside', true );
_self.options.onMouseEnter( _self.$el );

}
else {

if( distance <= circlePos.radius && !el.data('inside') ) {

// inside element / circle
el.css( 'cursor', el.data('cursor') ).data( 'inside', true );
_self.options.onMouseEnter( _self.$el );

}
else if( distance > circlePos.radius && el.data('inside') ) {

// inside element / outside circle
el.css( 'cursor', 'default' ).data( 'inside', false );
_self.options.onMouseLeave( _self.$el );

}

}

});

},
'mouseleave.circlemouse' : function( event ) {

var el = $(event.target);

el.off('mousemove');

if( el.data( 'inside' ) ) {

el.data( 'inside', false );
_self.options.onMouseLeave( _self.$el );

}

},
'click.circlemouse' : function( event ) {

// allow the click only when inside the circle

var el = $(event.target);

if( !el.data( 'inside' ) )
return false;
else
_self.options.onClick( _self.$el );

}
});

},
destroy : function() {

this.$el.unbind('.circlemouse').removeData('inside').removeData('cursor');

}
};
Dalam contoh kita akan menerapkan Plugin ke elemen terkait. Dalam masalah ini kita harus menambahkan hover class on ‘mouseenter’ dan removing it on ‘mouseleave’..
$('#circle').circlemouse({
onMouseEnter : function( el ) {

el.addClass('ec-circle-hover');

},
onMouseLeave : function( el ) {

el.removeClass('ec-circle-hover');

},
onClick : function( el ) {

alert('clicked');

}
});
Ingat bahwa “normal” pseudo hover class juga didefinisikan dalam noscript.css yang akan diterapkan ketika JavaScript dinonaktifkan.

  • Demo
  • Download



Sekian tutorial mengenai Hover and Click Trigger for Circular Elements with jQuery! Saya harap Anda menikmati tutorial ini dan menemukan inspirasi!
Suka Artikel? Bagikan: Facebook Twitter Google+
0 Komentar untuk "Hover and Click Trigger for Circular Elements with jQuery"

Newer Post Older Post Home
Subscribe to: Post Comments (Atom)

Entri Populer

  • EDU Backlink
    EDU Backlink
    Backlink .EDU sekarang ini masih menjadi incaran bagi para blogger untuk menaikkan ranking situs/blog mereka, tapi kadang-kadang kita meras...
  • Minima Responsive  Template
    Minima Responsive Template
    DEMO | DOWNLOAD Minima Responsive Blogger Template sempurna Untuk Blog Pribadi , modern dan sepenuhnya responsif (coba mengubah ...
  • Tutorial Membuat Koneksi WDS di Mikrotik
    Tutorial Membuat Koneksi WDS di Mikrotik
    Teori Dasar Wireless Distribution System (WDS) WDS (Wireless Distribution System) adalah sistem yang memungkinkan interkoneksi antar Access...
  • Mikrotik Tersambar Petir
    Mikrotik Tersambar Petir
    Sedikit sharing tentang sambaran petir di Mikrotik . Beberapa waktu lalu terjadi keanehan di jaringan yang saya kelola, dimana jaringan inte...
  • Cara Mengetahui Password Winbox Mikrotik
    Cara Mengetahui Password Winbox Mikrotik
    Lupa Username dan Password Mikrotik? Lupa Username dan Password di Winbox Mikrotik? Jika jawabannya Ya , maka anda berada di tempat yang t...
  • Claud Storage Gratis Untuk Penyimpanan Data Online
    Claud Storage Gratis Untuk Penyimpanan Data Online
    Claud Storage Gratis Untuk Penyimpanan Data Online - Sebelum masuk ke inti materi, saya terangkan sedikit tentang layanan cloud storage . Se...
  • Penjelasan Queue Tree & PCQ serta Penerapannya di Mikrotik
    Penjelasan Queue Tree & PCQ serta Penerapannya di Mikrotik
    Pengaturan dan managemen Bandwidth di Mikrotik tidak dapat lepas dari fitur Queue. Ada dua jenis Queue yang dapat digunakan di Mikrotik, ya...
  • Cara Memantau dan Memonitor Jaringan Mikrotik Menggunakan The Dude
    Cara Memantau dan Memonitor Jaringan Mikrotik Menggunakan The Dude
    Memantau dan memonitor jaringan mikrotik dan perangkat lainnya yang saling terhubung dapat dilakukan dengan mudah menggunakan aplikasi yang ...
  • Tutorial Shared Bandwidth Management Mikrotik Menggunakan Simple Queue
    Tutorial Shared Bandwidth Management Mikrotik Menggunakan Simple Queue
    Shared Bandwidth Management Mikrotik digunakan untuk mengalokasikan bandwidth tiap client dengan rate yang bervariasi tergantung aktif tida...
  • Minima Colored 2.1 Responsive
    Minima Colored 2.1 Responsive
    DOWNLOAD | DEMO Minima berwarna 2.1 Responsif Template Blogger sempurna Untuk Blog Pribadi , modern dan sepenuhnya responsif (coba...

Labels

Android (2) Artikel (37) Backup (2) Bandwidth Management (8) Blogging (63) Blogspot (9) Blokir Website (6) Bridging (2) Burst (1) CSS (38) Dasar Mikrotik (24) Desain Rumah (1) DHCP (2) DNS (4) Download (9) eBook (1) Email (1) Error (1) Facebook (18) Failover (2) Firewall Mikrotik (21) Game (1) Hack (1) Hotspot (8) IDM (1) Install (2) Internet (11) Joomla (1) jQuery (24) Kaos Mikrotik (2) Komputer (5) Lain-Lain (13) Layer 7 (4) Linux (1) Load Balance (3) Mikrotik (24) Mikrotik Lanjut (51) Mikrotik Outdoor (2) Modem (1) MTCNA (2) MUM (5) Netcut (2) Netwatch (4) Password (1) Petir (1) Photoshop (1) PoE (1) Power Mikrotik (3) Proxy (6) RB433 (1) RB751U-2HnD (6) RB951Ui-2HnD (4) Reset (3) RouterBoard (10) RouterOS (19) Routing (5) Scripting (4) Security (1) SEO (20) Setting Mikrotik (34) SMS (1) SXTG-2HND (1) Template (31) The Dude (1) Tools (4) Troubleshooting (1) Tunnel (1) Tutorial Mikrotik (58) Twitter (2) Upgrade (4) USB (1) USB Modem (3) User Manager (2) Virtual (7) VPN (1) Widget (32) Winbox (7) Windows (2) Wireless Mikrotik (13) Wireless P2P (5) Wireless Security (1) Wireless Tools (1) Wordpress (10)
Copyright 2014 Pinguin Techno - All Rights Reserved
Template By Jenny Psychicfio