segunda-feira, 9 de setembro de 2013

O que é conteúdo acessível?

      Muitas vezes ao falarmos em conteúdo acessível logo pensamos que significa apenas colocar o atributo "alt" nas imagens do site e pronto, seu conteúdo já é acessível. Mas não é por aí.
      Ao criar um conteúdo para web é necessário compreender que existem diversos tipos de deficiências, e não somente a visual, então o conteúdo deve ser também adaptado para pessoas que:
  • sejam incapazes de ver, ouvir, se deslocar, ou interpretar determinados tipos de informações;
  • tenham dificuldade em ler ou compreender textos;
  • não tenham um teclado ou mouse, ou não sejam capazes de utilizá-los;
  • possuam tela que apresenta apenas texto, ou com dimensões reduzidas, ou ainda uma conexão lenta com a Internet;
  • estejam com seus olhos, mãos ou ouvidos ocupados (por exemplo, em ambientes com excesso ou pouca luz, em um ambiente barulhento, etc);
  • possuam uma versão ultrapassada de navegador web, diferente dos habituais, um navegador por voz, ou um sistema operacional pouco convencional.

    Além do conteúdo escrito, claro, deve-se adaptar a mensagem que você quer passar para o usuário, tanto em imagens quanto em vídeos e sons diversos. Por exemplo, se existe uma imagem do planeta terra apenas ilustrativa:

    O conteúdo alternativo seria: "Imagem do planeta terra visto do espaço"
    Agora se essa imagem fosse um link que fosse para uma outra página com informação bem determinada acerca da geografia do planeta:
O conteúdo alternativo seria melhor aproveitado como: "Informações sobre a Terra"
      Dessa forma a ideia a ser passada é a mesma tanto para as pessoas com deficiência quanto para os outros usuários.Esses equivalentes textuais são bons também para sua página ser melhor rankeada nos motores de busca pois eles (pelo menos eu acho que ainda) não buscam as fotos de maneira visual, então quem tem uma foto com um conteúdo alternativo (no alt) tem vantagem.

      Além das fotos tem os vídeos, que devem conter legendas ou tradução em linguagem de sinais e também deve ser disponível a descrição sonora, para que os deficientes visuais possam entender o que acontece no vídeo.

      O design do site, literalmente onde o conteúdo vai ficar, deve ser considerado também, pois deve atender as pessoas com dificuldade motora ou que não estejam com mouse disponível (o site deve ser acessível utilizando a tecla TAB do tecaldo).

      Então em vez de sair programando um site deve-se lembrar que o público será muito maior se o conteúdo for acessível, tanto com imagens, vídeos ou sons, além de criar um design que seja de fácil compreensão e utilização.

Css Para Web Acessível

Olá galera, aqui estou eu novamente o/, para falar sobre como o css hoje é importante para a acessibilidade, então a partir de agora preste atenção hein!

É sempre importante lembrar que para ter um website acessível tem que ter uma codificação de html, após este pré-requisito é onde chegamos na codificação css que também é importante para a acessibilidade.
Neste momento surge a seguinte duvida: Mas como o css influencia na acessibilidade?
Veja bem alguns softwares leitores de tela já podem identificar elementos de formatação visual, ou seja já pode identificar os códigos que não foram declarados no html mas foram declarados no css, como cor e fonte.

Obs: Vale ressaltar que é sempre importante separar as camadas html, que geralmente é conteúdo em texto, da camada css, que é a formatação visual/layout.

Existe algumas outras maneiras de utilização de css acessível veja quais são:

Contraste

Sempre que desenvolver um website, sua paleta de cores deve existir um contraste entre os elementos de sua página web. Geralmente o que é recomendado é que, fundos e elementos devem possuir um contraste de pelo menos 4,5:1 para possuir uma melhor visualização.

Links

Vocês devem saber como é que funciona a estrutura e um link, mas é sempre bom relembrar como é. Um link sempre deve ser destacado e sempre quando um link for acessado o mesmo deve mudar de cor, uma outra recomendação é: só sublinhe textos caso ele seja um link.

Convulsões

Lembra-se do post anterior que falei sobre WCAG 2.0? Bom olha ele aqui novamente.
O que o WCAG 2.0 ressalta é que deve-se tomar bastante cuidado na criação de alguns conteúdos que piscam frequentemente e são muito luminosos.

Elementos com foco

O famoso TAB, destaque os elementos que recebem o foco e deixe de uma maneira organizada para que as pessoas que utilizam o teclado consigam navegar em seu website sem grandes problemas fazendo com que seu site seja acessível e bem estruturado.

Bom ai estão algumas dicas para que você desenvolvedor as utilize. Eu vou ficando por aqui galera até a próxima.

fonte: Tableless.

Ass:
Rodrigo Camurça.

segunda-feira, 2 de setembro de 2013

WCAG X Seção 508

Um Pouco Sobre WCAG:

Bom para não começar um texto falando siglas e não explicar o que significa já vou falando o significado de WCAG (Web Content Accessibility Guidelines) agora você fica responsavel por traduzi-la ;)!
Quem criou a WCAG foi a W3C (World Wide Web Consortium), WCAG foi um modo de criar um modelo de orientações a serem seguidas pelos desenvolvedores web, para criar sites acessíveis para todos.
Como assim todos? para pessoas com deficiência ex: visual, auditiva, cognitiva, motora etc.

Este modelo WCAG atualmente encotra-se na versão WCAG 2.0, porém foi criada em 1999 com a versão WCAG 1.0 que atualmente não é tão usada como a 2.0, vou falar agora alguns exemplos a serem seguidos para ter um site acessivel seguindo este modelo WCAG:
-Toda imagem deve ter um texto alternativo.
-Sempre quando colocar um videos, colocar legendas, áudio narrando.
Coloquei apenas dois exemplos pois no momento estou um pouco sem tempo pois tenho que trabalhar mais caso quiserem mais detalhes acessem : www.w3c.br .

Agora Um Pouco Sobre A Seção 508:

A Seção 508 é uma lei criada pelo governo dos Estados Unidos que fala sobre a inserção das pessoas com deficiência ex:  visual, auditiva, cognitiva, motora etc... Em todos os setores da tecnologia da informação.
Ou seja, é bem parecida com os padrões da WCAG 2.0, só que a seção 508 existem 16 normas a serem seguidas, e devem ser seguidas a rigor tem que estar dentro dessas 16 normas para obter o selo de Seção 508!
Como é para todos os setores da tecnologia da informação envolve tanto na criação de: software, hardware, equipamentos de telecomunicações e eletrônicos.

WCAG X Seção 508:

Veja bem vou fazer uma comparação simples pois a maneira como os dois funcionam são bem parecidas!
A grande diferença que existe um do outro é a seguinte:
Quando você, desenvolvedor, for desenvolver um site seguindo WCAG você não precisa seguir todas as normas criadas pela WCAG somente algumas, tornando o seu site acessível, ele não vai ser 100% acessível porém estará dentro do que a WCAG exige! 
Agora com a Seção 508 não tem "xorumelas" tem que seguir as 16 normas e se não seguir, pode esquecer não será reconhecido com os padrões Seção 508!

Bom até mais galera, qualquer coisa estou a disposição!

Ass: Rodrigo Camurça.

Design Universal


O Design Universal surgiu primeiramente para fins arquitetônicos nos anos 70, com o passar dos anos foi sendo adaptado aos mais diversos protudos e serviços até chegar aos sistemas de computador - mais específicamente, sistemas de internet.

Um sistema pode ser considerado acessível quando ele "visa atender simultaneamente todas as pessoas, com diferentes características antropométricas e sensoriais, de forma autônoma, segura e confortável, constituindo- se nos elementos ou soluções que compõem a acessibilidade”.Decreto nº 5.296 de 02 de Dezembro de 2004.

No Design universal, há 7 princípios que devem ser seguidos:
1- Igualitário: Deve servir a todos.
2- Adaptável: Pessoas com habilidades diferentes não devem sofrer ao utilizar.
3 - Óbvio: Deve ser de fácil entendimento, não deve requerer muita concentração para se entender a mensagem que se quer passar.
4 - Conhecido: A informação deve se adaptar ao receptor.
5 - Seguro: Serve para minimizar os riscos de possíveis acidentes ou ações não previstas.
6 - Sem esforço: Deve ser eficiente, causar o mínimo de fadiga.
7 - Abrangente: Deve ser apropriado para alcance e manipulação, independentemente da mobilidade do usuário.


Portanto, um sistema baseado no Design Universal deve atender todos os tipos de público, seja ele deficiente visual, auditivo ou com restrição de função motora, mesmo que isso leve à uma quantidade maior de código a ser pensado. Afinal, todo ser humano deve ser considerado de forma igual, assim como disse Aristóteles: "A verdadeira igualdade consiste em tratar-se igualmente os iguais e desigualmente os desiguais a medida em que se desigualem "

segunda-feira, 10 de junho de 2013

Microformatos

1 - Definição da Web Semântica:

 A Web Semântica (idéia) surgiu em 2001, quando Tim Berners Lee, James Hendler e Ora Lassila Publicaram um artigo na revista Scientific American, onde falavam que o futuro era permitir que os computadores entendessem as palavras quanto ao seu sentido, fazendo com que os textos introduzidos em um site sejam legíveis para as máquinas.
Dessa forma - no mundo redondo de Olly, claro - todas as informações seriam tratadas como dados, e não apenas textos, permitindo que pudessem ser procuradas e usadas facilmente, abrindo-se um leque infinito de novas possibilidades.
Bom, ainda não conseguimos esse feito mas estamos quase lá(mentira estamos longe), mas damos um passo significativo ao usarmos HTML5, que nos possibilita usar campos mais adequados para cada tipo de informação. Um exemplo disso é a tag <article></article> que deve conter um texto de autoria própria, um artigo, antigamente usava-se a tag <p></p> que apenas armazenava o texto e não o diferenciava de um texto do rodapé ou do menu. Hoje existe uma tag para cada coisa, tornando seu site muito mais semântico(com significado) para os motores de busca.

2- Definição de Microformatos:


Microformato é um conjunto de formatos abertos que foram criados ainda antes do html5 para proporcionar semântica às informações que você queira expor como por exemplo: informações de contato, eventos, licença etc.
Os Microformatos nada mais são do que tags com nomes específicos(você não pode mudá-los ao seu bel-prazer, meu bem) onde você apresenta as informações desejadas, mais abaixo eu dou exemplos de como usá-los.

3- Definição dos microformatos hCard e hCalendar:
O microformato hCard serve para mostrar suas informações com mais semântica, sejam elas pessoais ou de empresas.  No hCard é possível publicar nome, endereço, email, url de site e até foto(link).
Já o hCalendar serve para eventos, nele é possível mostrar o título do evento, o local, hora de início e fim, e descrição e tags para busca.
Ambos os microformatos por serem padronizados, podem ser acessíveis a outros sites ou programas como por exemplo as agendas do Google e da Apple.

4- Aplicar microformats para marcação de contato (hCard), e informações sobre evento (hCalendar):

Abaixo segue um exemplo de como se apresenta um hCard:






 E agora, o hCalendar:





Para fazer esses dois microformatos eu utilizei o site http://microformats.org
Lá é possível encontrar ferramentas que criam o código necessário para a ciração desses microformatos.


quinta-feira, 6 de junho de 2013

terça-feira, 9 de abril de 2013

Formulários HTML

Form

Para utilizarmos um formulário em um site precisamos usar a tag <form></form>
Entre elas deve ter o que você precisa, claro. Para isso mostrarei aqui um pouco sobre os elementos possíveis:

Primeiro os atributos de <form>:

id 

Serve para o formulário ser identificado, pode ser para css ou para outro coisa que você precise
identificá-lo.
Ex:
<form id="cadastro">

action

O atributo action especifica para onde enviar o formulário de dados quando um formulário é submetido.
Ex:
<form action="teste.php" method="get">

method

<form action="teste.php" method="post">

O atributo method especifica como enviar os dados do formulário (os dados do formulário são enviado para a página especificada no atributo action).

Os dados do formulário podem ser enviados como variáveis ​​de URL (com o method = "get") ou como  operação post do HTTP(com o method = "post").
get = envia os dados pela URL
post = envia os dados via transação HTTP


enctype


O atributo enctype especifica como os dados do formulário devem ser codificados quando enviados para o servidor.
Obs: O atributo enctype só pode ser utilizado se o "method"  for "post".
Ex:
<form action="teste.php"
method="post" enctype="multipart/form-data">

oninput

A tag <output> representa o resultado de um cálculo (como um realizado por um script).
Ex:
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
<input type="range" id="a" value="50">100
+<input type="number" id="b" value="50">
=<output name="x" for="a b"></output>
</form>


autocomplete


O atributo autocomplete especifica se um campo de entrada deve ou não ter habilitado o completamento automático.

Autocomplete permite que o navegador preveja o valor quando um usuário começa a digitar em um campo, o navegador deve exibir opções para preencher o campo, com base em valores anteriormente digitados.

Obs: O atributo autocomplete funciona com os tipos <input>:text, search, url, tel, email, password, datepickers, range, e color.
Ex:
<form action="teste.php" autocomplete="on">


novalidate

Quando presente, ele especifica que os dados do formulário (de entrada) não devem ser validados quando submetidos.
Ex:
<form novalidate>

Label:

Atributos:

accesskey

Em HTML5, o atributo accesskey pode ser usado em qualquer elemento HTML (que irá validar em qualquer elemento HTML. No entanto, não é necessariamente útil).
Ele serve para adicionar um atalho ao elemento que você quiser.
Ex:
<label accesskey="L">
Assim, quando a pessoa apertar ALT+L ela vai direto à essa label

for

Especifica a que elemento do form a label está associada
Ex:
<form action="teste.php">
<label for="masculino">M
asculino</label>
<input type="radio" name="sexo" id="
masculino" value="masculino"><br>
<label for="feminino">F
eminino</label>
<input type="radio" name="sexo" id="
feminino" value="feminino"><br>
<input type="submit" value="Enviar">
</form>

Input

type

text, password, email, search, url, hidden, number, range, tel, date, datetime, datetime-local, time, month, week, checkbox, radio, file, color, button, image, reset, submit
Com esses tipos de atributos o type ficou muito mais semântico, ou seja, os buscadores sabem o que deve ser inserido em cada campo.
Com base em teste feitos em sala, sabemos que alguns atributos não funcionam direito em uns navegadores mas em outros sim, portanto é altamente aconselhável verificar qual navegador o seu público alvo usa, e testar antes de implementar um deles.
Abaixo mostro um pouco de como alguns desses campos aparecem no navegador.

password



search



hidden


(Ué... não apareceu nada? SIIIIM quando você escolhe o tipo hidden ele simplesmente não aparece! 

)







number



range



date
















checkbox




radio




file



color (cada sistema operacional tem uma maneira de deixar você escolher a cor)













button



alt

O atributo alt oferece um texto alternativo para o usuário, se ele / ela por alguma razão não pode ver a imagem (por causa da conexão lenta, um erro no atributo src, ou se o usuário usa um leitor de tela).

Nota: O atributo alt só pode ser usado com <input type="image">.

checked

Quando presente, ele especifica que um elemento <input> deve ser pré-selecionado (marcado), quando a página é carregada, ou seja, ele pré-checa.
O atributo verificado pode ser usado com <input type="checkbox"> e <input type="radio">.
O atributo verificado também pode ser definido após o carregamento da página, com um JavaScript.



disabled

O atributo disabled é um atributo booleano.

Quando presente, ele especifica que um grupo de elementos de formulário relacionados (um fieldset) deve ser desativado.

Um fieldset desativado é inutilizável e não clicável.

O atributo desativado pode ser configurado para que um usuário não veja esse fieldset até que uma condição seja cumprida (como a seleção de uma caixa de seleção, etc.) Em seguida, um JavaScript poderia remover o valor com deficiência, e fazer o fieldset utilizável.

maxlength

o atributo maxlength especifica o número máximo de caracteres permitidos no elemento <input>.


readonly

Quando presente, ele especifica que um campo de entrada é somente leitura.
Um campo de entrada somente leitura não pode ser modificado (no entanto, o usuário pode usar TAB nele, selecionar ou copiar um texto dele).
O atributo readonly pode ser configurado para evitar que um usuário altere o valor até algumas outras condições forem satisfeitas (como a seleção de uma caixa de seleção, etc.) Em seguida, um JavaScript pode remover o valor readonly, e fazer o campo de entrada editável.


size


O atributo size especifica a largura visível, em caracteres, de um elemento <input>.

Obs: O atributo size trabalha com os seguintes tipos de entrada:  text, search, tel, url, email, e password.

Dica: Para especificar o número máximo de caracteres permitidos no elemento <input>, use o atributo maxlength.


src

O atributo src especifica a URL da imagem para ser usada como um botão de envio.
Nota: O atributo src é necessário para <input type="image">, e só pode ser usado com 

<input type="image">.


tabindex

Especifica a ordem de tabulação de um elemento


value


O atributo value especifica o valor de um elemento <input>.

O atributo value é utilizado de forma diferente para diferentes tipos de entrada:

Para o "button", "reset", e "submit" - define o texto no botão
Para o "text", "password", e "hidden" - define o valor (padrão) inicial do campo de entrada
Para o "checkbox", "radio", "image" - define o valor associado à entrada (este valor também é enviado pelo submit)


max

O atributo max especifica o valor máximo de um elemento <input>.
Dica: Use o atributo máximo juntamente com o atributo min para criar uma faixa de valores legais.
Nota: O max e atributos min trabalha com os seguintes tipos de entrada: number, range, date, datetime, datetime-local, month, time e week.

min

Mesma coisa que o de cima, só que ao contrário :)

step

O atributo step especifica os intervalos de número legal para um elemento <input>.
Exemplo: se o 
step = "3", os números poderiam ser legais -3, 0, 3, 6, etcDica: O atributo step  pode ser usado junto com o Max e atributos min para criar uma faixa de valores legais.
Nota: O atributo step trabalha com os seguintes tipos de entrada:
number, range, date, datetime, datetime-local, month, time e week.

autofocus

Quando presente, ele especifica que um elemento <input> deve receber automaticamente o foco quando a página é carregada.


formenctype*formaction*formmethod*formnovalidate*
* Funcionam exatamente como enctype, action, method, novalidate, respectivamente, só que quando usado como por exemplo em um submit, ele subscreve o atributo colocado em <form>

formtarget


O atributo target especifica um nome ou uma palavra-chave que indica onde exibir a resposta que é recebida após enviar o formulário.

O atributo target define um nome ou palavra-chave para, um contexto de navegação (por exemplo, uma janela, aba).

height

Define a altura do campo.
width

Define o tamanho(visual, não de caracteres) do campo


multiple


Quando presente, ele especifica que o usuário está autorizado a enviar mais de um valor no elemento <input>.
Nota: O atributo multiple trabalha com os seguintes tipos de entrada: email e file.


pattern


O atributo pattern especifica uma expressão regular que o valor do elemento <input> é verificado.
Nota: O atributo padrão trabalha com os seguintes tipos de entrada:text, search, url, tel, email, e password.

placeholder

mostra ao usuário o que deve ser digitado, por exemplo no campo nome aparece "João da Silva", para exemplificar, ao digitar, esse exemplo some.

required

Evita que um campo seja deixado em branco, quando o usuário clica em enviar, o navegador mostra uma mensagem e indica o campo(cada navegador tem sua mensagem própria).

Select

disable

Quando presente, ele especifica que uma opção deve ser desativada.

A opção com o atributo disable é inútil e não-clicável.

O atributo desativado pode ser configurado para evitar que um usuário selecione a opção até que alguma outra condição foi cumprida (como a seleção de um checkbox, etc.).

option

A tag <option> define uma opção em uma lista de seleção.
Ex:
<select>
    <option value="volvo">Volvo</option>
    <option value="saab">Saab</option>
    <option value="opel">Opel</option>
    <option value="audi">Audi</option>
</select>

optgroup

O <optgroup> é usado para agrupar opções relacionadas em uma lista drop-down.

Se você tem uma lista com muitas opções, grupos de opções relacionadas são mais fáceis de manusear para o usuário.
Ex:
<select>
    <optgroup label="Carros Suiços">
        <option value="volvo">Volvo</option>
        <option value="saab">Saab</option>
    </optgroup>
    <optgroup label="Carros alemães">
        <option value="mercedes">Mercedes</option>
        <option value="audi">Audi</option>
    </optgroup>
</select>

datalist

A tag <datalist> especifica uma lista de opções pré-definidas para um elemento <input>.

A tag <datalist> é usada para fornecer um recurso "autocompletar" em elementos <input>. Os usuários verão uma lista suspensa de opções pré-definidas como entrada de dados.

Use o atributo do elemento <input> da lista para vinculá-lo em conjunto com um elemento <datalist>.
Ex:
<input list="browsers">

<datalist id="browsers">
    <option value="Internet Explorer">
    <option value="Firefox">
    <option value="Chrome">
    <option value="Opera">
    <option value="Safari">
</datalist>

keygen

A tag <keygen> especifica um campo gerador de par de chaves utilizado para formulários.

Quando o formulário é enviado, a chave privada é armazenada localmente, e a chave pública é enviada para o servidor.
Ex:
<form action="teste.php" method="get">
    Usuario: <input type="text" name="usuario">
    Criptografia: <keygen name="seguranca">
    <input type="submit">
</form>

output

A tag <output> representa o resultado de um cálculo (como um realizado por um script).
Ex:
<form oninput="x.value=parseInt(a.value)+parseInt(b.value)">0
    <input type="range" id="a" value="50">100
    +<input type="number" id="b" value="50">
    =<output name="x" for="a b"></output>
</form>

textarea

A tag <textarea> define uma entrada de texto multi linha.

Um textarea pode conter um número ilimitado de caracteres, e o texto é renderizado em uma fonte de largura fixa (geralmente Courier).

O tamanho de um textarea pode ser especificado pelo cols e atributos de rows , ou até melhor, através do CSS  com as propriedades de altura e largura.

button

A tag <button> define um botão clicável.

Dentro de um elemento <button> você pode colocar conteúdo, como texto ou imagens. Esta é a diferença entre este elemento e os botões criados com o elemento <input>.

Dica: Sempre especificar o tipo de atributo para um elemento <button>. Navegadores diferentes usam diferentes tipos padrões para o elemento <button>.
Usando o atributo value, você especifica um valor inicial para o botão.
Ex:
<button type="button">Clique em mim!</button>

Fieldset

A tag <fieldset> é utilizada para agrupar elementos relacionados em um formulário.

A tag <fieldset> desenha uma caixa em torno dos elementos relacionados.
Ex:
<form>
    <fieldset>
        Nome: <input type="text"><br>
        Email: <input type="text"><br>
        Nascimento: <input type="text">
    </fieldset>
</form>

legend

A tag <legend> define uma legenda para o elemento <fieldset>.
Ex:
<form>
    <fieldset>
        <legend>Dados pessoais</legend>
        Nome: <input type="text"><br>
        Email: <input type="text"><br>
        Nascimento: <input type="text">
    </fieldset>
</form>

Ufa, terminei!!