Desenvolvimento de Aplicativos Web - COLTEC/MG
João Eduardo Montandon
Desenvolvimento de Aplicativos Web - COLTEC/MG
Solução: Isolar estilo do conteúdo
body {
background-color: #ff0;
}
div {
background-color: #f00;
padding: 20px;
}
div {
color: #f00;
padding: 20px;
}
Seletor: Elemento a ser customizado
Atributo: Propriedade que será alterada
Valor: Novo valor da propriedade
<html>
<head>
<title>Introdução HTML</title>
<style type="text/css">
h1{
text-align: center;
font-family: Arial;
}
p{
font-family: Arial;
text-align: justify;
}
</style>
</head>
<body>
<h1>Primeiro Capítulo</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
nisi ut aliquip ex ea commodo consequat.</p>
<h1>Segundo Capítulo</h1>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
nisi ut aliquip ex ea commodo consequat.</p>
</body>
</html>
style
)<style>
)<link>
+ arquivo.css)
<div style="float: right; width: 60%; display: block;">
<h3>About me</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua.</p>
</div>
<style>
, que por sua vez deve
estar dentro do header da página
<head>
<title>Introdução HTML</title>
<style type="text/css">
h1{
text-align: center;
font-family: Arial;
}
p{font-family: Arial;}
</style>
</head>
<link>
h1{
text-align: center;
font-family: Arial;
}
p{font-family: Arial;}
<head>
<title>Introdução HTML</title>
<link rel="stylesheet" type="text/css"
href="estilo.css">
</head>
#id
.class
<h1 id="titulo">Título
do Livro</h1>
h1{
text-align: center;
font-family: Arial;
}
p{font-family: Arial;}
#titulo {
text-align: center;
font-family: cursive;
}
<h1 class="center">Center-aligned
heading</h1>
<p class="center">Center-aligned
paragraph.</p>
.center {
text-align: center;
}
Desenvolvimento de Aplicativos Web - COLTEC/MG
João Eduardo Montandon
Desenvolvimento de Aplicativos Web - COLTEC/MG
Todo elemento HTML é visualizado como uma "caixa" pelo navegador
Box Model: "Caixa" que envolve o conteúdo dos elementos HTML da página
content
padding
border
margin
Margin
Espaçamento externo entre o elemento e a página
Os valores podem ser dados em:
px
, cm
, pt
inherit
auto
Margin
p {
margin-top: 10px;
margin-bottom: 10px;
margin-right: 15px;
margin-left: 8px;
}
Border
Permite customizar a o estilo, largura, e cor da borda do elemento
Border
p {
border-top-style: solid;
border-bottom-style: solid;
border-right-style: dotted;
border-left-style: dotted;
border-color: darkgreen;
border-top-width: 10px;
border-bottom-width: 10px;
}
Padding
Espaçamento interno entre a borda do elemento e seu próprio conteúdo
Os valores podem ser dados em:
px
, cm
, pt
inherit
auto
Padding
div {
padding-bottom: 20px;
padding-top: 20px;
padding-left: 5%;
padding-right: 5%;
}
Qual é a largura do elemento?
div {
width: 320px;
padding: 10px;
border: 5px solid gray;
margin: 0;
}
element width = width + left padding + right padding + left border + right border
element height = height + top padding + bottom padding + top border + bottom border
Desenvolvimento de Aplicativos Web - COLTEC/MG
João Eduardo Montandon
Desenvolvimento de Aplicativos Web - COLTEC/MG
Estilizar no CSS nem sempre é facil...
#comofas?
Os seletores CSS fornecem poderosos meios para estilização dos elementos:
Método básico de estilização
h1 {
text-align: center;
color: red;
}
#id
Utilizado para estilizar um elemento em específico na página
#header {
font-family: arial;
color: grey;
font-size: 20px;
}
.class
Utilizado para estilizar um grupo específico de elementos na página
.center {
text-align: center;
}
Permite estilizar vários elementos distintos
h1, h2, h3, h4, h5, h6 {
color: red;
}
*
Seletor universal: estiliza todos os elementos
* {
font-weight: bold;
font-style: italic;
}
Permite estilizar elementos com base na hierarquia da página
.noticia {
background-color: yellow;
}
.noticia p {
color: green;
}
Estiliza elementos que são filhos de um determinado elemento
body > p {
text-style: italic;
}
p {
text-style: bold;
}
Estiliza elementos vizinhos entre si
h2+p{
font-size: 24px;
color:grey
}
Algumas vezes desejamos estilizar partes de uma página web que não repesentam um elemento em si (primeira linha, eventos, etc.).
O CSS fornece um conjunto de seletores para detectar a ocorrência de tais situações
a:link
: Aplica o estilo a links que não foram visitados pelo usuário aindaa:visited
: Estiliza links que já foram visitadosa:hover
: Aplicado quando usuário passa o mouse sobre o elementoa:active
: Aplica o estilo no momento em que o usuário clica no link
a:link {
color: green;
}
a:visited {
color: green;
}
a:hover {
color: red;
}
a:active {
color: yellow;
}
:first-letter
: Aplica o estilo na primeira letra do parágrafo:first-line
: Aplica o estilo na primeira linha
p:first-letter {
font-size: 30px;
}
:before
& :after
.quote:before {
content: '\201C';
font-size: 30px;
}
.quote:after {
content: '\201D';
font-size:30px;
float: right;
margin-top: 10px;
}
:first-child
Estiliza o primeiro filho de um determinado elemento
li:first-child {
font-weight: bold;
}
:focus
Estiliza um elemento quando ele ganha destaque na página (click, tabbing)
input:focus {
box-shadow: 3px 3px 5px #888888;
}
Permite que os elementos a serem estilizados sejam selecionados por meio de seus atributos.
a[href$=".pdf"] {
background-image: url("pdf-icon.gif") ;
background-repeat: no-repeat;
padding-left:17px;
}
Desenvolvimento de Aplicativos Web - COLTEC/MG
João Eduardo Montandon
Desenvolvimento de Aplicativos Web - COLTEC/MG
Um bom layout de página é fundamental para uma boa experiência de navegação do usuário.
Quais as técnicas de layout existentes atualmente?
Algumas das técnias mais utilizadas:
Layout que possui dimensões fixas, geralmente definidas em pixels.
As dimensões da página são definidas em %, permitindo que sua visualização acompanhe qualquer tela.
Este layout define o tamanho dos componentes com base no tamanho da fonte do browser.
Isto é, o browser mantem uma largura fixa, porém essa largura é baseada no tamanho da fonte rendererizada pelo Browser.
Pros & Cons: As mesmas de um layout fixo
Layout fluído, porém com um limite máximo para largura. O layout da página é medida em colunas, e sua fluidez se baseia na manipulação dessas colunas
Ténica mais utilizada atualmente, uma das bases para Responsive Design
Para se criar um layout híbrido, deve-se seguir os seguintes passos:
Ao se utilizar um layout em colunas, geralmente encontramos problema ao nivelar colunas de cores distintas:
O que está Acontecendo? Os elementos em HTML calculam sua altura com base no conteúdo que possuem.
Solução: Ajustar a altura dos elementos filhos de forma que eles alcancem o elemento pai.
.container {
overflow: hidden;
}
.col_1, col_2, col_3, ..., col_n {
padding-bottom: 99999px;
margin-bottom: -99999px;
}
Desenvolvimento de Aplicativos Web - COLTEC/MG
João Eduardo Montandon
Desenvolvimento de Aplicativos Web - COLTEC/MG
Implementação de novos seletores que ajudam a especificar melhor os componentes a serem estilizados
/* Recursos mais precisos de seleção: */
h2:first-child { ... } // primeiro elemento filho de h2
div.text > div { ... } // toda div que é filha direta de div.text
h2 + header { ... } // todo header que é vizinho de h2
/* seletores de negação */
:not(.box) {
color: #00c;
}
:not(span) {
display: block;
}
/* Atributos específicos: */
input[type="text"] {
background: #eee;
}
CSS3 fornece suporte nativo a bordas de elementos.
div {
border: 2px solid;
border-radius: 25px;
}
CSS3 também provê recursos para manipulação de imagens de fundo.
body {
background: url(myImage.png);
background-size: 80px 60px;
background-repeat: no-repeat;
}
É possível inserir uma ou mais imagens no mesmo fundo.
body {
background: url(img_tree.gif), url(img_flwr.gif);
background-size: 100% 100%;
background-repeat: no-repeat;
}
Além disso, é possível definir qual os limites que a imagem de fundo deverá respeitar
div {
background: url(img_flwr.gif);
background-repeat: no-repeat;
background-size: 100% 100%;
background-origin: content-box;
}
Também é possível aplicar efeitos de gradiente (linear e radial).
#grad {
height: 200px;
background: linear-gradient(red, orange, yellow, green, blue);
}
#radial {
height: 200px;
/* Safari 5.1 to 6.0 */
background: -webkit-radial-gradient(center, circle cover, red, #000 73%);
/* For Opera 11.6 to 12.0 */
background: -o-radial-gradient(center, circle cover, red, #000 73%);
/* For Firefox 3.6 to 15 */
background: -moz-radial-gradient(center, circle cover, red, #000 73%);
/* Standard syntax */
background: radial-gradient(center, circle cover, red, #000 73%);
}
CSS3 fornece uma série de novos efeitos a serem aplicados no texto, entre eles sombra, wrapping, overflow, etc.
h1 {
text-shadow: 5px 5px 5px #FF0000;
}
CSS3 disponibiliza uma série de transformações que podem ser realizadas em elementos HTML, ex.: rotacionar, girar, transladar, etc.
#div {
-ms-transform: rotate(30deg);
-webkit-transform: rotate(30deg);
transform: rotate(30deg);
}
#div1 { transform: translate(50px,100px); }
#div2 { transform: scale(2,4); }
#div3 { transform: skew(30deg,20deg); }
Para mais informações sobre as transformações consulte este link.
#div1 {
transform: rotateX(120deg);
}
#div2 {
transform: rotateY(130deg);
}
Transições: Efeitos que permitem que um elemento transite de um estilo para outro gradualmente.
div {
width: 100px;
height: 100px;
background: red;
-webkit-transition: width 2s, height 2s;
transition: width 2s, height 2s;
}
div:hover {
width: 200px;
height: 150px;
}
Animações se comportam de forma similar às transições, porém não necessitam de interferência do usuário para serem executadas.
Para implementar uma animação:@keyframe
div {
/* ... */
-webkit-animation: myfirst 5s;
-webkit-animation-iteration-count: infinite;
animation: myfirst 5s;
animation-iteration-count: infinite;
}
@-webkit-keyframes myfirst {
from {background: red;}
to {background: yellow;}
}
@keyframes myfirst {
from {background: red;}
to {background: yellow;}
}
CSS: The missing manual; McFarland, David; O'Reilly; 2009 - 2a Edição
CSS Avançado; Joseph R. Lewis e Meitar Moskovitz; Novatec; 2010