Porquê semântica faz diferença: Tag span

Igor Escobar on Jun 9th 2008

Porquê semântica faz diferença

Este projeto tem como objetivo, dar um “empurrãozinho”, para aquelas pessoas que não tem o hábito de ir em busca dos valores semânticos das tags que utilizam, a grande maioria dos designers e programadores sabem que devem usar a tag div por exemplo, mas não fazem idéia do por que realmente ela foi criada ou qual o verdadeiro uso prático desta tag.

Tag <span>

Definição

A tag <span> é utilizada para agrupar elementos de linha no seu documento.

Diferenças no HTML e XHTML

Nenhuma.

Dicas e Observações

Dica 1: Use a tag <span> para agrupar elementos de linha e formata-los com stilos.

Exemplo

Código Saída
<p>This is a paragraph <span style=”color:#0000FF;”>This is a paragraph</span> This is a paragraph</p><p>
<span style=”color:#00DD45;”>
This is another paragraph
</span>
</p>
This is a paragraph This is a paragraph This is a paragraph


This is another paragraph

Atributos Padrão

id, class, title, style, dir, lang, xml:lang

Eventos suportados

onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

Filed in Internet, Semântica, Web Standards | One response so far

Porquê semântica faz diferença: Tag ins

Igor Escobar on Jun 4th 2008

Porquê semântica faz diferença

Este projeto tem como objetivo, dar um “empurrãozinho”, para aquelas pessoas que não tem o hábito de ir em busca dos valores semânticos das tags que utilizam, a grande maioria dos designers e programadores sabem que devem usar a tag div por exemplo, mas não fazem idéia do por que realmente ela foi criada ou qual o verdadeiro uso prático desta tag.

Tag <ins>

Definição

A tag <ins> é utilizado para indicar que o texto que estiver entre ela, é um texto que foi “acrescentado” depois que o documento foi escrito.

Diferenças no HTML e XHTML

Nenhuma.

Dicas e Observações

Dica 1: Use a tag <ins> junto com a tag <del> para enfatizar alterações e atualizações no documento

Exemplo

Código Saída
a dozen is <del>20</del> <ins>12</ins> pieces! a dozen is 20 12 pieces!

Atributos Opcionais

DTD indica em qual DTD o atributo é permitido. S=Strict, T=Transitional, and F=Frameset.

Atributo Valor Descrição DTD
cite URL A URL do texto ou documento que explica o motivo pelo qual o texto sofreu alterações. STF
datetime YYYYMMDD Dia e a hora que o texto foi inserido/modificado. STF

Atributos Padrão

id, class, title, style, dir, lang, xml:lang

Eventos suportados

onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

Filed in Internet, Semântica, Web Standards | 2 responses so far

Porquê semântica faz diferença: Tag base

Igor Escobar on Jun 2nd 2008

Porquê semântica faz diferença

Este projeto tem como objetivo, dar um “empurrãozinho”, para aquelas pessoas que não tem o hábito de ir em busca dos valores semânticos das tags que utilizam, a grande maioria dos designers e programadores sabem que devem usar a tag div por exemplo, mas não fazem idéia do por que realmente ela foi criada ou qual o verdadeiro uso prático desta tag.

Tag <base>

Definição

A tag <base> tem por objetivo, definir o caminho BASE para todos os links no documento.

Diferenças no HTML e XHTML

No HTML a tag <base> não precisa ser fechada.

No XHTML a tag <base /> precisa ser própriamente fechada.

Dicas e Observações

Nota 1: A tag <base> precisa ser definida entre a tag head quando utilizada.

Exemplo

Para inserirmos uma imagem no documento poderiamos colocar a seguinte URL:

  1. <img src="http://www.igorescobar.com/images/smile.gif" />

Agora vamos inserir a tag <base> para especificar a url base de todos os links da pagina:

  1. <base href="http://www.igorescobar.com/images/" />

Agora todas as imagens que inserirmos no documento deverá ser relativo a url base especificada entre a tag head do documento:

  1. <img src="smile.gif" />

Atributos Requeridos

DTD indica em cada DTD o atributo é permitido. S=Strict, T=Transitional, e F=Frameset.

Attribute Value Description DTD
href URL Especifica a URL base para todos os links da página. STF

Atributos Opcionais

Attribute Value Description DTD
target _blank
_parent
_self
_top
Quando queremos que todos os links da página abra de uma única maneira. Esse atributo pode ser sobre escrevido quando setado individualmente em cada link no documento.

  • _blank - todos os links abriram em um novo documento.
  • _self - todos os links abriram no mesmo frame onde o link foi clicado.
  • _parent - todos os links iram abrir no frameset parent.
  • _top - independente de quantos frames houver, todos os links vao abrir no corpo todo da janela.
TF

Eventos e Atributos padrões

Nenhum

Filed in Internet, Semântica, Web Standards | No responses yet

O Poder das Expressões Regulares - Parte 2

Igor Escobar on Mai 30th 2008

Se você é programador, e ainda recusa ou ignora estudar este sub-mundo da programação, este post é para você!

Este post será para mostrar, CLARAMENTE, como as expressões regulares podem ajudar você a se tornar um desenvolvedor mais produtivo dentro da sua empresa.

Na empresa em que eu trabalho, tive que desenvolver uma função genérica onde ela é capaz de aplicar qualquer tipo de mascara em cima de uma string ( data, hora, cep, cpf, cnpj, telefone etc ).

Para que eu pudesse aplicar a mascara em cima de um campo com CPF por exemplo eu tinha que primeiro, retirar as impurezas que o usuário pudesse vir a digitar como acentos, vírgulas, pontos etc.

Eu tinha que retirar os zeros a esquerda e depois adicionar os zeros a esquerda corretamente pois o usuário poderia digitar os zeros em excesso e isso tinha que ser tratado ou ignorado pela formatação.

Finalmente, aplicamos a mascara.

Vou dar atenção a essa função para retirar os zeros a esquerda, a primeira solução que eu desenvolvi foi essa, funciona, porém, é meio grande:

  1. function RetiraZerosEsquerda(Numero){
  2.     var Numero = ''+Numero;
  3.  
  4.     var len = Numero.length;
  5.     var numPermitidos = '123456789';
  6.     var Numero2 = '';
  7.     var Cut = true;
  8.     for(var i = 0; i <= len; i++) {
  9.         nNow = Numero.charAt(i);
  10.         if(numPermitidos.indexOf(nNow) != -1) Cut = false;
  11.         if(nNow != 0) { Numero2 += nNow; }
  12.         else if(Cut == false) { Numero2 += nNow; }
  13.     }
  14.     return Numero2;
  15. }

Agora, pensei em aplicar esta mesma solução utilizando expressões regulares, funciona perfeitamente, e veja como ficou:

  1. function RetiraZerosEsquerda(Numero){
  2.     return Numero.replace(/(0)[^1-9]+/g,"");
  3. }

Interessante não?

Fica ai mais um convite para você que ainda às ignora.

Facilitando o Estudo

Na internet existe várias ferramentas que te ajudam na fixação e treinamento dos conceitos aprendidos neste livro, uma destas, é o Regex Tester online, você escreve um texto simples, escreve a regra e o editor vai colorindo as áreas afetadas por sua expressão regular no seu texto.

Guia de Links Uteis

Expressões Regulares - Aplicando

Nos links acima você encontra informações suficientes para em pouco tempo sair criando suas próprias expressões.

Ah!

Se você se intessou pela função da mascara, divirta-se:

  1. //
  2.  
  3. /**
  4. * Formata o Campo de acordo com a mascara informada.
  5. * Ex de uso: onkeyup="AplicaMascara('HORA', this);".
  6. * @author Igor Escobar (blog@igorescobar.com)
  7. * @param Mascara String que possui o nome da mascara de formatação do campo.
  8. * @param elemento Campo que será formatado de acordo com a mascara, voce pode informar o id direto ou o próprio elemento usando o this.
  9. * @returns {void}
  10. * @methods
  11.    - DATA:
  12.    - HORA:
  13.    - CEP:
  14.    - CPF:
  15.    - CNPJ
  16.    - TEL
  17.    - TELDDD
  18. */
  19. function AplicaMascara(Mascara, elemento)
  20. {
  21.        
  22.     // Seta o elemento
  23.     var elemento = (elemento) ? elemento : document.getElementById(elemento);
  24.     if(!elemento) return false;
  25.    
  26.     // DEFINE AS REGRAS DE FORMATAÇÃO DOS CAMPOS
  27.     var Regexs = {
  28.         DATA: /(([0-9]){2})(([0-9]){2})(([0-9]){4})/,
  29.         HORA: /(([0-9]{2}))(([0-9]){2})(([0-9]){2})/,
  30.         CEP: /(([0-9]{5}))(([0-9]){3})/,
  31.         CPF: /(([0-9]{3}))(([0-9]){3})(([0-9]){3})(([0-9]{2,5}))/,
  32.         CNPJ: /(([0-9]{2}))(([0-9]){3})(([0-9]){3})(([0-9]){4})(([0-9]){2,6})/,
  33.         TEL: /(([0-9]){4})(([0-9]){4})/,
  34.         TELDDD: /(([0-9]){2})(([0-9]){4})(([0-9]){4})/
  35.     }
  36.        
  37.     MyRegex = eval('Regexs.'+Mascara);
  38.    
  39.     // INSTANCIA A REGRA REGEX PARA FORMATACAO
  40.     getRegexGroups = new RegExp(MyRegex);
  41.    
  42.     // INSTANCIA A REGRA QUE VERIFICA SE O CAMPO POSSUI SOMENTE NÚMEROS
  43.     onlyNumbers = new RegExp(/^([0-9]+)$/);
  44.    
  45.     // ESTE É O CAMPO COM AS IMPURESAS (DIGITADO PELO USUÁRIO FINAL)
  46.     var CampoSujo = elemento.value;
  47.    
  48.     // RETIRA OS EXCESSOS DOS CAMPOS PARA QUE POSSAMOS APLICAR A MASCARA EM UM CAMPO LIMPO
  49.    
  50.     if(Mascara == "CPF" || Mascara == "CNPJ")
  51.         var oValue = RetiraZerosEsquerda(CampoSujo.replace(/([./;:,\-()]+)/g,""));
  52.     else
  53.         var oValue = CampoSujo.replace(/([./;:,\-()]+)/g,"");
  54.        
  55.  
  56.     if(Mascara == "CPF") { oValue = addLeftZeros(""+oValue, 11); }
  57.     if(Mascara == "CNPJ") { oValue = addLeftZeros(""+oValue, 14); }
  58.    
  59.    
  60.     // VERIFICA SE A REGRA QUE ELE SE ESCOLHEU SE APLICA AO TEXTO DIGITADO NO CAMPO
  61.     if(getRegexGroups.test(oValue) == true){
  62.  
  63.         //APLICA A REGRA NO CAMPO E FORMATA
  64.         switch(Mascara){
  65.             case 'DATA': oNewCampo = oValue.replace(getRegexGroups,"$1/$3/$5"); break;
  66.             case 'HORA': oNewCampo = oValue.replace(getRegexGroups,"$1:$3:$5"); break;
  67.             case 'CEP': oNewCampo = oValue.replace(getRegexGroups,"$1$3-$5"); break;
  68.             case 'CPF': oNewCampo = oValue.replace(getRegexGroups,"$1.$3.$5-$7"); break;
  69.             case 'CNPJ': oNewCampo = oValue.replace(getRegexGroups,"$1.$3.$5/$7-$9"); break;
  70.             case 'TEL': oNewCampo = oValue.replace(getRegexGroups,"$1-$3"); break;
  71.             case 'TELDDD': oNewCampo = oValue.replace(getRegexGroups,"($1)$3-$5"); break;
  72.         }
  73.         // Retorna o valor do elemento com seu novo valor
  74.         if(parseInt(oValue) != 0 && parseInt(oValue) != "") elemento.value = oNewCampo; 
  75.        
  76.     }
  77. }

Filed in Expressões Regulares, Utilidades | No responses yet

Porquê semântica faz diferença: Tag address

Igor Escobar on Mai 30th 2008

Porquê semântica faz diferença

Este projeto tem como objetivo, dar um “empurrãozinho”, para aquelas pessoas que não tem o hábito de ir em busca dos valores semânticos das tags que utilizam, a grande maioria dos designers e programadores sabem que devem usar a tag div por exemplo, mas não fazem idéia do por que realmente ela foi criada ou qual o verdadeiro uso prático desta tag.

Tag <address>

Definição

A tag <address> define as informações de contato para um documento ou seção.

Diferenças no HTML e XHTML

Nenhuma.

Dicas e Observações

Nota 1: A tag <address> não deve ser usada para descrever o endereço do portal, somente deve ser usado se o mesmo fizer parte das informações de contato do documento ou seção.

Nota 2: O endereço usualmente é renderizado em italic. A maioria dos brownsers vão adicionar uma quebra de linha antes e depois do elemento address, mas as quebras de linha dentro do elemento deverá ser adicionada por você.

Exemplo

  1. <address> Author: of this document:
  2.  
  3. <a href="mailto:donald@disneyland.com">Donald Duck</a>
  4. </address>

Saída:

Author: of this document:

Donald Duck

Atributos suportados

id, class, title, style, dir, lang, xml:lang

Eventos suportados

onclick, ondblclick, onmousedown, onmouseup, onmouseover, onmousemove, onmouseout, onkeypress, onkeydown, onkeyup

Filed in Internet, Semântica, Web Standards | No responses yet