Escolar Documentos
Profissional Documentos
Cultura Documentos
Unidade III
5 ESTAÇÃO CSS3
5.1 CSS3
Assim como as novas especificações do HTML 5, o CSS3 (ou CSS versão 3, para ser mais preciso)
é definido como um conjunto mais recente de especificações projetadas para efetuar o molde,
assim proporcionando a experiência de modelar e definir exatamente quais recursos a versão mais
recente do CSS possui.
O CSS3 também não é um “novo CSS” como muitas pessoas pensam; como o HTML5, é
retrocompatível com tudo o que veio antes. No futuro, no entanto, haverá uma incrível quantidade de
novas funcionalidades, permitindo uma infinidade de possibilidades criativas que simplesmente não
existiam nas versões anteriores.
Preste muita atenção à tag do link no cabeçalho, conforme ilustrado a seguir, pois ela tem por
definição um arquivo com o nome de styles.css, ou seja, ele é um arquivo com o nome (ou similar) que
iremos apresentar na maior parte do nosso código CSS.
101
Unidade III
No entanto, se modificarmos o nome, precisamos lembrar de que usamos um nome diferente ao criar
documentos HTML básicos para experimentar. Existe também a opção de verificar a execução da página
acionando o botão F12 do teclado e visualizando as interações da página, conforme apresentado a seguir.
Figura 84 – Ferramentas do navegador Google Chrome mostrando o arquivo CSS falhando ao carregar
Se a página HTML não localizar um link com arquivo CSS, nenhuma das regras que se encontram no
CSS serão aplicadas a ela.
Saiba mais
102
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
CSS vem de cascading style sheets, e a ideia por trás dele é muito simples e prática, os documentos
CSS são gerados apenas com a finalidade de estilizar (ou seja, efetuar a gestão de cores, tamanho,
layout, posição e muito mais) o conteúdo de um documento de marcação HTML.
Sendo assim, embora o objetivo do código HTML seja estruturar o documento, o CSS tem em sua
existência a definição de como esse conteúdo é apresentado ao usuário final da web.
De modo básico, o CSS foi originalmente gerado para garantir a redução de quantidade de marcação
que estava sendo utilizada em um documento HTML para ditar, assim, a aparência de um trecho
específico de HTML, conforme apresentado a seguir.
Como podemos ver no código HTML apresentado na figura anterior, é necessário muito mais
marcação para produzir um cabeçalho simples, em uma linha, em negrito e vermelho, do que a maioria
dos que são utilizados atualmente, conforme apresentado a seguir:
103
Unidade III
As regras CSS resolvem dois desses problemas imediatamente apresentados no código. Primeiro, eles
geralmente têm por definição as regras que compõem a aparência do texto em um arquivo apartado, ou
seja, isso significa que um designer ou qualquer pessoa da área gráfica pode reajustar facilmente essas
regras, sem ter necessidade de se preocupar com o código no arquivo HTML.
Em segundo lugar, conseguem promover a reutilização de uma regra em diversos elementos através
da utilização do atributo class, o que significa que podemos especificar as configurações somente uma
vez e informar a marcação quando utilizá-las.
Exemplo de regra de estilo vermelho em negrito, agora definida em styles.css, esse arquivo deve ser
salvo com a extensão .css.
Quadro 8
.boldred
{
font-family: serif;
font-size: 20pt;
color: red;
}
Podemos notar imediatamente a diferença, para reutilizar a regra em outra linha, precisamos
apenas adicionar class = “boldred” como um atributo para nossa tag, sem precisar alterar a regra
de estilo de vermelho para azul, sendo que todos os elementos que utilizarem essa regra sofrerão
alterações para uma cor azul sem precisar tocar em nenhuma marcação HTML.
A cascata pode ser utilizada com grande efeito quando conseguimos encadear seletores, porque
nos possibilita aprofundar a marcação HTML, sem precisar ter certeza de que ditamos apenas a
aparência da marcação.
Exemplo de aplicação
Sendo assim, suponhamos que por um momento estamos desenvolvendo um documento HTML
contendo postagens de notícias acadêmicas.
104
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Cada postagem pode ser exibida em um plano de fundo de cor diferente do restante da página e
sempre deve ter cabeçalhos em negrito e em azul com texto de parágrafo menor em vermelho, conforme
implementação realizada na figura.
Embora o código possa funcionar muito bem e produza a saída desejada (conforme apresentado
na figura a seguir), podemos tirar vantagem da natureza em cascata do CSS, sendo que seria possível
tornar possível as coisas um pouco mais óbvias – até o ponto em que nosso HTML e CSS pudessem estar
descrevendo suas próprias intenções.
105
Unidade III
Desde que os elementos estejam dentro de uma seção que tenha o ID nomeado, eles serão coloridos
de acordo. Devemos observar também que o comportamento em cascata pode ser apresentado de
maneira que não se aplica apenas a seletores baseados em ID, conforme apresentado a seguir.
106
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
O uso de um seletor em cascata com base em classe, como o citado, pode reutilizar sua classe
de notícias em diversos lugares em seu HTML, e qualquer elemento h1 ou p adicionado dentro desse
elemento assumirá automaticamente a aparência dos cabeçalhos azuis com texto vermelho.
5.1.4 Pseudosseletores
Assim como o “pseudocódigo”, o pseudosseletor não é um seletor completo por si só, mas uma extensão
para um seletor existente. O exemplo mais conhecido disso é o foco utilizado nas tags de âncora HTML.
Um pseudosseletor funciona alterando uma regra existente para estar ativa, sendo que apenas em
um cenário determinado, que no caso de estar em semelhança, é quando o usuário passa o mouse sobre
o elemento em questão, conforme apresentado a seguir.
Antes do CSS3, havia também o pseudo-hover (conforme apresentado na figura a seguir), que
gerava a possibilidade de trabalhar em todos os navegadores; normalmente, era possível aplicar apenas
a tags de âncora HTML, que eram passadas, visitadas, ativas e vinculadas, utilizadas para estilizar tags de
âncora para feedback visual, sendo assim, dependendo de um usuário ter visitado ou não o link.
107
Unidade III
Infelizmente, a partir do CSS3, embora esses estilos ainda funcionem conforme o esperado, o número
de opções que podem ser modificadas por eles foi estritamente limitado, isso foi ocasionado em resposta
a uma invasão de privacidade, onde proprietários de sites mal-intencionados os usavam para rastrear se
os usuários haviam visitado um determinado site ou não.
Saiba mais
Esse é o mais simples de todos os seletores disponibilizados e, como o próprio nome sinaliza, é
utilizado para selecionar de maneira direta um nome de elemento conhecido, ou seja, também é possível
encontrar os termos de tipo de seletores, seletores de elemento e seletores de tag.
108
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Não existe uma terminologia estabelecida para esse tipo de seletor e tem por definição que sua
utilização depende muito do fabricante do browser, ou seja, para fins de desenvolvimento proprietário,
utilizamos o seletor direto simplesmente porque estamos segmentando de forma direta uma entidade
nomeada, conforme apresentado na figura a seguir:
Figura 92 – Exemplo para apresentar o código CSS dos seletores diretos hover
Depois que esse item é adicionado a uma folha de estilos (CSS), qualquer item na marcação HTML do
documento que consistir em uma marca <p> </p> será apresentado em cor verde, conforme ilustrado
a seguir, linhas de 4 a 9, independentemente de sua classe, ID ou qualquer outra situação.
Lembrete
Aplica-se um estilo de cor verde para a tag <p>, ou seja, todo texto
inserido na página envolvido com ela será apresentado nessa cor.
Sendo assim, vale lembrar que é possível combinar seletores básicos, para selecionar facilmente
apenas os elementos h1, que são descendentes de divs.
O seletor target all realiza o trabalho exatamente como o próprio nome diz: tem como premissa
localizar tudo o que pode no espaço em que está operando, ou seja, isso significa que, se estivermos
dentro de um seletor com base em ID, tudo o que estiver sob o controle desse seletor será afetado.
109
Unidade III
Normalmente, é utilizado em redefinições CSS para inicializar em um estado conhecido, sendo que
muitas das conhecidas estruturas de interface do usuário de front-end realizam uso extensivo dela para
colocar sua página em um estado conhecido antes de efetuar, assim, qualquer estilo personalizado que
eles possam disponibilizar para o seu trabalho.
O seletor universal deverá ser utilizado com muita moderação, visto que sua esfera de influência
deve ser a menor possível, para não onerar de forma drástica o desempenho de nossas páginas web,
conforme apresentado na figura a seguir.
A propriedade margin, conforme ilustrado na figura a seguir, simplesmente adiciona uma margem
ao elemento. Podemos utilizar qualquer medida Css (px, pt, em, %…) como tamanho da propriedade
margin, além disso conseguimos atribuir valores negativos.
110
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Quadro 9
#elemento {
margin-top: 15px; /* – propriedade que define a margem superior de um elemento
margin-right: 10px; /* – propriedade que define a margem direita de um elemento
margin-bottom: 25px; /* – propriedade que define a margem inferior de um elemento
margin-left: 35px; /* – propriedade que define a margem esquerda de um elemento
}
O padding, também ilustrado na figura a seguir, tem um funcionamento muito similar ao do margin,
porém, em vez de dar um espaçamento externo, ele realiza o espaçamento interno da página.
Quadro 10
#elemento {
padding-top: 25px; /* – propriedade que define o espaço de preenchimento superior de um elemento
padding-right: 45px; /* – propriedade que define o espaço de preenchimento no lado direito de um elemento
padding-bottom: 35px; /* – propriedade que define o espaço de preenchimento inferior de um elemento
padding-left: 15px; /* – propriedade que define o espaço de preenchimento no lado esquerdo de um elemento
}
#elemento { padding: 25px 15px; } /* Top/bottom – right/left */
#elemento { padding: 25px; }/* top/right/bottom/left */
Deve-se ter cuidado ao utilizar o padding, pois ele aumenta a largura do elemento. Caso seu
elemento tenha um width de 200px e utilizarmos um padding-left de 50px, ele vai passar a ter uma
largura de 250px. Então, sempre que necessário, deve-se compensar o padding do elemento reduzindo
o width ou o height.
111
Unidade III
Depois que incluímos em algum lugar próximo à parte superior do nosso arquivo de estilo,
podermos ter certeza de que, imediatamente, nenhuma das suas regras terá margens ou preenchimento
aplicados a elas.
Lembrete
O seletor adjacente proporciona uma seleção dos elementos imediatamente próximos um do outro
e funciona apenas uma vez para cada ocorrência, conforme apresentado a seguir.
112
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
113
Unidade III
Somente o elemento p próximo ao elemento h1 seria alterado para uma cor vermelha, ou seja, a
segunda linha de texto (e quaisquer outras que possam seguir) permaneceriam inalteradas, assim como
os próprios elementos h1.
Ao contrário dos seletores que já estudamos nessa unidade, um seletor de atributos não é considerado
uma construção de caractere único que fica entre dois destinos, e sim um apêndice com diversos
caracteres para uma regra principal, que contém suas próprias regras de processamento interno.
E possível ver no exemplo citado na figura que criamos uma lista não padrão e bastante ordenada
que contém itens como elementos do tipo âncora, porém isso não é nada incomum, é algo que
podemos certamente nos acostumar em observar nos links de navegação em documentos HTML.
O que fizemos, no entanto, foi utilizar o atributo rel para marcar a relação do link, especificando assim,
se é externo ou interno.
114
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Se quisermos estilizar os dois tipos diferentes de maneiras distintas, poderíamos, então, em teoria,
apenas adicionar uma classe, como .internal ou .external, porém pode haver situações em que a marcação
HTML pode ser gerada dentro de um processo sobre o qual não se tenha esse controle, sendo assim, talvez
não seja possível adicionar classes de saída dessa maneira.
Então aqui entra em ação o seletor de atributos. Pode-se utilizá-lo para direcionar um atributo
nomeado específico dentro do elemento e, pode-se empregá-lo não somente para segmentar uma
sequência completa, mas como parte de um nó.
Primeiro, vamos observar a figura a seguir, como podemos aplicá-los de links anteriores. Vamos
adicionar as seguintes regras de estilo à nossa folha de estilos, sendo que iremos supor que já fizemos a
inclusão do HTML anterior ao nosso documento.
Apenas usando duas regras distintas, segmentamos de maneira fácil os dois tipos diferentes de links,
simplesmente por causa da diferença no atributo rel (conforme figura anterior). A principal vantagem
do estudo realizado é que agora não precisamos nos preocupar em garantir que uma classe específica
seja aplicada a um determinado link, tornando a manutenção do documento muito mais fácil, ágil e
menos propensa a erros, conforme apresentado a seguir.
115
Unidade III
Exemplo de aplicação
Vamos imaginar por um instante que todos os seus links externos tenham uma URL totalmente
qualificada, e todos os seus links internos tenham apenas uma folha de página relativa, ou seja, nesse
caso, poderia se escrever a marcação da seguinte maneira, como apresentado a seguir:
Se examinarmos a diferença nos atributos href, podemos perceber que todos os links externos
começam com “http: //” e os internos não, ou seja, se utilizarmos o seletor “o valor do atributo começa
com”, agora podemos estilizar facilmente os externos com uma cor diferente.
O que abordamos aqui nem sequer arranhou a superfície do potencial disponível, levando-se em
consideração especialmente quando se trata de seletores de atributos, porém no HTML5, há um novo
conceito de atributo chamado atributo de dados, que assume a forma de dados seguida praticamente
por um nome personalizado, por exemplo:
• data-username
• data-recordindex
116
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
É possível utilizar esses atributos de dados em qualquer elemento, para qualquer finalidade, e ainda
mais quando efetuamos a combinação com os seletores corretos, eles permitem utilizar o HTML5 para
descrever facilmente suas próprias intenções e principalmente seu estilo.
Como o próprio nome sugere, o foco é utilizado quando um elemento de entrada tem foco em um
documento, ou seja, isso geralmente é utilizado em formulários para destacar um campo ativo aguardando
o seu preenchimento, conforme apresentado a seguir.
117
Unidade III
Para o nosso exemplo, qualquer elemento que possa receber o foco do usuário irá alterar a cor,
conforme especificado quando o foco for alternado:
Importante ressaltar que consideramos foco quando o cursor está piscando no input selecionado, no
nosso exemplo poderia ser no campo “nome do usuário” ou “e-mail”.
118
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Entre os muitos dos novos atributos que podem facilmente ser aplicados aos elementos na
especificação do HTML5 está o atributo desativado (disabled). Podemos utilizá-lo como qualquer
outro atributo simplesmente adicionando “disabled” a um elemento em sua marcação, conforme
apresentado a seguir.
Figura 105 – Exemplo de marcação simulada de formulário HTML com elementos desativados
Na sequência, adicionaremos uma regra simples a nossa folha de estilo: se removermos o atributo
desativado do elemento, a entrada retornará facilmente ao seu estado original, sendo assim, essa regra
geralmente é muito utilizada para apresentar campos somente de leitura em um editor de registros ou
até mesmo para mostrar campos que não são aplicáveis ao formulário atual, por exemplo, poderíamos
realizar uma marcação de um formulário para que os campos de endereço pudessem ser visualizados
apenas quando uma caixa de seleção para enviar e-mail para esse endereço estivesse marcada, conforme
apresentado a seguir.
119
Unidade III
Figura 106 – Exemplo de aplicação de regra CSS para estilizar elementos desabilitados
Observação
Saiba mais
120
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Conforme apresentado na figura a seguir, um elemento é classificado como ativado, quando, por
exemplo, não há motivo para desativá-lo, ou especificamente, quando não possui um atributo desativado
aplicado, ou seja, pode-se observar que um elemento também pode ser classificado como desativado se a
propriedade boolean (true/falsa) desativada do elemento estiver configurada como true em seu objeto de
documento utilizando JavaScript. Como em outros seletores, a responsabilidade de habilitar e desabilitar
pode ser feita explicitamente com base no estado do elemento. Isso significa que não é necessário garantir
que nos elementos corretos existam, por exemplo, as classes aplicadas corretamente.
Observação
Um dos ótimos recursos incrementados ao HTML5 é a validação do lado do browser, que pode
ser utilizada para fazer com que o browser efetue uma validação das entradas de um formulário
antes de enviá-lo.
121
Unidade III
As alterações podem não ser tão óbvias no início, porém, se observarmos a caixa de nome de usuário,
poderemos visualizar que agora ela possui um atributo obrigatório, ou seja, a entrada de e-mail, no
entanto, não possui mais um tipo de texto, agora ele tem um tipo de e-mail.
Figura 108 – Exemplo de marcação simulada de formulário HTML com elementos validáveis
122
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
No entanto, se iniciarmos a nossa digitação, ele mudará para vermelho e voltará a verde até que a
entrada seja sinalizada corretamente ou removida por completo, conforme ilustrado a seguir:
Utilizar válido e inválido é uma excelente maneira de fornecer feedback ao usuário, mas vê-los
imediatamente assim que o formulário é apresentado geralmente não é considerada uma boa prática.
123
Unidade III
Observação
Sendo assim, por esse motivo, normalmente não os utilizamos diretamente aos elementos de
entrada, de forma geral anexamos a um nome de classe/ID e, em consequência, verificamos, aplicamos
e utilizamos JavaScript quando o formulário é enviado.
O pseudosseletor marcado é utilizado ao atuar com elementos de caixa de seleção e rádio, ou seja,
sua premissa é simples e prática: se o elemento estiver marcado ou selecionado, essa regra será aplicada;
caso contrário, não será.
124
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Como as caixas de seleção e os botões de opção não alteram a cor, utilizaremos uma estratégia
muito diferente para esse exemplo, e iremos alterar o tamanho dos controles, sendo assim, iremos
adicionar as seguintes regras a nossa folha de estilos, conforme apresentado a seguir:
Figura 112 – Exemplo de estilos CSS que demonstram o uso do pseudosseletor verificado
A utilização de seletores verificados como este é o método utilizado, por exemplo, pelos kits de
ferramentas da interface do usuário, como o materialize e o bootstrap, para produzir botões de alternância
e rádio personalizado e verificar grupos desenvolvidos a partir de listas de ícones. Caso desejássemos
criar caixas de seleção personalizadas, bastaria combinar esse padrão com pseudoelementos, como
antes e depois, para assim adicionar/remover conteúdo dinamicamente a sua marcação, conforme
ilustrado a seguir.
125
Unidade III
Figura 113 – Resultado do exemplo de estilos CSS que demonstram o uso do pseudosseletor verificado
Saiba mais
6 ESTUDO DE CORES
Se dobrarmos isso, os 4 bits se tornarão 8 bits e o máximo que poderíamos seria ajustar para 255,
então FF (nosso maior número hexadecimal) se tornará 255 (nosso maior número decimal), sendo
que nosso objetivo aqui não é transformar isso em uma lição de matemática hexadecimal, e sim
demonstrar apenas que um valor de cor é composto de 256 (0 a 255) níveis de vermelho, verde e azul,
com 0 sendo nenhuma cor e 255 sendo o valor máximo de cor. Por exemplo, se quiséssemos um cinza
126
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
médio, poderíamos utilizar 127 para os valores de vermelho, verde e azul, que, quando traduzidos,
forneceriam #7F7F7F.
O CSS2 introduziu nomes próprios para algumas cores, mas elas não foram realmente divulgadas;
isso, no entanto, foi bastante expandido com CSS3, conforme apresentado a seguir.
Nome da cor Hexadecimal Cor Nome da cor Hexadecimal Cor Nome da cor Hexadecimal Cor
AliceBlue #F0F8FF Gainsboro #DCDCDC MistyRose #FFE4E1
AntiqueWhite #FAEBD7 GhostWhite #F8F8FF NavajoWhite #FFDEAD
Aqua #00FFFF Gold #FFD700 Navy #000080
Aquamarine #7FFFD4 GoldenRod #DAA520 OldLace #FDF5E6
Azure #F0FFFF Gray #808080 Olive #808000
Beige #F5F5DC Grey #808080 OliveDrab #6B8E23
Bisque #FFE4C4 Green #008000 Orange #FFA500
Black #000000 GreenYellow #ADFF2F OrangeRed #FF4500
BlanchedAlmond #FFEBCD HoneyDew #F0FFF0 Orchid #DA70D6
Blue #0000FF HotPink #FF69B4 PaleGoldenRod #EEE8AA
BlueViolet #8A2BE2 IndianRed #CD5C5C PaleGreen #98FB98
Brown #A52A2A Indigo #4B0082 PaleTurquoise #AFEEEE
BurlyWood #DEB887 Ivory #FFFFF0 PaleVioletRed #DB7093
CadetBlue #5F9EA0 Khaki #F0E68C PapayaWhip #FFEFD5
Chartreuse #7FFF00 Lavender #E6E6FA PeachPuff #FFDAB9
Chocolate #D2691E LavenderBlush #FFF0F5 Peru #CD853F
Coral #FF7F50 LawnGreen #7CFC00 Pink #FFC0CB
CornflowerBlue #6495ED LemonChiffon #FFFACD Plum #DDA0DD
Cornsilk #FFF8DC LightBlue #ADD8E6 PowderBlue #B0E0E6
Crimson #DC143C LightCoral #F08080 Purple #800080
Cyan #00FFFF LightCyan #E0FFFF RebeccaPurple #663399
DarkBlue #00008B LightGoldenRodYellow #FAFAD2 Red #FF0000
DarkCyan #008B8B LightGray #D3D3D3 RosyBrown #BC8F8F
DarkGoldenRod #B8860B LightGrey #D3D3D3 RoyalBlue #4169E1
DarkGray #A9A9A9 LightGreen #90EE90 SaddleBrown #8B4513
DarkGrey #A9A9A9 LightPink #FFB6C1 Salmon #FA8072
DarkGreen #006400 LightSalmon #FFA07A SandyBrown #F4A460
DarkKhaki #BDB76B LightSeaGreen #20B2AA SeaGreen #2E8B57
DarkMagenta #8B008B LightSkyBlue #87CEFA SeaShell #FFF5EE
DarkOliveGreen #556B2F LightSlateGray #778899 Sienna #A0522D
DarkOrange #FF8C00 LightSlateGrey #778899 Silver #C0C0C0
DarkOrchid #9932CC LightSteelBlue #B0C4DE SkyBlue #87CEEB
DarkRed #8B0000 LightYellow #FFFFE0 SlateBlue #6A5ACD
127
Unidade III
Nome da cor Hexadecimal Cor Nome da cor Hexadecimal Cor Nome da cor Hexadecimal Cor
DarkSalmon #E9967A Lime #00FF00 SlateGray #708090
DarkSeaGreen #8FBC8F LimeGreen #32CD32 SlateGrey #708090
DarkSlateBlue #483D8B Linen #FAF0E6 Snow #FFFAFA
DarkSlateGray #2F4F4F Magenta #FF00FF SpringGreen #00FF7F
DarkSlateGrey #2F4F4F Maroon #800000 SteelBlue #4682B4
DarkTurquoise #00CED1 MediumAquaMarine #66CDAA Tan #D2B48C
DarkViolet #9400D3 MediumBlue #0000CD Teal #008080
DeepPink #FF1493 MediumOrchid #BA55D3 Thistle #D8BFD8
DeepSkyBlue #00BFFF MediumPurple #9370DB Tomato #FF6347
DimGray #696969 MediumSeaGreen #3CB371 Turquoise #40E0D0
DimGrey #696969 MediumSlateBlue #7B68EE Violet #EE82EE
DodgerBlue #1E90FF MediumSpringGreen #00FA9A Wheat #F5DEB3
FireBrick #B22222 MediumTurquoise #48D1CC White #FFFFFF
FloralWhite #FFFAF0 MediumVioletRed #C71585 WhiteSmoke #F5F5F5
ForestGreen #228B22 MidnightBlue #191970 Yellow #FFFF00
Em qualquer lugar em que precisarmos especificar uma cor em suas regras de CSS, poderíamos
utilizar esses nomes de cores.
Saiba mais
Ao utilizar o nome da cor transparente, tornamos o objeto ao qual está aplicando o valor da cor
100% transparente, sendo assim, não há como variar o nível de transparência usando nomes de cores e
valores hexadecimais, porém podemos definir a regra CSS de opacidade em um elemento, a menos que
colocássemos como escolha a utilização de valores diretos de cores.
128
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Se as cores nomeadas não atuarem de forma suficiente e a notação hexadecimal for muito complicada
para o nosso estudo, temos uma boa notícia, sabendo que, com o CSS3, existe a possibilidade de definir
suas cores utilizando apenas um dos quatro novos tipos de dados, ou seja, eles são utilizados basicamente
especificando-os como uma palavra-chave seguida por um conjunto de valores de parâmetros entre
parênteses. Os valores entre parênteses podem assumir um valor fixo ou um valor percentual.
• # 7F7F7F
Todos esses três valores, quando utilizados em qualquer lugar no CSS em que uma cor possa ser
especificada, resultarão na geração da mesma cor.
6.3 Fontes
Durante quase toda a vida útil da especificação HTML/CSS, muitos desenvolvedores e designers
da web ficaram restritos ao mesmo conjunto principal de fontes para sua tipografia de atuação. Caso
quiséssemos utilizar uma determinada fonte, frequentemente precisávamos preparar o texto em um
pacote artístico ou processador de texto que tivesse acesso à fonte desejada e, na sequência, salvar a
imagem como um arquivo de imagem compatível com o browser ou até mesmo como uma captura de
tela do seu processador de texto para utilizar no documento HTML.
Erros de ortografia e alterações simples de texto levavam um tempo longo para serem corrigidas, e
isso realmente era uma tarefa árdua para qualquer outra coisa além dos banners ou manchetes simples.
Sendo assim, embora houvesse uma quantidade de frustações em torno do uso de fontes,
havia também boas e sólidas razões para se restringir as coisas, e essas praticamente se resumiam a
diferenças de plataforma.
Os browsers antigos não eram tão capazes quanto aqueles de hoje, e muitos sistemas operacionais
tinham apenas uma quantidade limitada de fontes instaladas, sendo assim, por isso, os comitês de
HTML formularam uma lista de fontes conhecidas que estavam praticamente garantidas em qualquer
plataforma com qualquer tipo de fonte e browser gráfico.
Não trataremos apenas de Windows e Mac, pois no início dos anos 1990 havia mais variações de
Unix e Linux e suas distribuições em seus ambientes desktop específicos. Então, nessa mesma época
(anos 1990), iniciou-se uma padronização utilizando itens como X11 e gerenciadores de janelas, como
Gnome e KDE, que auxiliaram nesse trabalho.
129
Unidade III
Observação
Só para se ter uma ideia da lista de fontes básicas restritas que quase sempre garantiam o
trabalho, tem-se:
• Sans-serif
• Serif
• Fantasy
• Cursive
• Monospace
Se quiséssemos especificar nossa fonte utilizando uma dessas opções, primeiramente obteríamos
a versão dessa plataforma e, embora nem sempre fosse exatamente idêntica, a aparência, o estilo e a
sensação estariam próximas o suficiente para que o layout do nosso design não fosse muito afetado e
prejudicado no resultado de sua apresentação.
Por exemplo, se especificássemos Impact Bold, Sans-serif, qualquer plataforma que tivesse Impact
Bold instalada seria exibida como pretendido, ou seja, se a fonte não estivesse disponível, a Sans-serif
seria utilizada, como padrão.
Não existia uma fonte original e muitos designers simplesmente desmoronavam pelo fato de não
renderizarem corretamente, porém com o CSS3, houve uma implementação de correção, que fornece
agora a capacidade de empacotar fontes em diferentes formatos com seu aplicativo da web, fazer o
130
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
download do servidor e utilizá-las se detectar que a plataforma de destino não as tem disponíveis, ou
até mesmo no caso de não estarem aderentes.
Isso ainda não significa que não se deva utilizar a lista de fontes seguras da web, porém basta uma
perda de conectividade e estaremos de volta à estaca zero.
Talvez a maneira mais eficiente de usar uma fonte para o design seja utilizar o site Font Squirrel, que
pode ser utilizado basicamente para converter uma fonte do seu sistema em um kit instantaneamente
utilizável de regras e folhas de estilo CSS3.
Saiba mais
Visite o site:
Utilizá-lo é muito simples; precisa clicar, adicionar fontes e selecionar os arquivos que deseja
adicionar, sendo que, depois de adicionar as fontes que deseja converter, necessita clicar na caixa de
contrato para continuar, e o Font Squirrel irá converter as fontes, conforme apresentado a seguir.
131
Unidade III
Saiba mais
https://www.dafont.com/pt/
Quando finalizar, um link de download será apresentado para um arquivo zip, que contém a fonte
em diversos formatos compatíveis com a web, além de diversos arquivos CSS e exemplos de marcação
HTML mostrando como utilizá-lo, conforme apresentado a seguir.
132
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Uma alternativa é a utilização de fontes do diretório de fontes abertas do Google Fonts, que faz
questão de utilizar essa ferramenta para possibilitar que todas as fontes listadas no site sejam utilizáveis
nos designs de páginas web.
Com o Google Fonts, podemos pesquisar, filtrar e comparar qualquer uma das fontes da lista e,
depois de escolher a fonte que desejamos utilizar, poderemos adicioná-la a uma coleção ou ver exemplos
rápidos de sua utilização.
Saiba mais
Visite:
https://fonts.google.com/
A página de utilização rápida é particularmente útil porque lista tudo o que precisamos saber para
adicionar de forma prática e ágil essa fonte a nossa página web.
133
Unidade III
Se optarmos por adicioná-lo a uma coleção, podemos continuar adicionando outras fontes e tudo
apareceria no nosso painel “Coleção”, na parte inferior da página, conforme ilustrado a seguir.
Resumo
Exercícios
Questão 1. (Cespe 2020) Assinale a opção que indica a propriedade usada no CSS3 para definir o
alinhamento de um elemento inline com relação ao seu elemento-pai.
A) alignment-baseline
B) alignment-adjust
C) background-image
D) background-position
E) line-boxes
Análise da questão
Justificativa: para responder corretamente à questão é preciso lembrar que o CSS é desenvolvido em
cascata ou na forma linear. Isso significa que ele segue uma hierarquia – Pai e filho.
Convém lembrar, também, que a classificação do tipo inline é usada quando se quer aplicar um estilo
a uma única ocorrência de um documento.
Para alinhar elemento inline (elemento-filho) com relação ao seu elemento-pai, usa-se a tag
alignment-baseline.
Questão 2. (AOCP 2016) Considere que foi desenvolvido o seguinte código CSS em um arquivo
externo chamado styles.css:
E que também foi criado o seguinte XHTML na mesma pasta que o arquivo style.css:
135
Unidade III
Quando esse XHTML for executado em um navegador web que implemente as especificações mais
atuais do CSS, como ficará a aparência do texto entre as tags <h1> e </h1>?
Análise da questão
A questão apresenta duas tags, uma interna e outra externa, declaradas na sessão <head>. Elas
terão a mesma prioridade. Além disso, há uma tag inline dentro do elemento <h1>, que terá prioridade
sobre as demais.
136
DESENVOLVIMENTO DE SOFTWARE PARA INTERNET
Para as duas tags de mesma prioridade, terá preferência a que for declarada por último, que no
caso da questão é a tag <h1> dentro da tag <style> do segundo bloco de código. Ela sobrescreverá os
atributos da tag que for declarada antes.
Ou seja:
> tag externa define a cor da fonte (vermelho), a família (arial) e o tamanho (36pt)=> color:red /
family:arial / size:36pt
> tag interna, que foi declarada depois (portanto, tem mais prioridade), define a cor da fonte (azul)
e família (comic sans) => color:azul / family:comic sans / size:36pt
> tag inline define apenas uma nova cor (verde) => color:verde / family:comic sans / size:36pt <-
essa será a configuração aplicada
137