Feed
Mostrando postagens com marcador css. Mostrar todas as postagens
Mostrando postagens com marcador css. Mostrar todas as postagens

18 outubro 2009

Mini-curso de Web Standards no 2° PHP-MG

Na última sexta-feira começou o segundo encontro de PHP de Minas Gerais na UNI-BH em Belo Horizonte.


Foram dois dias de evento, sendo que no primeiro, tivemos os mini-cursos em MySql, Linux, Joomla!, PHP, Web Standards entre outros.


Eu fui uma dos palestrantes do mini-curso com o tema "Web Standards: Melhores Práticas para Construção de Páginas Web", onde dei dicas, truques e mostrei algumas soluções com problemas frequentes como o crossbrowser para os IE(cas).


Fiz um PDF com mais detalhes dos assuntos citados e no final tem alguns links que considero relevantes no assunto, de blogs, revistas e livros.


Pra quem estava no curso, obrigada pela presença de todos e também pelo bom feedback que recebi. Foi uma experiência muito boa ensinar um pouco da experiência que eu tenho.


Abaixo a apresentação e o pdf.





;)

25 novembro 2008

Problema de redenrização de imagem Chrome e Safari



Problema de renderização de imagem Chrome e Safari

Hoje eu me deparei com um problema de renderização no Chrome e no Safari, e então o pessoal do meu Twitter falou que é por causa da mesma engine (webkit), que eles usam.


Bom, coloquei uma imagem no código sem o caminho do diretório preenchido: <li><img src="" alt="" class="bdrtop" /></li>. No CSS defini altura, largura, background e display block.


Até ai funcionou direitinho como eu queria, em todos os navegadores, incluindo o IEk 6. Juro! ¬¬


O problema é que no Chrome e no Safari, a rendenrização da imagem era feita com uma borda em volta. É a mesma coisa de quando uma imagem não é encontrada e fica aquela caixinha no lugar.


A solução que encontrei foi colocando essa imagem dentro de um span, então mudei a classe bdrtop para ele: <li><span class="bdrtop"><img src="" alt="" /></span></li>. No CSS coloquei essa imagem com display none.


É, eu sei que poderia ter deixado só o span dentro do li, mas ai deu problema no IEk 6. Quando eu tirava a tag img de dentro dos span's, o navegador ignorava a altura do span, ou do li que eu definia no CSS. Eu sei que não é uma boa prática, mas foi a solução mais rápida.


Pelo menos a dica de img com src vazio, sem que apareça a borda no Chrome e no Safari, funciona!


;)

20 novembro 2008

Donwload do livro A Arte e Ciência do CSS



The Art & Science of CSS

Hoje recebi na minha caixa de e-mail uma newsletter do sitepoint, site de artigos, notícias e tutoriais voltados para web designers e desenvolvedores web, falando que disponibilizaram o livro A Arte e a Ciência do CSS (The Art & Science of CSS). O donwload vai ficar disponível por tempo limitado, e para conseguir o link do pdf, basta segui-los no twitter ou assinar a newsletter.


;)

17 julho 2008

Estilizando tabelas no XHTML <table>



imagem

Quem me conhece sabe que odeio trabalhar com tabelas, sou completamente viciada em tableless, mas dependendo do desenvolvimento, não é muito funcional deixar de lado as tabelinhas.


Eu acho o uso de tableless essencial e muito mais fácil para sites que não exibirão dados tabulares. Com o uso das tags certas e CSS, é possível colocar os elementos de um site em qualquer posição. Mas não é a mesma coisa quando vamos carregar dados de um banco de dados, por exemplo.


O artigo de hoje é para mostrar uma maneira mais fácil de exibir esses dados com o uso de tabelas e estilização via CSS, sem a necessidade de inventar um tanto de classes e id's. Começando pelas principais tags:



  1. <table>: delimita a tabela. É a primeira tag;

  2. <caption>: título da tabela;

  3. <thead>: cabeçalho;

  4. <tfoot>: última linha da tabela;

  5. <tbody>: para delimitar o meio da tabela;

  6. <tr>: linhas;

  7. <td>/<th>: células.


ps.: Visite o tópico de tabelas da W3 para ler mais sobre outras tags e aplicações.


O código da nossa tabela:


<table border="0" cellpadding="0" cellspacing="0" summary="Essa tabela é para apresentar alguns dos sites que vocês podem me encontrar.">
    <caption>Onde encontrar a Cléo</caption>

    <thead>
        <tr>
            <th>Ícone</th>
            <th>Nome do site</th>
            <th>Link</th>
            <th>Descrição</th>
        </tr>
    </thead>

    <tfoot>
        <tr>
            <th colspan="4">by Cléo Morgause</th>
        </tr>
    </tfoot>

    <tbody>
        <tr>
            <td><img src="http://imgSRC/googlereader.png" title="Google Reader" alt="icone" /></td>
            <td>Google Reader</td>
            <td>http://www.google.com/reader/shared/13446221401570394803</td>
            <td>Artigos compartilhados de alguns dos blogs que eu acompanho.</td>
        </tr>
        <tr class="par">
            <td><img src="http://imgSRC/twitter.png" title="twitter" alt="icone" /></td>
            <td>twitter</td>
            <td>http://twitter.com/cleomorgause/</td>
            <td>Rede social que permite o envio de mensagens de até 140 caracteres. Útil para divulgação de conteúdo e links.</td>
        </tr>
        <tr>
            <td><img src="http://imgSRC/delicious.png" title="del.icio.us" alt="icone" /></td>
            <td>del.icio.us</td>
            <td>http://del.icio.us/cleomorgause/</td>
            <td>Coleção dos meus links favoritos e também aqueles que acho mais úteis. É ótimo, pois não me preocupo em ficar salvando bookmarks em HTML.</td>
        </tr>
        <tr class="par">
            <td><img src="http://imgSRC/internal.png" title="friendfeed" alt="icone" /></td>
            <td>friendfeed</td>
            <td>http://friendfeed.com/cleomorgause</td>
            <td>Junta todos os meus updates em um só lugar.</td>
        </tr>
        <tr>
            <td><img src="http://imgSRC/plurk.png" title="PLURK" alt="icone" /></td>
            <td>PLURK</td>
            <td>http://www.plurk.com/user/cleomorgause</td>
            <td>Funciona como o twitter, mas acho mais interativo e mais viciante.. hehe.</td>
        </tr>
    </tbody>
</table>

Agora que usamos as tags certas, fica muito mais fácil colocar estilo na tabela. Note que a única classe usada foi para diferenciar uma linha da outra, e mesmo assim só muda o background e o :hover da linha.


Abaixo o CSS que eu fiz:


* {
    margin:0;
    padding:0;
}

body {
    font:11px Verdana, Arial, Helvetica, sans-serif normal;
    color:#333;
}


/*TABELA*/
table {
    background:#D1DCDF;
    border:1px solid;
    border-collapse:collapse;
}

table, caption {
    margin:auto;
    width:748px;
}

caption {
    color:#003D5F;
    font:700 18px Georgia, "Times New Roman", Times, serif;
    padding:6px 4px 8px 0px;
    text-transform:uppercase;
}

    caption, thead th, tfoot th {
        text-align:center;
    }

    thead th, tfoot th {
        background:#305761;
        font-weight:700;
        padding-top:3px;
    }

    tbody th, tbody td {
        text-align:left;
        vertical-align:top;
    }

        tbody tr:hover {
            background:#88839E;
        }

    tfoot th {
        font:9px Georgia, "Times New Roman", Times, serif;
        text-align:right;
    }

        td, th {
            border:1px dotted;
            padding:5px;
        }

        .par {
            background-color:#90A8A8;
        }

            tbody tr.par:hover {
                background:#585370;
            }


/*CORES*/
table, thead th, tfoot th, tbody tr:hover, td, th {
    border-color:#003D5F;
}

thead th, tfoot th, tbody tr:hover, tbody tr.par:hover {
    color:#FFF;
}

No final a tabela deverá ficar assim.


Qualquer dúvida postem nos comentários.
Se preferirem, baixem o arquivo XHTML.


Links interessantes

No site CSS TABLE GALLERY tem uma lista com quase 100 CSS de estilização de tabelas disponíveis para download, além de poder enviar seu próprio estilo para outras pessoas baixarem. Vale a pena dar uma conferida.



;)

18 junho 2008

CSS: Regras (que eu uso) na Organização do Código


imagem

Organizar códigos é muito importante, principalmente quando trabalha-se em equipe. A organização dos códigos fontes de um projeto ajudará na eficiência do trabalho, pois ficará mais fácil fazer a manutenção do mesmo e procurar por alguma linha específica.


Vou mostrar algumas regrinhas que se aplicam aos códigos CSS para uma boa organização.

Ordene e agrupe por seletores


É conveniente separar o código por seletores, preferencialmente hierarquizados, já que o navegador lê o CSS de cima para baixo, assim, você mudará pequenas diferenças (cor, tamanho da fonte etc) de um seletor para outro.


A ordem que eu uso é: *, html, body, a:(link, hover, active, focus, visited), p, h(1, 2, 3, 4, 5, 6), table, tr, th, td, fieldset, legend, address, ul, li, ol, dl, form, input, select, label, textarea, div, img, span, #nomeId, .nomeClasse.


Esses são os seletores que eu mais uso nos projetos. No .css ficaria assim:


ul, li, .msg {}
ul {}
li {}
.msg {}

Mesmas propriedades para vários seletores


Acho que um dos maiores problemas dos CSS's é o fato de ter repetida as mesmas propriedades para vários seletores. Isso prejudica o código em sua estrutura e principalmente no seu tamanho, tanto visual quanto virtual. Veja o exemplo abaixo:


h1, h2, h3 {
font-weight:100;
}

a strong {
font-weight:100 !important;
}

strong {
font-style:italic;
font-weight:100;
}

#nav {
font-style:italic;
}

.msg {
font-style:italic;
}

/*Esse código pode ficar assim:*/
h1, h2, h3, strong {
font-weight:100;
}

a strong {
font-weight:100 !important;
}

strong, #nav, .msg {
font-style:italic;
}

Dica: Leia Dica de otimização de CSS I para ver uma técnica de aninhar as propriedades do CSS.


Declarações em ordem alfabética


Ordenar as propriedades em ordem alfabética ué. Entendeu não?


#container {
border:1px dashed;
color:#000;
margin:auto;
padding:1em 0;
width:700px;
}

Separar as cores


Separar as cores de bordas, backgrounds, textos etc. Se você precisar usar o mesmo CSS para outro projeto de cores diferentes não será necessário editar linha por linha.


body {
border-left:2px solid #040770;
border-top:2px solid #040770;
}

td {
background:#040770 url(../img/linkOn.gif) no-repeat right;
border:1px dashed #040770;
}

a:hover {
background-color:#040770;
padding-right:15px;
}

/*Com a separação do código fica assim:*/


body {
border-left:2px solid;
border-top:2px solid;
}

td {
background:url(../img/linkOn.gif) no-repeat right;
border:1px dashed;
}

a:hover {
padding-right:15px;
}

/*CORES*/
body, td {
color:#040770;
}

td, a:hover {
background-color:#040770;
}

Nomeie os blocos do CSS e separe-os com espaços duplos


Separe-os por blocos titulados, como no último exemplo. Fica mais fácil de entender.


/*LINKS*/
a:hover, a:active {
background:url(../img/linkOff.gif) no-repeat right;
color:#666;
cursor:pointer;
}


/*TEXTOS*/
p {
margin:15px 0;
}

p .msg {
margin:15px 6px;
}

p .ins {
list-style:none;
text-align:justify;
width:419px;
}


/*TITULOS*/
h1, h2, h3 {
margin-top:10px;
padding:0 0 3px 5px;
width:75%;
}

Últimas regras:


Tente não usar hacks (apesar dos IEk's não deixarem);

Use um CSS "global.css" para colocar as propriedades padrões e importar outros arquivos .css;

Se for um projeto maior, separe os arquivos .css para form's e seus filhos como input, label, textarea, .btn etc. Essa dica pode ser usada para outras situações como tabelas ou fieldsets;

Importe apenas o arquivo global.css no HTML;

Idente o código. A imagem do post é um ótimo exemplo;

Tente validar o seu código.



Depois desse artigo não devo continuar a série de otimização, acho que coloquei todas as que eu uso aqui. Mas se eu aprender alguma coisa nova, divulgo no blog.




;)

28 abril 2008

Top 10 web design WDCSS - Abril 2008

Vou tentar postar no WDCSS todo mês os designs de sites que achei mais bonitos, criativos, interativos etc. Acompanho algumas listas de design, e procuro salvar alguns screens na minha máquina para inspiração, tendências, imagens, enfim. Essa é, na minha opnião, dos sites que eu acessei, a lista dos melhores webdesigns desse mês.


;)


24 abril 2008

Dica de otimização de CSS I

Vou começar uma série de artigos para otimização de códigos CSS.


Há um tempinho atrás, na empresa que eu trabalho, me pediram para reduzir o tamanho dos arquivos CSS de um sistema web. Estavam muito bagunçados, sem falar que tinha um arquivo para praticamente cada página. Cuidado com o uso excessivo de arquivos separados, é certo usá-los, mas moderadamente para que não ocupem espaço na publicação/hospedagem.


Bom, a primeira dica que eu vou dar é a de "aninhar" algumas propriedades do CSS, chama-se Declaração Única.


Abaixo tem as principais propriedades que podem ser declaradas dessa forma:


Margin e Padding
.exemplo1 { /*completo*/
margin-top:0;
margin-right:5px;
margin-bottom:10px;
margin-left:15px;
/*auto, 0, px, pt, em ou %*/
}

.exemplo1 { /*aninhado*/
margin:0 5px 10px 15px;
/*top right bottom left*/
}

.exemplo2 {
margin-top:10px;
margin-right:20px;
margin-bottom:0;
margin-left:20px;
}

.exemplo2 {
margin:10px 20px 0;
/*top right/left bottom*/
}

.exemplo3 {
margin-top:0;
margin-right:auto;
margin-bottom:0;
margin-left:auto;
}

.exemplo3 {
margin:0 auto;
/*top/bottom left/right*/
}

.exemplo4 {
margin-top:50px;
margin-right:50px;
margin-bottom:50px;
margin-left:50px;
}

.exemplo4 {
margin:50px;
/*top/right/bottom/left*/
}


Border
.exemplo1 { /*completo*/
border-width:5px;
/*thin, thick, medium ou value
*default = medium*/
border-style:dotted;
/*solid, dashed, dotted, double etc
*default = none*/
border-color:blue;
/*nome em inglês, hex, rgb ou 0-255
*default = valor dos elementos de propriedades superiores*/
}

.exemplo1 { /*aninhado*/
border:5px dotted blue;
}

.exemplo2 {
border-right-width:2px;
border-right-style:solid;
border-right-color:#666666;
}

.exemplo2 {
border-right:2px solid #666
}

.exemplo3 {
border-top-width:3px;
border-right-width:2px;
border-bottom-width:3px;
border-left-width:2px;
}

.exemplo3 {
border-width:3px 2px;
}


Background
.exemplo1 { /*completo*/
background-color:#CCCCCC;
/*nome da cor em inglês, hex, rgb ou 0-255
*default = transparent*/
background-image:url(images/bg.gif);
/*url ou none
*default = none*/
background-repeat:no-repeat;
/*repeat, repeat-x, repeat-y ou no-repeat
*default = repeat*/
background-attachment:scroll;
/*fixed ou scroll
*default = scroll*/
background-position:top left;
/*top, right, left, bottom ou center
*default = 0% 0%*/
}

.exemplo1 { /*aninhado*/
background:#CCC url(images/bg.gif) no-repeat 0 0;
}


Font
.exemplo1 { /*completo*/
font-family:Verdana, Arial, Helvetica;
/*Verdana, Arial, "Times New Roman" etc
*default = fonte do navegador*/
font-size:12px;
/*xx-small, medium, x-large, value etc
*default = medium*/
font-weight:bold;
/*normal, bold, bolder, lighter, 100-900 ou inherit
*default = normal*/
font-style:italic;
/*normal, italic ou oblique
*default = normal*/
font-variant:normal;
/*normal ou small-caps
*default = normal*/
line-height:1.5;
/*normal, px, pt, em, num ou %
*default = normal*/
}

.exemplo1 { /*aninhado*/
font:italic bold 12px/1.5 Verdana, Arial, Helvetica;
}


List
.exemplo1 { /*completo*/
list-style-image:url(images/bullet.gif);
/*url ou none
*default = none*/
list-style-position:inside;
/*inside ou outside
*default = outside*/
list-style-type:square;
/*circle, disc, square etc
*default = disc*/
}

.exemplo1 { /*aninhado*/
list-style:square inside url(images/bullet.gif);
}

Tente usar essa dica nos seus códigos e com o tempo você acaba se acostumando a fazê-los sempre assim.


Abaixo listo alguns sites de otimização de CSS, e com o tempo, tentarei passar outros truques:


Clean CSS
Flumpcakes


Até mais. ;D


Fonte:CSS Shorthand Cheat Sheet by Michael