Artikel Copas 100%

Berbagi seadaanya.

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

Rabu, 15 Januari 2014

Hover and Click Trigger for Circular Elements with jQuery

Add Comment
CSS, jQuery
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"

Posting Lebih Baru Posting Lama Beranda
Langganan: Posting Komentar (Atom)

Popular Week

Diberdayakan oleh Blogger.

Labels

  • Android
  • Blogging
  • CSS
  • Facebook
  • Game
  • jQuery
  • Komputer
  • Lain-Lain
  • Photoshop
  • SEO
  • Software
  • Template
  • Twitter
  • Widget

Blog Archive

  • ▼  2014 (101)
    • ►  Juli (5)
    • ►  Juni (10)
    • ►  Mei (12)
    • ►  April (12)
    • ►  Maret (11)
    • ►  Februari (14)
    • ▼  Januari (37)
      • Pop Up Facebook Like Box With Lightbox Effect Vali...
      • Dynamic Mag Responsive Blogger Template
      • Adobe Photoshop Cs6
      • Headline Breaking News di Blog
      • Faster Vsand Blogger Templates SEO Valid HTML5 Res...
      • Loading Page Blogger
      • Floating Social Share Buttons for Blogger
      • Recent Comment Blogger Valid HTML5
      • Recent Posts Slider With Navigation
      • List Icon Font Awesome dan CSS Value Content V4.0.3
      • Tips SEO Dari Google [Download]
      • Karma - Creative Landing Page Blogger Templates
      • Compact News Previewer with jQuery
      • Polaroid Photobar Gallery with jQuery
      • Hover and Click Trigger for Circular Elements with...
      • CSS3 Lightbox
      • jQuery Image Slider With Three Panels and 3D Look
      • Accordion Style Slider with Valid CSS3
      • Slide Show jQuery Carousel
      • Menambah Tombol Open / Close pada Blog
      • 7 Apps Android Untuk Pengguna Blogger
      • Timely Alarm Clock - Bitspin Sekarang Gratis Setel...
      • Aplikasi Kamera Android Terbaik Pilihan 2014
      • Icon Social Share dengan Tooltip
      • Membuat Google Custom Search Engine di Blogger
      • Popular Posts Multi Color Flat UI
      • Photo Collage Max 2.2.5.6 Full Crack
      • Blackberry Messenger for PC
      • RespoAum Responsive Blogger Template
      • Elegant Photography Blogger Template
      • News Pro Responsive Blogger Template
      • iNews 2014 Responsive Blogger Template
      • Label Cloud CSS Blogger (Versi Hijau)
      • Widget Kotak Berlangganan With Sosial Icons
      • Cara Mengaktifkan dan Setting Robot.txt Pada Blog
      • Membuat Breadcrumbs Terindex Oleh Google
      • Cara Membuat Menu Navigasi Vertical Di Blog
  • ►  2013 (71)
    • ►  Desember (13)
    • ►  November (6)
    • ►  Agustus (1)
    • ►  Juni (8)
    • ►  Mei (33)
    • ►  April (10)

Labels

  • Android
  • Blogging
  • CSS
  • Facebook
  • Game
  • jQuery
  • Komputer
  • Lain-Lain
  • Photoshop
  • SEO
  • Software
  • Template
  • Twitter
  • Widget

Labels

  • Android
  • Blogging
  • CSS
  • Facebook
  • Game
  • jQuery
  • Komputer
  • Lain-Lain
  • Photoshop
  • SEO
  • Software
  • Template
  • Twitter
  • Widget

About Me

Unknown
Lihat profil lengkapku or visit on

© Artikel Copas 100% powered by Blogger.com.
All Right Reserved.