tag:blogger.com,1999:blog-21317239854923778222024-02-07T22:18:08.401-03:00euconectei webeuconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.comBlogger5125tag:blogger.com,1999:blog-2131723985492377822.post-10705713896631261632011-04-09T11:46:00.003-03:002011-04-09T12:50:13.814-03:00Criação de Layout: Expansível ou Fixo?<p>Uma das primeiras perguntas que nos fazemos ao começar a pensar num layout é <del>será que dá pra desenvolver na praia?</del> como disponibilizar as informações. Junto com essa pergunta vem uma outra: Layout Expansível (que ocupa toda a àrea do navegador) ou fixo (que fica "preso" a uma determinada àrea independente da resolução da tela)?</p><p>Esta é uma questão que somente você e seu cliente podem entrar em <del>guerra</del> acordo.</p><p>Então para facilitar nossa vida, vou disponibilizar umas maneiras simples de montar cada um dos tipos. Vamos começar com <em>Layout Expansível</em>.</p><p>Como sempre fazemos, vamos começar por partes, abaixo temos o <em>html</em>:<br />
<pre class="prettyprint" style="white-space:pre;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link type="text/css" rel="stylesheet" href="estilo.css" />
</head>
<body>
<div id="cabecalho">
<h1>Cabeçalho</h1>
</div>
<div id="conteudo">
<div id="esquerda" class="coluna">
<h2>Coluna Esquerda</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
<div id="principal">
<h2>Coluna Principal</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
<div id="direita" class="coluna">
<h2>Coluna Direita</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
</div>
<div id="rodape">
<address>Rua com Endereço, s/n - Lugar - UF</address>
</div>
</body>
</html>
</pre><p>Feito o <em>html</em>, chegou a hora de aplicar o css nele. Abaixo temos o CSS:</p><pre class="prettyprint" style="white-space:pre;">@charset "utf-8";
/* CSS Document */
#cabecalho, #rodape {
background-color:#00CCFF;
}
/* Modo Expansível */
#principal {
margin: 0 200px;
}
#conteudo {
position: relative;
min-height: 300px;
}
.coluna {
background-color:#CCCCCC;
position: absolute;
top:0;
width: 190px;
}
#esquerda {
left:0;
}
#direita {
right: 0;
}
/* Modo Fixo */
#centralizador {
margin: 0 auto;
width: 900px;
}
#colesq, #coldir {
float: left;
width: 150px;
}
#centro {
float:left;
width: 600px;
}
#corpo {
display: table;
}
</pre><p>Finalizando <del>com felicidade</del> o <em>css</em>, poderemos ver a página pronta</p><p>Chegou a hora de começarmos a mexer no <em>Layout Fixo</em>, com isso veremos um diferença na criação da página. Segue o código <em>html</em>:<br />
<pre class="prettyprint" style="white-space:pre;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<link type="text/css" rel="stylesheet" href="estilo.css" />
</head>
<body>
<div id="centralizador">
<div id="cabecalho">
<h1>Cabeçalho</h1>
<ul id="nav">
<li><a href="#">Item1</a></li>
<li><a href="#">Item2</a></li>
<li><a href="#">Item3</a></li>
<li><a href="#">Item4</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
<li><a href="#">Item5</a></li>
</ul>
</div>
<div id="corpo">
<div id="colesq">
<h2>Coluna Esquerda</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
<div id="centro">
<h2>Coluna Principal</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
<div id="coldir">
<h2>Coluna Direita</h2>
<p> asuidhiasdhiahd ahsdihaisdhaisdh da sdhisd adihasidiasdiasdhaisdads dasidhasdhads </p>
</div>
</div>
<div id="rodape">
<address>Rua com Endereço, s/n - Lugar - UF</address>
</div>
</div>
</body>
</html>
</pre><p>Agora, vamos <del>a la playa</del> ao <em>css</em>:<br />
<pre class="prettyprint" style="white-space:pre;">@charset "utf-8";
/* CSS Document */
#cabecalho, #rodape {
background-color:#00CCFF;
}
/* Modo Fixo */
#centralizador {
margin: 0 auto;
width: 900px;
}
#colesq, #coldir {
float: left;
width: 150px;
}
#centro {
float:left;
width: 600px;
}
#corpo {
display: table;
}
/* Menu Horizontal */
#nav {
list-style:none;
display:table;
margin:0 auto;
padding:0;
}
#nav li{
float:left;
margin:3px 2px;
}
#nav a {
background-color:#FFFFFF;
display:block;
text-align:center;
text-decoration:none;
width:50px;
}
#nav a:hover {
background-color:#333333;
}
</pre><p>Bons estudos e divirta-se ;-)</p>euconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.com0tag:blogger.com,1999:blog-2131723985492377822.post-37224863708534441512011-02-22T11:58:00.007-03:002011-02-22T13:39:09.861-03:00Criando formulários com CSS<p>Formatar um formulário semântico e com CSS não tem mistério.</p><p>Utilizaremos somente as tags próprias para o formulário. Sem a necessidade de <br>, ou <div>, ou qualquer outra tag que não seja própria do formulário.</p><p>Todo e qualquer estilo (tamanho, espaçamento, cores, etc) será dado pelo CSS.</p><p>Então vamos ao código:<br />
<pre class="prettyprint" style="white-space:pre;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sem título</title>
<link href="css/estilo.css" type="text/css" rel="stylesheet" />
</head>
<body>
<form action="">
<fieldset>
<legend>Dados Pessoais</legend>
<label>Nome:
<input type="text" name="nome" id="nome" />
</label>
<label>Sobrenome:
<input type="text" name="sobrenome" id="sobrenome" />
</label>
<label>Data de Nascimento:
<input type="text" name="dtnasc" id="dtnasc" />
</label>
<label>CPF:
<input type="text" name="cpf" id="cpf" />
</label>
</fieldset>
<fieldset>
<legend>Endereço</legend>
<label>Logradouro:
<input type="text" name="logradouro" id="logradouro" />
</label>
<label>Número:
<input type="text" name="numero" id="numero" />
</label>
<label>Bairro:
<input type="text" name="bairro" id="bairro" />
</label>
<label>Cidade:
<input type="text" name="cidade" id="cidade" />
</label>
<label>UF:
<input type="text" name="uf" id="uf" />
</label>
</fieldset>
<fieldset>
<legend>Mensagem</legend>
<label>Assunto:
<input type="text" name="assunto" id="assunto" />
</label>
<label>Corpo:
<textarea name="corpo" id="corpo"></textarea>
</label>
</fieldset>
<input type="submit" value="Enviar" />
<input type="reset" value="Limpar" />
</form>
</body>
</html>
</pre></p><p>Com esse código pronto, temos agora um formulário básico <del>e desorganizado</del>.</p><p>Começa entao, uma <del>batalha árdua</del> nova fase de criação dos estilos. Como vemos abaixo:<br />
<pre class="prettyprint lang-css" style="white-space:pre;">@charset "utf-8";
/* CSS Document */
* {
font:12px "Trebuchet MS", Arial, Helvetica, sans-serif;
margin:0;
padding:0;
}
fieldset {
border:1px dotted #CCC;
margin:5px 0;
padding:5px;
width:200px;
}
input[type=reset] {
background-color:#FC0;
border:none;
width:100px;
}
input[type=submit] {
background-color:#0C0;
border:none;
margin:0 0 0 3px;
width:100px;
}
legend {
background-color:#333;
color:#CCC;
font-size:14px;
padding:5px 10px;
}
label {
display:block;
width:200px;
}
label input {
border:1px solid #AEAEAE;
margin:0 5px;
width: 190px;
}
label input:focus {
border:1px solid #000;
}
textarea {
border:1px solid #AEAEAE;
margin:0 5px;
height:100px;
width:190px;
}
</pre></p><p>Como final temos o seguinte <del>desastre</del> resultado:<br />
<img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-XxubyMMALHs1MjurT117ppxoPTGfldiY5dg56Rbqa_LKKbJALTk35iqKkV1JmxFgfUJt3pboc_vSztzcicSRx9HvseNj3rWSJhvD3La_nbs8Keirff658n8cTGifraV36HGY-SekaEA/s1600/form.pngg" /><br />
</p><p>Bons estudos e divirta-se! ;-)</p>euconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.com1tag:blogger.com,1999:blog-2131723985492377822.post-68985768480585019432011-01-24T13:36:00.003-02:002011-01-25T09:12:03.976-02:00Servindo HTML & XHTMLEste artigo descreve de maneira sumária alguns aspectos de como os servidores enviam o XHTML para os agentes de usuário (p. ex.: um navegador), bem como a maneira como estes agentes processam a marcação recebida. Trata-se de uma descrição de itens específicos e não de uma norma do W3C.<br />
<br />
Os tópicos desse artigo se inspiram na FAQ <a href="http://www.w3.org/International/articles/serving-xhtml/International/questions/qa-html-encoding-declarations">como declarar codificação de caracteres em um documento HTML ou XHTML</a>. As informações aqui contidas esclarecem também o porquê de certos aspectos da estilização via CSS não surtirem o efeito planejado, ou mesmo sofrer variações de um agente de usuário para outro.<br />
<br />
<h3><a id="mime" name="mime" href="#mime">Tipos de <acronym>MIME</acronym></a></h3><br />
Quando o servidor envia um documento para o navegador, envia também informações adicionais com o documento denominadas de <a href="http://www.w3.org/International/articles/serving-xhtml/International/articles/definitions-characters/#httpheader" class="dfn">Cabeçalho HTTP</a>.<br />
<br />
O campo Content-Type do cabeçalho HTTP descreve o tipo de dado que está sendo enviado. Essa informação é passada em um rótulo definindo o tipo de MIME da mídia. Observe a seguir um cabeçalho HTTP para um arquivo HTML usando o tipo de MIME text/html. Notar que o campo Content-Type pode, também, expressar a codificação de caracteres do documento.<br />
<br />
<pre class="prettyprint" style="white-space:pre;">HTTP/1.1 200 OK
Date: Wed, 05 Nov 2003 10:46:04 GMT
Server: Apache/1.3.28 (Unix) PHP/4.2.3
Content-Location: CSS2-REC.en.html
Vary: negotiate,accept-language,accept-charset
TCN: choice
P3P: policyref=http://www.w3.org/2001/05/P3P/p3p.xml
Cache-Control: max-age=21600
Expires: Wed, 05 Nov 2003 16:46:04 GMT
Last-Modified: Tue, 12 May 1998 22:18:49 GMT
ETag: "3558cac9;36f99e2b"
Accept-Ranges: bytes
Content-Length: 10734
Connection: close
<span style="border-bottom-color: rgb(255, 0, 0); border-bottom-style: solid; border-bottom-width: 1px; border-left-color: rgb(255, 0, 0); border-left-style: solid; border-left-width: 1px; border-right-color: rgb(255, 0, 0); border-right-style: solid; border-right-width: 1px; border-top-color: rgb(255, 0, 0); border-top-style: solid; border-top-width: 1px;">Content-Type: text/html; charset=utf-8</span>
Content-Language: en
</pre><p>O tipo de MIME <em>text/html</em> é a escolha natural para documentos HTML. Quando um navegador recebe um arquivo com esse tipo de MIME assume que a marcação segue a sintaxe HTML e <em>usa um parser HTML para interpretar a marcação</em>. </p><p>Ao contrário da HTML a XHTML é uma linguagem de marcação baseada na XML. A sintaxe XML é diferente da sintaxe HTML e os processadores XML são bem mais rigorosos no tratamento de erros de marcação. Conteúdos desenvolvidos em conformidade com a XML devem ser bem formados e válidos além de estarem perfeitamente integrados aos mecanismos de leitura das ferramentas de processamento, de transporte de dados e automação existentes no mundo da XML. Muitos desenvolvedores preferem usar XHTML em função do rigor que a XML impõe à edição e processamento dos documentos.</p><p>Para servir marcação XHTML, ao navegador, como XML você deve usar um dos seguintes tipos de MIME: <em>application/xhtml+xml</em>, <em>application/xml</em> ou <em>text/xml</em>. O W3C <a href="http://www.w3.org/TR/2002/NOTE-xhtml-media-types-20020801/">recomenda</a> que para servir XHTML como XML se use o primeiro dos tipos de MIME citados, ou seja, <em>application/xhtml+xml</em>.</p><p>O navegador lê XML <em>usando um parser XML e não um parser HTML</em>.</p><p>Infelizmente o navegador Internet Explorer nas suas versões 8 e anteriores não suportam arquivos servidos como XML, embora muitos outros navegadores suportem. Para contornar o problema de suporte à XML pelos navegadores a maioria dos arquivos são servidos com uso do tipo de MIME <em>text/html</em>. Nesses casos <em>o agente de usuário trata os arquivos como se fossem HTML e usam um parser HTML</em>.</p><p>Se o navegador tratar XML como HTML você deve estar atento às difereças de formato entre as duas marcações quando escrever XHTML para assegurar-se de que as diferenças entre a sintaxe XML e HTML não confundam o navegador. Essa atenção deve estar voltada também para as diferentes maneiras de codificação de caracteres e declaração de idioma no documento.</p><p>O <a href="http://www.maujor.com/w3c/xhtml10_2ed.html#guidelines">Apêndice C</a> da especificação para a XHTML recomenda algumas diretrizes de compatibilidade para servir XHTML como HTML. Elas são particularmente importantes para versões antigas de navegadores. Aquelas diretrizes recomendam, entre outras coisas, que se deixe um espaço em branco antes de '/>' no final de uma tag de fechamento (tais como, <em>img</em>, <em>hr</em> ou <em>br</em>), que se use tanto a o atributo <em>lang</em> da HTML como o atributo <em>xml:lang</em> da XML, que se use os atributos <em>id</em> e <em>name</em> para fragmentos identificadorees (âncoras), etc.</p><br />
<h3><a id="quirks" name="quirks" href="#quirks">Modo 'Standards' versus modo 'Quirks'</a></h3><p>Os navegadores atuais estão aptos a apresentar um arquivo HTML tanto no <dfn>modo standards</dfn> com no <dfn>modo quirks</dfn>. Isso significa que diferentes regras são aplicadas para apresentar um documento, umas para comportamento segundo as recomendações do W3C e outras para comportamentos não standards para versões antigas de navegadores.</p><p>Nas versões mais recentes da maioria dos navegadores o modo standards é acionado pela presença da <dfn><a href="http://www.w3.org/QA/2002/04/valid-dtd-list.html" hreflang="en">declaração do DOCTYPE</a></dfn>. A ausência de um DOCTYPE pode resultar em diferentes renderizações de um navegador para outro.</p><p>As imagens a seguir mostram tais diferenças de renderização</p><p><strong>Documento renderizado em modo standards.</strong><br />
<a href="http://www.w3.org/International/articles/serving-xhtml/standards.html"><img src="http://www.w3.org/International/articles/serving-xhtml/images/standards-scan.png" alt="Imagem da renderização de um arquivo em modo standards."></a><br />
</p><p><strong>O mesmo documento renderizado em modo quirks.</strong><br />
<a href="http://www.w3.org/International/articles/serving-xhtml/quirks.html"><img src="http://www.w3.org/International/articles/serving-xhtml/images/quirks-scan.png" alt="Imagem da renderização do mesmo arquivo em modo quirks."></a><br />
</p><p>Clique as imagens para abrir a página HTML correspondente. Se você abrir as páginas no Internet Explorer vai constatar as diferenças mostradas nas imagens.</p><br />
<p>As duas imagens mostram a renderização de duas páginas com marcação HTML e estilização CSS exatamente iguais. A única diferença entre elas que a página mostrada na figura à esquerda tem no início da sua marcação uma declaração DOCTYPE e a da direita não tem a declaração. Um arquivo marcado com uma declaração de DOCTYPE apropriada normalmente é renderizado em modo standards pela maioria dos navegadores mais recentes. A falta de um DOCTYPE na marcação causa renderização em modo quirks.</p><p>As diferenças visuais mostradas nas imagens resultam na adoção de critérios em desacordo com os Padrões Web para implementações de renderização em diferentes navegadores, tais como o Internet Explorer:</p><ul><li>Em modo quirks a largura definida por regra CSS para o div não considera quaisquer acréscimos de larguras definidas para padding e border e em modo standards essas larguras são somadas – essa é a razão porque o box mostrado na figura à esquerda (modo standars) e mais largo.</p></li>
<li>Em modo quirks a tabela não herda a definição CSS de font size para o elemento body - essa é a razão porque o texto tem fonte maior nesse modo.<br />
</li>
</ul><p>A finalidade original do DOCTYPE é fornecer informações sobre a linguagem de marcação do documento. Observe a seguir um exemplo mostrando a declaração de DOCTYPE no início da marcação (destaque com borda na cor <span class="noprint">vermelha </span>).</p><pre class="prettyprint"><span style="border:1px solid #F00;"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></span>
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>XHTML document</title>
<style type="text/css">
body { background: white; color: black; font-family: arial, sans-serif; font-size: 12px; }
p { font-size: 100%; }
h1 { font-size: 16px; }
div { margin: 20px; width: 170px; padding: 50px; border: 6px solid teal; }
table { border: 1px solid teal; }
</style>
</head>
<body>
<h1>Test file for Standards/Quirks</h1>
<div>
A div with CSS width:170px, margin:20px, padding:50px and border:6px.
</div>
<p>Text in a p element.</p>
<table>
<tr><td>Text in a table.</td></tr>
</table>
</body>
</html>
</pre><p>Diz-se que navegadores que se comportam de maneira diferente de acordo com o modo processam o <dfn>chaveamento do DOCTYPE </dfn>.</p><p>A princípio é uma boa ideia servir suas páginas web em modo standards, isto é, declare sempre um DOCTYPE.</p><h3><a id="declaration" name="declaration" href="#declaration">Os <acronym>DOCTYPEs</acronym> e a declaração <acronym>XML</acronym></a></h3><p>Um aspecto relacionado ao uso de DOCTYPEs tem importância decisiva na declaração de caracteres e na correta aplicação de estilos.</p><p>Pelo fato que XHTML 1.0 é baseada em XML é possível inserir no início da marcação uma <a class="dfn" href="/International/questions/qa-html-encoding-declarations#xmldeclaration">declaração XML</a> ainda que o documento seja servido como HTML. Observe a inserção dessa declaração na marcação mostrada anteriormente (a declaração XML foi destacada em itálico e na cor vermelha.):</p><blockquote><pre class="prettyprint"><span style="border:1px solid #F00;"><?xml version="1.0" encoding="ISO-8859-1"?></span>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
...</pre></blockquote><p>Em navegadores como os Internet Explorer 7, Firefox, Safari, Opera, Google Chrome e outros a presença ou não da declaração XML em uma marcação contendo um DOCTYPE causa a renderização em modo stanrd.</p><p>Contudo, no Internet Explorer 6 qualquer marcação, exceto <a href="/International/questions/qa-byte-order-mark" class="dfn">byte-order mark</a>, inserida antes do DOCTYPE causa a renderização em modo quirks.</p><p>O Internet Explorer 6 ainda é muito usado é isso pode ser um problema. Se você quer se assegurar que suas páginas são renderizadas consistentemente nos demais navegadores standards você precisa saber lidar com isso.</p><p>É óbvio que se o seu documento foi criado com marcação que não é afetada pelas diferenças de renderização entre os modos standards e quirks isso não é um problema. Mas, se por outro lado a marcação pode causar renderizção inconsistente você precisa lançar mão de artifícios CSS para acabar com as diferenças ou então omitir a declaração XML.</p><p>Lembre-se que ao omitir a declaração XML você deverá optar por uma codificação de caracteres em UTF-8 ou UTF-16 para sua página. (Ver <a href="http://www.w3.org/International/articles/serving-xhtml/International/questions/qa-html-encoding-declarations"><cite>Declaração de codificação de caracteres em HTML</cite></a> para esclarecimentos sobre as consequências da declaração de caracteres.)</p><br />
Fonte: <a href="http://www.w3.org/International/articles/serving-xhtml/" Title="W3C" Alt="W3C">W3C</a>euconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.com0tag:blogger.com,1999:blog-2131723985492377822.post-83772297640193523522011-01-21T11:12:00.005-02:002011-01-24T14:42:34.997-02:00Desenvolvimento Web: dicas e sermõesA web hoje é um fenômeno que está crescendo a cada dia, e a medida que ela cresce, cresce também parte daqueles que fazem a Web: os Web Designers, Web Master e por ai vai. O que acontece é que muitos desses “profissionais”, aprendem a trabalhar com duas ou até três ferramentas, e saem desenvolvendo sites e mais sites que mais se parecem com um misturado de gambiarras sem sentido. <br />
<div style="text-align: justify;">Este post irá reunir alguns tópicos sobre o desenvolvimento Web em geral, abordando desde algumas dicas à alguns sermões para os profissionais da Web.</div><span id="more-5931"></span><br />
<h3>Use todos os seletores CSS avançados</h3><div style="text-align: justify;">Você realmente conhece a fundo o CSS? Nesta dica irei reunir algumas formas avançadas de selecionar elementos para definir os estilos.</div><ul><li><b>Attribute selectors</b></li>
</ul><div style="text-align: justify;">Nesse tipo de seletor ele irá pegar um elemento baseado em algum atributo definido no XHTML. No exemplo abaixo todos os elementos <b>img</b> com a propriedade <i>alt</i> definida serão afetados pelo estilo:</div><pre class="prettyprint lang-css">img[alt] {
border: 1px dotted #999;
}
</pre>Um outro exemplo é aplicar o estilo dependendo do conteúdo dos atributos:<br />
<pre class="prettyprint lang-css">p[class="title"]{
font-size:16px;
color:green;
}
</pre>Neste caso, todos os parágrafos que tenham a classe <i>title</i> serão afetados pelo estilo.<br />
<ul><li><b>Child selectors</b></li>
</ul>Um <i>child selector</i> atinge o filho “direto” de um elemento. Por exemplo, suponha que tenhamos a seguinte marcação:<br />
<pre class="prettyprint lang-html"><div>
<a href="#">Teste</a>
<ul>
<li><a href="##">Teste1</a></li>
<li><a href="##">Teste2</a></li>
</ul>
</div>
</pre>Perceba que somente o primeiro link é que é um filho direto da <i>div</i>, os outros links são filhos diretos da lista e não da <i>div</i>.<br />
<pre class="prettyprint lang-css">div > a {
color: black;
}
</pre>O estilo acima só irá afetar o primeiro link, uma vez que ele é filho direto da <i>div</i>.<br />
<ul><li><b>Adjacent sibling selectors</b></li>
</ul><div style="text-align: justify;">Este tipo de seletor consiste em pegar o elemento que possui o mesmo pai e que esta imediatamente após outro seletor.</div><pre class="prettyprint lang-html"><h2>Título</h2>
<p>Este aqui será estilizado</p>
<p>Este aqui não será estilizado</p>
</pre><div style="text-align: left;">E com o seguinte CSS, somente o primeiro parágrafo será estilizado.<br />
<pre class="prettyprint lang-css">h2 + p {
color: red;
}
</pre></div><div style="text-align: justify;">Existem muitas outros seletores, não poderei abordar todos para não deixar o post muito grande. Mas isso serve como um incentivo para vocês buscarem conhecer mais. <img alt=":D" class="wp-smiley" src="http://www.iotecnologia.com.br/wp-includes/images/smilies/icon_biggrin.gif" /> </div><h3>Use convenções de nomes</h3><div style="text-align: justify;">Quem aqui já desenvolveu um site e não se preocupou muito com a organização, sabe a grande dor de cabeça que isto dá, por isso, uma outra dica que eu dou é usar convenções de nomes para os seus elementos. E claro, nunca misture inglês com português, use somente um idioma.</div><div style="text-align: justify;">Abaixo uma lista de convenções de nomes geralmente usadas (em inglês):</div><ul><li>#branding</li>
<li>#content_sub</li>
<li>#content_main</li>
<li>#content_supp</li>
<li>#nav_main</li>
<li>#nav_sub</li>
<li>#site_info</li>
</ul><h3>Instale as extensões Firebug e Web Developer</h3><div style="text-align: justify;">Eu acredito que a grande maioria dos desenvolvedores Web utilizam o Firefox para seu ambiente de produção. Caso você não use, recomendo fortemente que o faça agora. O Firefox possui duas extensões poderosas e que auxiliam e muito o desenvolvimento de páginas web: Firebug e Web Developer.</div><div style="text-align: justify;">Você pode baixá-las aqui: <a href="http://getfirebug.com/" target="_blank">http://getfirebug.com/</a> e <a href="https://addons.mozilla.org/en-US/firefox/addon/60/" target="_blank">https://addons.mozilla.org/en-US/firefox/addon/60/</a>.</div><div style="text-align: justify;">Quando você instala essas extensões, é criada uma barra na parte superior do navegador, com diversas opções do Web Developer. O Firebug fica no canto direito inferior da tela. Após instalar o Firebug irá aparecer um ícone de um inseto que ao ser clicado irá abrir o Firebug.</div><div style="text-align: justify;">Com o Web Developer podemos editar o CSS enquanto estamos visualizando a página no navegador e obter o resultado na medida que fazemos as alterações. Podemos também ver diversas informações da página. Uma função que eu gosto muito é a de exibir a topografia. Vá em informações > Exibir topografia e veja o resultado.</div><div style="text-align: justify;">Usando Firebug podemos facilmente descobrir onde está determinado elemento ou a que elemento pai um elemento filho pertence. Com o Firebug instalado e o Firefox aberto, clique no ícone do inseto para abrir o Firebug.</div><div style="text-align: center;"><img alt="" class="aligncenter size-full wp-image-5946" height="193" src="http://www.iotecnologia.com.br/wp-content/uploads/2011/01/firebug.jpg" title="firebug" width="681" /></div><div style="text-align: justify;">Clique agora no ícone da setinha azul, a segunda opção da esquerda para a direita. Após fazer isso passe o mouse por cima da página, você vai perceber que ele vai selecionando os elementos, quando você clicar em algum elemento ele irá mostrar o XHTML e o CSS daquele elemento.</div><h3>Separe o estilo do conteúdo</h3><div style="text-align: justify;">Já se foi a época em que usávamos o HTML para definir o visual das páginas Web, hoje em dia <b>devemos </b>utilizar o CSS para este fim. O XHTML é onde definimos a marcação e colocamos o conteúdo, somente isso! Todo a estilização é feita via CSS. Uma forma interessante de ver se você está fazendo a coisa certa é verificar como sua página fica sem o CSS. Se ela ainda possuir fontes customizadas, fontes coloridas, backgrounds e etc, isso é um mal sinal, pois você está usando o XHTML para estilizar sua página. Com o Web Developer é possível verificar como a página fica sem o CSS.</div><div style="text-align: justify;">Para fazer isso vá em “Nenhum erro de CSS > Desativar estilos > Todos os estilos”, após fazer isso o CSS será desativado e o navegador só ira renderizar o XHTML.</div><h3>Teste em todos os navegadores</h3>Um outro ponto de suma importância: teste o site em todos os navegadores, não há nada mais desagradável do que ver um site funcionar perfeitamente em um navegador mas em outro navegador ele está com erros. Um exemplo é o site da <a href="http://wizard.com.br/" target="_blank">Wizard</a> . Até o presente momento ele está com o layout quebrado no <a href="http://www.iotecnologia.com.br/o-google-e-seus-nmeros/" title="Google">Google</a> Chrome.<br />
<h3>Preze pela acessibilidade</h3>Você sabe o que é acessibilidade? Você sabe as técnicas utilizadas para prover uma acessibilidade? Se você não sabe responder essas perguntas, provavelmente seus sites são bastantes inacessíveis.<br />
Propriedades como <i>alt</i> e <i>title</i> são essenciais para uma boa acessibilidade. Imagine que você tem uma imagem como um link, um internauta cego, logicamente não vai conseguir ver a sua página, então ele usa um leitor de tela.<br />
Quando o leitor de tela vê uma imagem, ele procura por propriedades como <i>alt</i> e <i>title</i>, que descrevem o que é aquilo. Dessa forma um internauta cego conseguiria saber do que se trata aquele link. Se não houver um atributo deste tipo, provavelmente o leitor de tela irá ler o destino do link. O que não seria nada esclarecedor para o internauta.<br />
Agora vamos mudar de situação, imagine um internauta que não consiga usar o mouse, ou que tenhas dificuldades de usar o mouse, então ele usa na maior parte do tempo o teclado para trabalhar no computador. Imagine aqueles famosos menus que quando passamos o mouse em cima aparece o submenu, como o deficiente iria conseguir imaginar que ali tem submenus?<br />
Outra dificuldade seria navegar pela página, navegar pelos links utilizando apenas o teclado. Para problemas desse tipo existe o <i>tabindex</i>, uma propriedade que define a “prioridade” de cada elemento. Ou seja quando pressionarmos a tecla TAB os elementos serão selecionados de acordo com a prioridade definida pela propriedade <i>tabindex</i>.<br />
Você pode estar sentindo falta de um apelo anti-flash, mas isso é assunto para um post inteiro, então para finalizar deixo esses vídeos que falam muito sobre acessibilidade, é um pouco grande mas vale muito a pena assistir. Espero que após verem esses vídeos, seus sites sejam mais acessíveis.<br />
<iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/NfF8KBy9U6I" title="YouTube video player" type="text/html" width="480"></iframe><br />
<iframe allowfullscreen="" class="youtube-player" frameborder="0" height="390" src="http://www.youtube.com/embed/OWgtRerb2Xc" title="YouTube video player" type="text/html" width="480"></iframe><br />
<br />
<br />
Fonte: <a alt="I/O Tecnologia" href="http://www.iotecnologia.com.br/desenvolvimento-web-dicas-e-sermoes" title="I/O Tecnologia">I/O Tecnologia</a>euconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.com0tag:blogger.com,1999:blog-2131723985492377822.post-59668494897434903582011-01-21T10:26:00.000-02:002011-01-21T11:27:41.524-02:00Padrões de Projeto: o que são e por que usá-los<div align="justify">Se você estuda, simpatiza ou trabalha em alguma área relacionada ao desenvolvimento de software, talvez já tenha ouvido falar em Padrões de Projeto, ou pelo menos já tenha esbarrado por aí com o termo Design Pattern. Nesse post explicarei o que são, para que servem e citar algumas vantagens do uso de tais padrões no desenvolvimento de softwares orientados a objetos.</div><span id="more-6010"></span><br />
<div align="justify"><b>O que é um Padrão de Projeto?</b><br />
A definição clássica dos padrões estabelece que um padrão é uma forma de <i>“descrever soluções para problemas recorrentes no desenvolvimento de sistemas de software orientados a objetos. Um padrão de projeto estabelece um nome e define o problema, a solução, quando aplicar esta solução e suas conseqüências”</i>.</div><div align="justify">Trocando em miúdos, os padrões estabelecem algumas técnicas genéricas que podem ser utilizadas para resolver algum tipo de problema de desenvolvimento. Como ninguém gosta de “reinventar a roda”, surgiram os primeiros padrões de projeto, que acabaram auxiliando os demais desenvolvedores em seus problemas semelhantes.</div><div align="justify">Imagine que você está escrevendo uma classe que só poderá ser instanciada uma única vez, como você fará isso? E se você quiser encapsular as chamadas ao banco de dados? E se você precisar encontrar uma maneira para alterar o comportamento dos seus objetos em tempo de execução? E se você quiser encapsular a criação de objetos? E se você quiser que o seu web site tenha todos os seus componentes separados por responsabilidades? Num primeiro momento, você talvez quebre um pouco a cabeça e acabe bolando uma maneira de resolver todos esses problemas, porém se você já tivesse conhecimento sobre os padrões <i><b>DAO, Singleton, Strategy, Factory</b></i> e o conjunto de padrões do <i><b>MVC</b></i> talvez você não tivesse tanta dor de cabeça e não teria gasto tanto tempo <del>reinventando a roda</del>.</div><div align="justify">Perceba que um padrão não lhe dará o código da sua classe prontinho, ao invés disso ele lhe servirá para lhe elucidar em relação a solução do problema. O fato que prova isto é que raramente os desenvolvedores irão seguir “à risca” o que sugere o padrão, fazendo algumas adaptações acerca da sugestão original.</div><div align="justify">Um ponto que muita gente se engana, é quando alguém diz que <i>“padrões são coisas do Java ou do PHP”</i>. Perceba que no inicio do post eu falei que os padrões estabelecem técnicas genéricas, portanto estas não estão ligadas a nenhuma linguagem específica, e sim aos problemas de desenvolvimento de softwares OO.</div><div align="justify"><b><br />
Por que usar os Padrões de Projeto?</b><br />
Além de evitar que você <strike>perda</strike> perca tempo reinventando a roda, os padrões lhe sugerem uma solução bacana do ponto de vista OO. O que pretendo dizer é que o uso deles nos ajudam a desenvolver um projeto com bom nível de coesão e reusabilidade, o que facilita o processo de <a href="http://www.iotecnologia.com.br/categoria/manutencao" title="manutenção">manutenção</a> do software. Lembre-se que a manutenção é justamente o que toma o maior período do tempo de vida de qualquer projeto de desenvolvimento.</div><div align="justify">Outro ponto, não menos importante, é que muitas vezes você não está desenvolvendo um projeto sozinho. Se toda a equipe está familiarizada com os Patterns você poderá economizar bastante tempo caso seja necessário explicar como você desenvolveu uma funcionalidade qualquer, fazendo com que você não precise ‘baixar o nível’. Ao invés de dizer <i>“fiz com que o construtor da classe não pudesse ser visível às demais e coloquei um método getInstance pra retornar a única instância da classe”</i>, você simplesmente diz: <i>“usei o Singleton”</i>.</div><div align="justify">A partir do momento que você sabe utilizar os Design Patterns de forma coerente, podemos dizer que você é, de fato, um bom desenvolvedor OO.</div><div align="justify"><b><br />
Quero saber qual caminho seguir pra estudar sobre o assunto</b><br />
Uma forma é buscar as definições dos padrões no <a href="http://www.iotecnologia.com.br/o-google-e-seus-nmeros/" title="Google">Google</a>, principalmente pelas definições “oficiais”. Os principais padrões são os do GoF (Gang Of Four) e os J2EE (voltados para projetos empresariais). Recomendo estudá-los nesta ordem e depois buscar outros padrões de acordo com a sua necessidade.</div><div align="justify">Se você prefere um estudo mais formal, recomendo os livros:</div><ul><li>Design Patterns: Elements of Reusable Object-Oriented Software (mais completo)</li>
<li>Head First: Design Patterns ou Use a Cabeça: Padrões de Projeto (pra quem gosta da série)</li>
</ul>Infelizmente não achei o primeiro livro em nenhuma loja, apenas sua versão traduzida que encontrei <a href="http://www.submarino.com.br/produto/1/93924/?franq=282801" target="_blank">aqui</a>. Já o segundo livro eu encontrei <a href="http://www.submarino.com.br/produto/9/303805/?franq=282801" target="_blank">aqui</a> e sua versão traduzida <a href="http://www.livrariasaraiva.com.br/produto/1995765" target="_blank">aqui</a>. <br />
<div align="justify">Bom gente, é isso… Qualquer dúvida, crítica ou sugestão que vocês tenham, deixem nos comentários! Espero que o post tenha ajudado a vocês a ter uma noção geral sobre Design Patterns. Até a próxima!</div><div align="justify"><br />
</div><div align="justify">Fonte:<a alt="I/O Tecnologia" href="http://www.iotecnologia.com.br/padroes-de-projeto-o-que-sao-por-que-usar" title="I/O Tecnologia">I/O Tecnologia</a></div>euconecteihttp://www.blogger.com/profile/01936583778988136651noreply@blogger.com0