Posts na categoria ‘plugin’

26jan2012

Princípio de carousel de imagens com jQuery – Criando um plugin simples

(0) comentários

Nos últimos meses, tenho usado bastante o efeito de carousel.
Como todo programador, me incomodo de ter que ‘me repetir’. Ou ter que repensar uma lógica que já resolvi uma vez.

Nem sempre ‘temos tempo’ de parar, analisar e otimizar oque estamos fazendo.
Porém, devemos fazer isso.

Fiz vários tipos de carouseis, porém por serem diferentes um dos outros, e alguns possuirem algumas peculiaridades, configurações extras, estilizações fora dos padrões, acabei fazendo os meus próprios códigos, e não usando nenhum plugin pronto.

Nesse post, vou deixar o start de um plugin de jQuery, que rapidamente fiz aqui.
Muitas melhorias precisam ser feitas, como:
-> possibilitar scroll vertical
-> não limitar a marcação a ser usada
-> permitir uso do easing..

e por ai vai.. nisso, eu acabaria recriando o cycle(ou chegando perto do efeito Hz dele). Não é essa a intenção.
Até agora é para ser simples mesmo, e muito mais simples de usar também.

Como todos os meus efeitos, esse não foge do meu padrão: resolvi as partes mais complicadas no css.
O js é simples. O instanciamento ainda mais.

É isso, sem mais, segue o código, e logo abaixo a demonstração.
A grande ‘sacada’, é deixar o plugin se virar com a animação, (setas prev e next), e termos uma chamada simples e limpa assim:

/* fim plugin carousel */
jQuery(document).ready(function(){
	jQuery('#slide').carousel();
	jQuery('#slide2').carousel();
});

Demonstração

=) Vejam como fiz:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
/* carousel */
jQuery.fn.carousel = function( settings ){
	var $this = jQuery( this );
	var defaults = {
		prev: '.nav-left',
		next: '.nav-right',
		pos: 0,
		speed: 1000
	}
	settings = jQuery.extend(defaults, settings); 

	var lis = $this.find('li');
	var width_li = lis.eq(0).width()+ parseInt( lis.eq(0).css('marginLeft') )+parseInt( lis.eq(0).css('marginRight') );
	var ul = $this.find('ul');

	var prev = $this.find( settings.prev );
	var next = $this.find( settings.next );

	ul.css({width: (width_li*lis.length)+'px'});

	/* .nav-left */
	prev.click(function(){
		if( settings.pos>0 ){
			settings.pos--;
			_move( ul, settings.pos, width_li, settings.speed );
		}
	});
	/* .nav-right */
	next.click(function(){
		if( lis.length-1>settings.pos ){
			settings.pos++;
			_move( ul, settings.pos, width_li, settings.speed );
		}
	});

	/* funcoes privadas */
	_move = function( ul, pos, width_li, speed ){
		var new_left =  -1*pos*width_li;
		ul.animate({left:new_left+'px'},settings.speed);
	}

	return $this;
};
/* fim plugin carousel */
jQuery(document).ready(function(){
	jQuery('#slide').carousel();
	jQuery('#slide2').carousel();
});
</script>
<style type="text/css">
* { margin: 0; padding: 0; }
#slide { width: 460px; height: 300px; }
	#slide li { width: 460px; height: 300px; }
#slide2 { width: 140px; height: 105px; padding: 10px 25px; background: #000; }
	#slide2 li { width: 140px; height: 105px; }
hr { margin: 50px; }

/* css do plugin */
.carousel { position: relative; }
.overflow { overflow: hidden; height: 100%; position: relative; }
.carousel ul { position: absolute; top: 0; left: 0; }
.carousel li { float: left; }
.nav { position: absolute; top: 50%; z-index: 3;
	background: url('images/nav.png') no-repeat;
	width: 36px; height: 36px; margin-top: -18px;
	cursor: pointer;
}
.nav-left { left: 10px; }
.nav-right { right: 10px; background-position: right top; }
	.nav-left:hover { background-position: left -36px; }
	.nav-right:hover { background-position: right -36px; }
/* css do plugin */
</style>
</head>
<body>

	<div id="slide" class="carousel">
		<div class="nav nav-left"></div>
		<div class="overflow">
			<ul>
				<li><img src="images/1.jpg" alt="" /></li>
				<li><img src="images/2.jpg" alt="" /></li>
				<li><img src="images/3.jpg" alt="" /></li>
				<li><img src="images/4.jpg" alt="" /></li>
				<li><img src="images/5.jpg" alt="" /></li>
			</ul>
		</div>
		<div class="nav nav-right"></div>
	</div><!-- /slide -->

	<hr />

	<div id="slide2" class="carousel">
		<div class="nav nav-left"></div>
		<div class="overflow">
			<ul>
				<li><img src="images/mini1.jpg" alt="" /></li>
				<li><img src="images/mini2.jpg" alt="" /></li>
				<li><img src="images/mini3.jpg" alt="" /></li>
				<li><img src="images/mini4.jpg" alt="" /></li>
			</ul>
		</div>
		<div class="nav nav-right"></div>
	</div><!-- /slide -->
</body>
</html>
9mai2011

Adicionar paginador no Modal jQuery.FancyBox

(0) comentários

Salve galera !!

‘De bobeira’ por aqui, aproveitei o tempo para estudar um pouco do fancybox.
É uma ótima opção de modal, e possui uma API bem clara, e de fácil utilização.

O callback, nos possibilita fazer mágica. Desenvolvi um script rápido, aproveitando o método publico jQuery.fancybox.pos(), para criar um paginador entre as fotos da galeria.

Usei o titleFormat: http://fancybox.net/blog.

function formatTitle(title, currentArray, currentIndex, currentOpts) {
    return '<div id="tip7-title"><span class="fb_pager">'+pager( currentArray, currentIndex )+'Imagem ' + (currentIndex + 1) + ' de ' + currentArray.length + '</span><span><a href="javascript:;" onclick="$.fancybox.close();"><img src="/data/closelabel.gif" /></a></span>' + (title && title.length ? '<p>' + title + '</p>' : '' ) + '</div>';
}
function pager( currentArray, currentIndex ){
	var p = '<p class="pageItem">';
	for( var i=1; i<=currentArray.length; i++ )
	{
		var active = ( currentIndex==(i-1) ) ? 'class="active"' : ''
		p += '<a href="#" rel="'+(i-1)+'"'+active+'>'+i+'</a>';
	}
	return p+'</p>';
}
jQuery(document).ready(function(){
	jQuery('.pageItem a').live('click', function( e ){
		e.preventDefault();
		jQuery.fancybox.pos( jQuery( this ).attr('rel') );
	});
});

Esse é o código adicional, e então no momento de instanciar o plugin, basta declarar que vamos usar o callback, e a function que deverá ser chamada:

	jQuery('.gallery').fancybox({
		titleFormat     :       formatTitle
	});

é isso. =)

15abr2011

Carousel jQuery usando o Cycle

(0) comentários
TweetSalve! mais uma vez aqui para mostrar, mais um pouco do poder do plugin Cycle do jQuery. Sei que existem ‘plugins especificos’, bem robustos.. porém imagine a situação em que vc tem um slideshow e um carousel no mesmo site. …

Read more »

26mar2011

Criando um plugin jQuery – parte 3 – Otimizando

(0) comentários
TweetSalve salve galera! Se vc está acompanhando essa série de posts até aqui, então estamos indo bem. Evoluindo em cada passo. Poderíamos parar na parte 2, e deixar apenas aquilo, mas não estou contente com aquele código, pq se forem 2 inputs, tenho 2 vezes o mesmo código, mas e se forem 5 ou 10 [...]
25mar2011

Criando um plugin jQuery – parte 2 – Codificando

(0) comentários
TweetOpa! para não perdermos o foco, vamos manter em mente a situação inicial: Problema: “Possuo campos input em um formulário, onde dentro deles existe uma descrição do que o usuario deve digitar ali. Gostaria que quando o usuário entrasse nesse campo(clicasse, tentasse preencher..), esse valor default fosse apagado. Porém, se o usuário sair deste campo, [...]
24mar2011

Criando um plugin jQuery – parte 1 – Começando

(0) comentários
TweetBom.. vou ‘desenvolver’ um plugin jQuery do começo. Apartir da idéia. Sempre que vamos desenvolver um script, precisamos ter em mente, que qualquer script só tem sentido se ele for criado para ‘resolver um problema’, e então, tendo o ‘problema’ bem definido, podemos encontrar formas de resolvê-lo. Problema: “Possuo campos input em um formulário, onde [...]
22mar2011

Plugin jQuery para bordas arredondadas

(0) comentários
TweetUm plugin que criei para fazer o efeito de bordas arredondadas. Ele é bem simples, apenas adiciona uma DIV com class .top e/ou .bottom, no elemento que vc o chamar. jQuery.fn.round = function( settings ){ var defaults = { top: true, bottom: true } settings = jQuery.extend(defaults, settings); $this = $( this ); if( settings.top [...]
22mar2011

Adicionar método no plugin jQuery.validate

(0) comentários
TweetBoas Galera !! Passando por aqui apenas para compartilhar, um método adicional que desenvolvi para o plugin jQuery.validate. $(document).ready(function(){ jQuery.validator.addMethod("notEquals", function(value, element, config){ return value!=config; }, 'Digite um valor'); }); Bom.. olhando assim, para até complicado, mas com calma, dá para perceber que ele não faz nada além de retornar um booleano. Para criar os [...]
21mar2011

Validar e enviar formulário com ajax, usando jquery.validate

(0) comentários
TweetBom, o motivo deste post, é para tentar acabar com os franksteins que tenho visto. O cara vê jQuery, acha legal. Resolve começar a usar. Tudo bem até aqui, se ele não tivesse feito essa escolha, antes de aprender a programar, o mínimo de Javascript Puro e Básico primeiro. Ai ele descobre os plugins, e [...]
14mar2011

Banner, Galeria, Slideshow, AdCast mostrando um pouco do poder do Cycle jQuery

(0) comentários
Chamem como preferirem. Vamos lá! Mãos a massa. Primeiro post desse tipo, de muitos que virão(tomara). No final deste post, chegaremos neste resultado: Para não termos sempre ‘Mais do Mesmo’, em todos os posts que eu fizer, juro que logo mais faço um Bê a Bá, de como ‘baixar o jQuery, instalar, e começar a [...]

Switch to our mobile site