Embora muitos novos recursos do CSS3 não sejam suportados por muitos navegadores, ou não sejam bem suportados. Mas, como desenvolvedor front-end, você não pode esperar até que todos os navegadores o suportem totalmente antes de aprender.
Quais novos recursos o CSS3 nos traz? Simplificando, CSS3 pode alcançar muitos efeitos que antes exigiam o uso de imagens e scripts em apenas algumas linhas de código. Como cantos arredondados, bordas de imagens, sombras de texto e sombras de caixa, etc. CSS3 não apenas simplifica o processo de design para desenvolvedores front-end, mas também acelera o carregamento da página.
Neste artigo, vamos dar uma olhada abrangente nos vários novos recursos do CSS3. Também não se esqueça de verificar alguns de nossos tutoriais e dicas de CSS anteriores:
Para usar a maioria dos recursos CSS3, temos que usar extensões específicas do fabricante junto com as propriedades originais. A razão é que até agora, a maioria dos navegadores suporta apenas algumas propriedades CSS3. E, infelizmente, algumas propriedades podem nem acabar sendo recomendadas pelo W3C, por isso é importante distingui-las das propriedades padrão, especificando propriedades específicas do navegador (e então usar aquelas compatíveis com os padrões quando forem redundantes, o estilo irá substituí-lo).
Obviamente, a desvantagem dessa abordagem é que ela resultará em uma folha de estilos confusa e em um desempenho inconsistente do site entre os navegadores. Afinal, não queremos reintroduzir a necessidade de hacks de navegadores privados em nossas folhas de estilo. As infames marcações, piscadas e outras tags do Internet Explorer foram usadas em várias folhas de estilo e se tornaram uma lenda na década de 1990; elas ainda tornam muitos sites existentes (em outros navegadores) inconsistentes ou até difíceis de ler. E não queremos nos colocar na mesma situação agora, certo?
No entanto, um site não precisa ter exatamente a mesma aparência em todos os navegadores. Às vezes é possível usar propriedades privadas em um navegador para obter efeitos específicos.
As propriedades privadas mais comuns são para navegadores baseados em Webkit (por exemplo, Safari), que começam com -webkit-, e navegadores baseados em Gecko (por exemplo, Firefox), que começam com -moz-, e Konqueror (-khtml -), Opera (-o-) e Internet Explorer (-ms-) têm suas próprias extensões de propriedade (atualmente apenas o IE8 suporta o prefixo -ms-)
Como designers profissionais, devemos estar cientes de que o uso dessas propriedades privadas fará com que nossas folhas de estilo não passem na validação . Portanto, colocá-los na versão final do estilo é atualmente raro. Mas em alguns casos, como experimentação ou aprendizagem, podemos pelo menos considerar escrevê-los em uma folha de estilos junto com propriedades CSS padrão.
Os seletores CSS são ferramentas incrivelmente poderosas: eles nos permitem especificar elementos HTML específicos em tags sem a necessidade de usar classes, IDs ou JavaScripts redundantes. E a maioria deles não foi adicionada recentemente ao CSS3, mas não foi amplamente utilizada como deveria. Seletores avançados são muito úteis se você estiver tentando obter uma etiqueta limpa e leve e uma melhor separação entre estrutura e desempenho. Eles podem reduzir o número de classes e IDs nas tags e facilitar a manutenção das folhas de estilo pelos designers.
Três novos seletores de atributos foram adicionados ao CSS3:
[att^="value"]
[att$="value"]
[att*="value"]
atributo de valor do elemento
a[title$="tweetCC"] {
position: absolute;
top: 0;
right: 0;
display: block;
width: 140px;
height: 140px;
text-indent: -9999px;
}
浏览器支持:只有IE6不支持CSS的属性选择器。IE7和IE8、Opera、Webkit核心和Gecko核心的浏览器都支持。所以在你的样式中使用属性选择器是比较安全的。
连字符
CSS3中唯一新引入的连字符是通用的兄弟选择器(同级)。它针对一个元素的有同一个父级节点的所有兄弟级别元素。
比如,给某个特定的div的同级的图片添加一个灰色的边框(div和图片应该有同一个父级节点),在样式表中定义下面的样式就足够了:
div~img {
border: 1px solid #ccc;
}
浏览器支持:所有的主要浏览器都支持这个通用的兄弟选择器除了我们最爱的IE6 !
伪类
或许在CSS3中增加最多的就是新的伪类了,这里是一些最有趣和最有用的:
- :nth-child(n)
让你基于元素在父节点的子元素的列表位置来指定元素。你可以是用数字、数字表达式或odd 和even 关键词(对斑马样式的列表很完美)。所以如果你想匹配在第四个元素之后的一个3个元素的分组,你可以简单的这样使用:
:nth-child(3n+4) { background-color: #ccc; }/*匹配第4,7,10,13,16,19...个元素*/
- :nth-last-child(n)
与上个选择器的思想同样,但是从后面匹配元素(倒序),比如,为了指定一个div里面的最后两个段落,我们可以使用下面的选择器:
div p:nth-last-child(-n+2)
- :last-child
匹配一个父节点下的最后一个子元素,等同于:nth-last-child(1) - :checked
匹配选择的元素,比如复选框 - :empty
匹配空元素(没有子元素)。 - :not(s)
匹配所有不符合指定声明(s)的元素。比如,如果你想让所有的没有使用”lead”类的段落的显示为黑色,可以这样写:
p:not([class*="lead"]) { color: black; }
Andrea Gandino在他的网站上使用:last-child 为选择器指定每篇日志的最后一个段落,并将其的外间距(margin)设置为0:
#primary .text p:last-child { margin: 0; }
浏览器支持: Webkit核心和Opera 浏览器支持所有新的CSS3 伪类,Firefox 2 和3 (Gecko核心) 只支持:not(s), :last-child, only-child, :root, :empty, :target, :checked, :enabled 和:disabled,但是Firefox 3.5 将更加广泛的支持CSS3 选择器。Trident核心浏览器(Internet Explorer)事实上不支持这些伪选择器。
伪元素
在CSS3中唯一引入的伪元素是::selection.它可以让你指定被用户高亮(选中)的元素。
浏览器支持:目前没有任何一款Internet Explorer 或Firefox 浏览器支持::selection 伪元素。Safari, Opera 和Chrome 均支持。
扩展阅读