<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Grifo &#187; Combobox</title>
	<atom:link href="http://www.grifotecnologia.com.br/blog/tag/combobox/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.grifotecnologia.com.br/blog</link>
	<description>Desenvolvimento client-side com inteligência.</description>
	<lastBuildDate>Mon, 31 Oct 2011 21:23:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Combobox – Formulários personalizados</title>
		<link>http://www.grifotecnologia.com.br/blog/css/combobox-formularios-personalizados/</link>
		<comments>http://www.grifotecnologia.com.br/blog/css/combobox-formularios-personalizados/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 20:05:30 +0000</pubDate>
		<dc:creator>Renatho</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Combobox]]></category>
		<category><![CDATA[Formulário]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Select]]></category>

		<guid isPermaLink="false">http://www.grifotecnologia.com.br/blog/?p=96</guid>
		<description><![CDATA[Dando sequencia à série de Posts de formulários personalizados, hoje falaremos do combobox (select). Esta é outra técnica que não perde acessibilidade, não perde usabilidade e utiliza javascript não-obstrutivo. O resultado final do que explicaremos aqui será um select oculto com um span o sobrepondo e exibindo o valor. Ao clicar no select as opções]]></description>
			<content:encoded><![CDATA[<p>Dando sequencia à série de Posts de formulários personalizados, hoje falaremos do combobox (select). Esta é outra técnica que não perde acessibilidade, não perde usabilidade e utiliza <a title="Javascript não-obstrutivo" href="http://en.wikipedia.org/wiki/Unobtrusive_JavaScript" target="_blank">javascript não-obstrutivo</a>.</p>
<p>O resultado final do que explicaremos aqui será um select oculto com um span o sobrepondo e exibindo o valor. Ao clicar no select as opções dele são exibidas normalmente da forma nativa.</p>
<p>O único problema desta técnica é que não funciona no <a title="IE6 funeral" href="http://ie6funeral.com/" target="_blank">IE6</a> (segundo o Jeremias: &#8220;<a title="IE IE IE é  safado tem q morrer" href="http://www.youtube.com/watch?v=2hjnbraEL4A#t=0m30s" target="_blank">IE IE IE é  safado tem q morrer</a>&#8220;), pois ele (<span style="text-decoration: line-through;">browser burro</span>) não suporta opacidade no select, então para <a title="IE6 funeral" href="http://ie6funeral.com/" target="_blank">IE6</a> podemos apenas colocar uma cor de fundo no select para não destoar muito do desenho &#8211; Isto chama-se <a title="Graceful Degradation" href="http://www.css3.info/graceful-degradation/" target="_blank">Graceful Degradation</a> (que por sinal também merece um futuro Post).</p>
<p>Como é de praxe, começamos pelo HTML:</p>
<pre class="brush: xml;">
&lt;div class=&quot;styleCombobox&quot;&gt;
  &lt;select title=&quot;Selecione&quot;&gt;
    &lt;option value=&quot;1&quot;&gt;Opção 1&lt;/option&gt;
    &lt;option value=&quot;2&quot;&gt;Opção 2&lt;/option&gt;
    &lt;option value=&quot;3&quot;&gt;Opção 3&lt;/option&gt;
  &lt;/select&gt;
&lt;/div&gt;
</pre>
<p>Utilizamos uma div encapsulando o select, pois através do script vamos inserir um span antes do select exibindo o valor selecionado. No atributo title podemos inserir um valor inicial (valor que não precisa aparecer nas opções da combobox &#8211; ex.: &#8220;Selecione uma opção&#8221;).</p>
<p>Agora vamos criar um CSS para os estilos da nossa combobox conforme o desenho. No nosso exemplo colocaremos apenas um background cinza para não sair do foco do post.</p>
<p>Além dos estilos do desenho, vamos deixar o select sem opacidade &#8211; Os browsers ocultam somente a parte do valor do select, então quando clicarmos nele as opções serão exibidas.</p>
<pre class="brush: css;">
.styleCombobox {
  width:200px;
  background:gray;
}
.styleCombobox span {
  position:absolute;
}
.styleCombobox select {
  width:100%;
  opacity:0;
  filter:alpha(opacity=0);
}
</pre>
<p>No script que estamos disponilibizando também colocamos a funcionalidade de foco para o select, então precisamos criar outro estilo para ele:</p>
<pre class="brush: css;">
.comboboxFocus {
  border:dotted 1px #CCC;
}
</pre>
<p>Como comentado no início do post, no caso do <a title="IE6 funeral" href="http://ie6funeral.com/" target="_blank">IE6</a> você pode criar hacks para alterar as cores do select para ficar mais próximo do desenho, mas não entraremos no mérito.</p>
<p>Agora você precisa baixar o plugin desenvolvido pela Grifo neste link <a title="styleCombobox" href="http://www.grifotecnologia.com.br/code/formulario-personalizado/jquery.styleCombobox.js" target="_blank">styleCombobox</a> e importá-lo na sua página. A chamada fica dessa forma:</p>
<pre class="brush: xml;">
&lt;script type=&quot;text/javascript&quot;&gt;
  $(&quot;.styleCombobox select&quot;).styleCombobox({
    classFocus:&quot;comboboxFocus&quot;
  });
&lt;/script&gt;
</pre>
<p>Para usuários com javascript desabilitado, vamos exibir os selects normais do browser com o <a title="Tag noscript" href="http://www.w3schools.com/tags/tag_noscript.asp" target="_blank">noscript</a>:</p>
<pre class="brush: xml;">
&lt;noscript&gt;
  &lt;style type=&quot;text/css&quot;&gt;
  .styleCombobox select {
    filter:alpha(opacity=1);
    opacity:1;
  }
  &lt;/style&gt;
&lt;/noscript&gt;
</pre>
<p>As técnicas mostradas foram testadas em IE6 (apesar de neste funcionar parcialmente) e superiores, Firefox  3.6, Chrome e Safari. Qualquer problema que encontrarem em outras  versões de browser, mobile ou outros do gênero nos avisem para tentarmos  aprimorar a técnica. Sugestões de melhoria também são bem-vindas.</p>
<p>Veja um exemplo de <a title="Personalização de Combobox" href="http://www.grifotecnologia.com.br/code/formulario-personalizado/jquery.styleCombobox.html" target="_blank">personalização de combobox</a> em  funcionamento.</p>
<p>Abraços e até a próxima!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.grifotecnologia.com.br/blog/css/combobox-formularios-personalizados/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

