quinta-feira, 31 de maio de 2012

IE Hacks - Adequando o site aos problemas do Internet Explorer


A sintaxe geral para escrever comentários condicionais é a mostrada a seguir:

Afirmativa
<!--[if condição]> HTML  < ![endif]-->
Negativa
< !--[if !condição] >  < ![IGNORE[--> < ![IGNORE[]] >  HTML  < !-- < ![endif]-- >

HTML

condição admite uma das seguintes sintaxes:

IE
Todas as versões do IE

lt IE versão
Versões anteriores a versão

lte IE versão
Versões anteriores ou igual a versão

IE versão
Somente a versão versão

gte IE versão
Versões posteriores ou igual a versão

gt IE versão
Versões posteriores a versão

versão é a versão do Internet Explorer, tipicamente 5, 5.5, 6, ou 7

HTML é a marcação HTML regular a ser incluida se a condição for ou não for satisfeita dependendo do tipo de condição declarada, se afirmativa ou negativa. Quando incluida, a marcação será iserida no código, no mesmo local onde se encontra o comentário condicional.

Para condições negativas a diretiva pode ser abreviada para --> se a condição for simplesmente IE. A sintaxe não abreviada é necessária somente quando o Internet Explorer tem que parsear o conteúdo do comentário.

A diretiva não é aceita em XML, assim seu uso é ilegal em XHTML. Uma solução é dividir a diretiva em dois comentários condicionais especiais: XHTML na qual XHTML é o mesmo nas duas diretivas. Notar que o Internet Explorer 7 e anteriores não reconhecem XHTML servido como XML, assim esta observação que acabamos de fazer aplicar-se-á, possivelmente, somente para versões futuras do IE.

Com a finalidade de evitar que o seu site "quebre" em versões futuras do Internet Explorer leia um artigo em inglês denominado Preparing your site for IE.next.

Transparencia de um elemento via CSS

O CÓDIGO:


.opacidade40 { opacity:0.4; filter:alpha(opacity=40); }

O USO:

<div> Div com 40% de transparência </div>

Função para Crop de imagens no PHP

O CÓDIGO:



function CroppedThumbnail($imgSrc,$thumbnail_width,$thumbnail_height) { //$imgSrc is a FILE - Returns an image resource.

if (!file_exists($imgSrc)) {
return "";
}

$imagem_file = ultimo_elemento($imgSrc, '/');
    $novo_path_imagem = str_replace($imagem_file, "thumb_".$imagem_file, $imgSrc);

if(file_exists($novo_path_imagem)){
return $novo_path_imagem;
}

    //getting the image dimensions
    list($width_orig, $height_orig) = getimagesize($imgSrc);
    $myImage = imagecreatefromjpeg($imgSrc);
    $ratio_orig = $width_orig/$height_orig;

    if ($thumbnail_width/$thumbnail_height > $ratio_orig) {
       $new_height = $thumbnail_width/$ratio_orig;
       $new_width = $thumbnail_width;
    } else {
       $new_width = $thumbnail_height*$ratio_orig;
       $new_height = $thumbnail_height;
    }

    $x_mid = $new_width/2;  //horizontal middle
    $y_mid = $new_height/2; //vertical middle

    $process = imagecreatetruecolor(round($new_width), round($new_height));

    imagecopyresampled($process, $myImage, 0, 0, 0, 0, $new_width, $new_height, $width_orig, $height_orig);
    $thumb = imagecreatetruecolor($thumbnail_width, $thumbnail_height);
    imagecopyresampled($thumb, $process, 0, 0, ($x_mid-($thumbnail_width/2)), ($y_mid-($thumbnail_height/2)), $thumbnail_width, $thumbnail_height, $thumbnail_width, $thumbnail_height);

    imagedestroy($process);
    imagedestroy($myImage);
    imagejpeg($thumb, $novo_path_imagem);

    return $novo_path_imagem;
}


O USO:

<img src=" < ?=CroppedThumbnail($foto,161,220);?>" width="161" height="220" alt="foto">

Forçar o download de arquivos com PHP

O CÓDIGO:


Salve o código abaixo em um arquivo chamado download.php.



   $arquivo = $_GET["arquivo"];
   if(isset($arquivo) && file_exists($arquivo)){
      switch(strtolower(substr(strrchr(basename($arquivo),"."),1))){
         case "pdf": $tipo="application/pdf"; break;
         case "exe": $tipo="application/octet-stream"; break;
         case "zip": $tipo="application/zip"; break;
         case "doc": $tipo="application/msword"; break;
         case "xls": $tipo="application/vnd.ms-excel"; break;
         case "ppt": $tipo="application/vnd.ms-powerpoint"; break;
         case "gif": $tipo="image/gif"; break;
         case "png": $tipo="image/png"; break;
         case "jpg": $tipo="image/jpg"; break;
         case "mp3": $tipo="audio/mpeg"; break;
         case "php": // deixar vazio por seurança
         case "htm": // deixar vazio por seurança
         case "html": // deixar vazio por seurança
      }
      header("Content-Type: ".$tipo);
      header("Content-Length: ".filesize($arquivo));
      header("Content-Disposition: attachment; filename=".basename($arquivo));
      readfile($arquivo);
      exit;
   }
?>


O USO:
<a href="download.php?arquivo=CAMINHO_DO_ARQUIVO">Clique aqui para fazer o download do arquivo</a>

quarta-feira, 2 de maio de 2012

Rotação de texto cross-browser via CSS (CSS Cross-browser Text Rotation)

.rotate {

/* Safari */
-webkit-transform: rotate(-90deg);

/* Firefox */
-moz-transform: rotate(-90deg);

/* IE */
-ms-transform: rotate(-90deg);

/* Opera */
-o-transform: rotate(-90deg);

/* Internet Explorer */
filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3);


hasta!