Orientação a Objetos em CSS

Postado por: Pedro Rogério em

A orientação a objetos, também conhecida como Programação Orientada a Objetos (POO) ou ainda em inglês Object-Oriented Programming (OOP) é um paradigma de análise, projeto e programação de sistemas de software baseado na composição e interação entre diversas unidades de software chamadas de objetos. Em alguns contextos, prefere-se usar modelagem orientada ao objeto, em vez de programação.

A análise e projeto orientados a objetos têm como meta identificar o melhor conjunto de objetos para descrever um sistema de software. O funcionamento deste sistema se dá através do relacionamento e troca de mensagens entre estes objetos.

Na programação orientada a objetos, implementa-se um conjunto de classes que definem os objetos presentes no sistema de software. Cada classe determina o comportamento (definido nos métodos) e estados possíveis (atributos) de seus objetos, assim como o relacionamento com outros objetos.

C++, C#, Java, Object Pascal, Objective-C, Python, Ruby e Smalltalk são exemplos de linguagens de programação orientadas a objetos. ActionScript, ColdFusion, Javascript, PHP (a partir da versão 4.0), Perl (a partir da versão 5) e VB.NET são exemplos de linguagens de programação com suporte a orientação a objetos.

Orientação a objetos no CSS

Uma das coisas mais complicadas em CSS é cada pessoa escreve as folhas de estilo em cascata da maneira que mais lhe convém, não pensando em otimização, gerando assim uma redundância de elementos. Foi pensando nisso que Nicolle Sullivan chegou a aproximação da Orientação a Objetos em CSS(OOCSS), de forma a criar módulos reutilizáveis de forma a serem criadas folhas de estilo mais claras, leves e limpas, inclusive em sites grandes.

Essa apresentação criada por Nicolle Sullivan leva a metáfora de se criar peças de lego para criar nossos sites, de forma que se mantenha a consistência do design, respeitando padrões web e a semântica.

Um exemplo do código pode ser baixado através do GitHub. Via Ajaxian.

Proteger imagens de serem salvas com CSS

Postado por: Pedro Rogério em

Você pode estar se perguntando o por que de utilizar técnicas desse tipo para proteger imagens de serem salvas no browser, digo-lhe que os motivos são vários e um deles é o copyright(imagens com direitos reservados), que muitas vezes os usuários não respeitam.

Essa técnica é utilizada pelo Flickr, não é 100% segura mas pode lhe evitar um pouco de dor de cabeça. Vamos a explicação da técnica: Iremos utilizar uma imagem transparente de 1px de largura e altura que ficará por cima da imagem real, com isso, quando o usuário tentar salvar a imagem, provavelmente irá clicar com o botão direito do mouse encima dela e escolherá a opção “Salvar imagem como”, e é aí que ele irá somente conseguir salvar a imagem transparente. A Marcação HTML utilizada no exemplo é a seguinte:

<div id="box">
  <img src="imagem_real_aqui" alt="" title="" />
  <img src="spaceball.gif" class="img_oculta" alt="" title="" />
</div>

Utilizamos a classe img_oculta que é a imagem transparente que ficará por cima da imagem real, utilizando técnica de position:relative e position:absolute:

#box {height:343px; margin:0 auto; position:relative; width:500px}
.img_oculta {height:343px; left:0; position:absolute; top:0; width:500px}

Simples, agora a imagem transparente sobrepõe a imagem real, “impedindo de ser salva”, vejam aqui nesse exemplo criado .

Rodapé sempre no rodapé com CSS

Postado por: Pedro Rogério em

Provavelmente você já deve ter tentado desenvolver um site onde possuia pouco conteúdo e gostaria de deixar o rodapé sempre no rodapé independente de possuir conteúdo ou não. Eu particularmente já passei por muitos problemas com isso, onde, quando o conteúdo excedia a área visível do site o rodapé não acompanha a área do conteúdo e ficava por cima do mesmo quebrando todo o layout. Veja um exemplo desse problema aqui.

Nesse exemplo fazemos o uso da seguinte marcação HTML:

<div id="header">
	...Conteúdo...
</div>
<div id="content">
	...Conteúdo...
</div>
<div id="rodape">
	...Conteúdo...
</div>

Uma marcação HTML simples, o grande segredo está no CSS:

html, body {height:100%}
#content {
	height:auto !important;
	height:100%;
	min-height:100%;
}
#rodape {
	position:absolute;
	bottom:0px;
	width:100%;
}

Essa seria basicamente a estrutura necessária para deixar o rodapé sempre no rodapé, mas esse código ainda não é satisfatório pois ocorre o problema do rodapé sobrepôr o conteúdo. Vamos agora a uma solução Crossbrowser:

<div id="wrap">
	<div id="header"></div>
    <div id="main"></div>
</div>
<div id="footer"></div>

Agora vamos a marcação CSS:

html, body, #wrap {height: 100%;}
body > #wrap {height: auto; min-height: 100%;}
#main {padding-bottom: 40px;}  /* deve ser a mesma altura do rodapé */
#footer {
	position: relative;
	margin-top: -40px; /* A mesma altura do rodapé, o valor deve ser negativo */
	height: 40px;
	clear:both
}

Agora vocês podem ver um exemplo do rodapé sempre no rodapé através de uma solução Crossbrowser. Essa solução foi retirada do site CSS Sticky Footer.

Colunas transparentes Cross Browser

Postado por: Pedro Rogério em

Colunas transparentes Cross Browser

Transparência é um efeito que, infelizmente, não têm obtido muito uso na web durante a sua história. Uma das maiores razões para isso é a falta de apoio para PNGs com canais alfa no IE6. Isso está começando a mudar com IE 7 e Firefox, ganhando mais e mais terreno nos sistemas Windows.

A maioria dos desenvolvedores web já deve estar ciente de que é possível utilizar PNGs com canais alfa, mas isso contempla vários problemas e não funciona muito bem quando você adiciona conteúdo em cima deles.

Existe uma maneira de tornar os conteúdos transparentes, usando a tag opacity e um código proprietário de opacidade para o Internet Explorer. O problema é como esta propriedade CSS se baseia, onde todos os filhos herdam a transparência também, que muitas vezes não é o efeito desejado.

Sabendo tudo isto, como vamos criar colunas transparentes que possam trabalhar em todos os navegadores? E se pudéssemos usar a propriedade de opacidade, mas ainda tem o conteúdo opaco?

Isso é possível utilizando algumas técnicas de posicionamento em CSS. O que vamos fazer é ter um elemento pai que contenha 2 filhos. Um fundo transparente que ocupa toda a largura e altura do pai, e um filho que contenha o conteúdo. Dessa forma podemos ter um fundo transparente, enquanto o conteúdo permanece opaco.

Vamos ao trabalho

A base da marcação que iremos utilizar é a seguinte:

<div id="column-1" class="container">
  <div class="overlay"></div>
  <div class="content">
    <h2>Content</h2>
  </div>
</div>

Continuar lendo »

CSS-Reset.com

Postado por: Pedro Rogério em

Os elementos HTML possuem, por padrão, uma formatação que diferencia-se de browser para browser. Utilizar técnicas de Reset CSS é uma boa pedida para minimizar os seus problemas no dia-a-dia.

Se não você não conhece nenhuma técnica de Reset CSS, aconselho a dar uma olhada em meu post onde eu mostro 10 Técnicas de Reset CSS, e recentemente eu acabei descobrindo um site, o CSS-Reset.com, que hospeda algumas dessas técnicas nos servidores do Google App Engine, evitando assim consumir banda de seu servidor. As técnicas são as seguintes:

Sua utilização é muito simples, basta adicionar a URL completa do arquivo CSS ao seu site. Se atentem a um exemplo de utilização:

<link href="http://www.css-reset.com/css/meyer.css" media="screen, projection" rel="stylesheet" type="text/css" />
<link href="http://www.css-reset.com/css/yui.css" media="screen, projection" rel="stylesheet" type="text/css" />
<link href="http://www.css-reset.com/css/ejeliot.css" media="screen, projection" rel="stylesheet" type="text/css" />

Via: WebIntenta

Páginas:«1...567891011...16»