Mostrando entradas con la etiqueta CSS. Mostrar todas las entradas
Mostrando entradas con la etiqueta CSS. Mostrar todas las entradas

Comentarios condicionales, filtros y hacks

Comentarios condicionales

En ocasiones, cuando se diseña un sitio web, es preciso aplicar diferentes reglas y estilos en función del navegador. De esta forma, se pueden corregir los errores y limitaciones de un navegador sin afectar al resto de navegadores.
Microsoft introdujo en su navegador Internet Explorer 5 un mecanismo llamado "comentarios condicionales", que todavía incluyen las versiones más recientes como Internet Explorer 8, y que permite aplicar diferentes estilos CSS según la versión del navegador.
La sintaxis de los comentarios condicionales se basa en la de los comentarios normales de HTML:

La sintaxis de los comentarios condicionales permite que su contenido se ignore en cualquier navegador que no sea de la familia Internet Explorer.
Las expresiones se crean combinando identificadores, operadores y valores. El único identificador definido es IE, que permite crear el comentario condicional más simple:

El operador más sencillo definido por los comentarios condicionales es el operador de negación (!), que se indica delante de una expresión para obtener el resultado contrario:

Si se quiere restringir el alcance del comentario condicional a una única versión de Internet Explorer, se puede indicar directamente el número de la versión:

Además de las versiones específicas, también es posible restringir los comentarios condicionales a un grupo de versiones de Internet Explorer mediante los operadores "menor que" (lt), "mayor que" (gt), "menor o igual que" (lte), "mayor o igual que" (gte).

Por último, también se pueden utilizar otros operadores más complejos similares a los que se pueden encontrar en los lenguajes de programación. El operador AND (&) combina dos expresiones para crear una condición que sólo se cumple si se cumplen las dos expresiones. El operador OR (|) también combina dos expresiones y crea condiciones que se cumplen cuando al menos una de las dos expresiones se cumple. También se pueden utilizar paréntesis para crear expresiones avanzadas:

Las principales ventajas de los comentarios condicionales son:
  • Compatibilidad con cualquier navegador, ya que el resto de navegadores consideran que los comentarios condicionales son comentarios normales de HTML e ignoran su contenido.
  • No requiere el uso de lenguajes de programación como JavaScript, aunque se puede combinar con este tipo de técnicas para detectar dinámicamente el tipo y versión de navegador.
Nota Basándose en la idea de los comentarios condicionales, se ha desarrollado una técnica que permite crear hojas de estilos condicionales que aplican diferentes propiedades en función de la versión del navegador. Esta técnica se denomina Conditional CSS y requiere procesar las hojas de estilos en el servidor antes de servirlas a los usuarios. Los lenguajes de programación de servidor soportados son PHP, C y C++.

Filtros y hacks

Los filtros y hacks es otra de las técnicas disponibles para aplicar diferentes estilos y reglas CSS en función del navegador que visualiza los contenidos. Al contrario que los comentarios condicionales, los filtros y hacks constituyen una forma poco elegante y técnica de solucionar este problema.
La idea de los filtros y hacks consiste en aprovechar los errores y carencias de los navegadores para ocultar los estilos CSS que no se deben aplicar en ese navegador. El siguiente ejemplo muestra uno de los hacks más antiguos y conocidos que aprovecha un error en las versiones obsoletas de Internet Explorer:
#elemento {
  width: 300px;
  voice-family: "\"}\"";
  voice-family: inherit;
  width: 250px;
}
 
html > body #elemento {
  width: 300px;
}
Internet Explorer 5 y 5.5 no interpretan correctamente el modelo de cajas de CSS, por lo que no muestran los elementos con la misma anchura que el resto de navegadores. Si se quiere realizar un diseño con el mismo aspecto en cualquier navegador, es preciso utilizar propiedades diferentes para Internet Explorer 5/5.5 y el resto de navegadores.
Entre los muchos errores de Internet Explorer 5/5.5 se encuentra la imposibilidad de procesar correctamente la declaración voice-family: "\"}\"";. Por tanto, las reglas CSS anteriores se interpretan de la siguiente forma en cada navegador:
/* Internet Explorer 5/5.5 */
#elemento {
  width: 300px;
}
 
/* Internet Explorer 6 */
#elemento {
  width: 300px;
  width: 250px; 
}
 
/* Resto de navegadores */
#elemento {
  width: 300px;
  width: 250px; 
}
 
html > body #elemento {
  width: 250px;
}
El resultado final del hack anterior es que Internet Explorer 5/5.5 aplica un valor de 300px a la propiedad width y el resto de navegadores aplican un valor de 250px. Si se tienen en cuenta los márgenes, bordes y rellenos, el elemento se muestra con el mismo aspecto en cualquier navegador.
Algunos filtros y hacks son mucho más sencillos que el mostrado anteriormente. De hecho, existen tres filtros muy simples que se utilizan para aplicar diferentes estilos a cada versión de Internet Explorer. El primer filtro es * html, que aplica las reglas CSS a las versiones de Internet Explorer anteriores a la 7:
p {
  color: red;
}
* html p {
  color: blue;
}
Si se añade * html delante del selector de cualquier regla CSS, esa regla sólo se aplica a los navegadores de la familia Internet Explorer anteriores a la versión 7. De esta forma, en el ejemplo anterior los párrafos de la página se muestran de color azul en los navegadores Internet Explorer 5, 5.5 y 6, mientras que se muestran de color rojo en el resto de navegadores.
Otro de los hacks más utilizados es _ (guión bajo) que hace que una propiedad sólo se aplique a los navegadores de la familia Internet Explorer anteriores a la versión 7:
p {
  color: red;
  _color: blue;
}
La regla CSS anterior muestra los párrafos de la página de color rojo en cualquier navegador salvo en los navegadores Internet Explorer 5, 5.5 y 6, donde se muestran de color azul.
Por último, también existe el hack * (asterisco) que hace que una propiedad sólo se aplique en los navegadores de la familia Internet Explorer anteriores a la versión 8:
p {
  color: red;
  *color: blue;
}
En el ejemplo anterior, los párrafos de la página se muestran de color azul en cualquier navegador de la familia Internet Explorer cuya versión sea anterior a la 8 y se muestran de color rojo en cualquier otro navegador.
Se puede consultar la lista completa de filtros y hacks para cada navegador y cada versión en el sitio web http://centricle.com/ref/css/filters/
El uso de los filtros y hacks siempre debe considerarse como el último recurso para conseguir que los diseños tengan el mismo aspecto en cualquier navegador. Como los filtros y hacks se basan en aprovechar errores de los navegadores, su principal problema es que no garantizan su funcionamiento con las versiones más modernas de los navegadores. Además, los filtros y hacks complican el código CSS y lo hacen más difícil de leer y de mantener.
La mejor alternativa a los filtros y hacks es el uso de comentarios condicionales. Si no es posible el uso de comentarios condicionales, es preferible que el diseño de la página muestre ligeras diferencias visuales en cada navegador.
Afortunadamente, la importancia de los filtros y hacks es cada vez menor, ya que todos los navegadores modernos solucionan los graves errores de sus versiones anteriores e introducen menos errores nuevos.

Fuente: librosweb.es

Responsive Image: Experimenting With Context-Aware Image Sizing

An alternative approach to fluid images by Filament Group. This technique allows designers to create responsive layouts that serve different image sizes at different resolutions. Effectively, it allows designers to create mobile-optimized images for smaller screens, and then serve higher-resolution versions to larger screens. Filament Group has developed this technique that uses .htaccess files and JavaScript to serve up different sized images based on the screen width. An alternative solution is to use tools like TinySrc which allows you to merely prefix all large images in your source code with a TinySrc URL, and the tool does the rest.

Webputty

Genial! http://www.webputty.net/ Firebug superado! Permite modificar tus css, te lo va guardando y lo ves en tiempo real! Y puedo usarlo con Internet Explorer!

Site: webputty.net

Hacks específico para distintas versiones de IE

Una opción es declarar reglas de CSS que solo puedan ser leídas por Explorer.
Por ejemplo, agregando un asterisco (*) antes de la propiedad del CSS afectará solo al IE7 y agregando el guión bajo (_) afectara solamente al IE6. Sin embargo, estos métodos no son recomendados porque no cumple con los estándares de validación del CSS.

  • IE8 y versiones anteriores: para escribir reglas de CSS específicas para IE8 o versiones antiguas, agrega una backslash y 9 (9) al final, antes del semicolon.
  • IE7 y versiones anteriores: agrega un asterísco (*) antes de la propiedad CSS.
  • IE6: agrega guión bajo (_) antes de la propiedad.

Como instalar el IE tester para testerar tu web en todas las versiones de IE

:: IE 10 Preview ::

Note that IE10 preview IS NOT installed with IETester. The user must install it itself.
Also note that IE10 Preview requires Windows 7 to install on the machine.
Starting with IETester version 0.4.10, IE10 preview can be integrated into IETester by following those install steps :
  1. Install IETester version 0.4.10 or newer version.
  2. Install IE10 preview (click on "Install the Preview" button from this page)
  3. Open two explorer windows. On the first window, go to C:\Program Files\Internet Explorer Platform Preview\ folder, and on the second window, go to C:\Program Files\Core Services\IETester\ie10 :
    • Note: On x64 platforms, the folders are respectively C:\Program Files(x86)\Internet Explorer Platform Preview\ and C:\Program Files(x86)\Core Services\IETester\ie10
  1. Copy the folder iepreview.exe.local from C:\Program Files\Internet Explorer Platform Preview\ to C:\Program Files\Core Services\IETester\ie10 (respectively C:\Program Files(x86)\Internet Explorer Platform Preview\ and C:\Program Files(x86)\Core Services\IETester\ie10 on x64 platforms):
  2. In the C:\Program Files\Core Services\IETester\ie10 (C:\Program Files(x86)\Core Services\IETester\ie10 on x64 platforms) folder, rename the folder iepreview.exe.local to ietester.ie10.exe.local :
  3. Done ! You don't even need to restart IETester, the IE10 button should become active after a few seconds.

Compatibilidades entre CSS e IE

Interesante resumen ern una clara gráfica sobre las reglas CSS compatibles o no con IE.

Note  All columns marked "Internet Explorer 9" are preliminary content. They may be changed substantially prior to commercial release of the software described herein.
With each new release of Windows Internet Explorer, support for the World Wide Web Consortium (W3C) Cascading Style Sheets (CSS) standard has steadily improved. Internet Explorer 6 was the first fully CSS, Level 1-compliant version of Internet Explorer. Internet Explorer 8 is fully compliant with the CSS, Level 2 Revision 1 (CSS 2.1) specification and supports some features of CSS Level 3 (CSS3). Internet Explorer 9 adds even more support for many CSS3 modules.
Note  It is important to remember that many CSS3 modules are still in the Working Draft or Last Call stages. Until they reach the Candidate Recommendation stage, they could change significantly. For more information, see the latest CSS3 draft modules.
If your Web site targets browsers that include earlier versions of Internet Explorer, you want to know the level of CSS compliance for those versions. This article provides an at-a-glance look at CSS compliance across recent versions of Internet Explorer, including support in Internet Explorer 9.
Note  CSS features that are new to Internet Explorer 8 will only work when your page is rendered in IE8 mode (or higher). Similarly, CSS features that are new to Internet Explorer 9 will only work when your page is rendered in IE9 Standards mode. For more information on document compatibility modes, see Defining Document Compatibility.
This article's organization is loosely based on that of the CSS reference documentation on MSDN. It contains the following sections:

Introduction

Each table lists support status information for grouped CSS features across recent versions of Internet Explorer. In each section, the first table represents features introduced in CSS 2.1 or earlier, and the second table represents features planned (by the W3C) for CSS3.
A value of "Yes" in a cell indicates that that feature is implemented in that version of Internet Explorer.
A value of "Partial" in a cell indicates that that feature is only partially implemented in that version of Internet Explorer. For more information, click the link to view that feature's reference page on MSDN.
A value of "No" in a cell indicates that that feature is not implemented in that version of Internet Explorer.
A value of "Updated" in a cell indicates that the feature has been updated in Internet Explorer 9.

At-rules

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
@charsetNoYesYesYesYesYes
@importYesYesYesYesYesYes
@mediaNoYesYesYesYesUpdated
@pagePartialPartialPartialPartialYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
@font-faceNoYesYesYesYesUpdated
@namespaceNoNoNoNoNoYes

Selectors

Element Selectors

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
.value { sRules }Class (see Note)PartialPartialPartialYesYesYes
#value { sRules }IDYesYesYesYesYesYes
E { sRules }TypeYesYesYesYesYesYes
* { sRules }UniversalNoNoNoYesYesYes
Note   Prior to Internet Explorer 7, there was a two-class selector limit per element.

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
ns|E { sRules }NamespacedNoNoNoNoNoYes

Attribute Selectors

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
[att=val] { sRules }Equality [=]NoNoNoYesYesYes
[att] { sRules }Existence []NoNoNoYesYesYes
[att|=val] { sRules }Hyphen [|=]NoNoNoYesYesYes
[att~=val] { sRules }Whitespace [~=]NoNoNoYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
[ns|attr] { sRules }NamespacedNoNoNoYesYesYes
[att^=val] { sRules }Prefix [^=]NoNoNoYesYesYes
[att*=val] { sRules }Substring [*=]NoNoNoYesYesYes
[att$=val] { sRules }Suffix [$=]NoNoNoYesYesYes

Combinators

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
E + F { sRules }Adjacent Sibling (+)NoNoNoYesYesYes
E > F { sRules }Child (>)NoNoNoYesYesYes
E F { sRules }DescendantYesYesYesYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
E ~ F { sRules }General Sibling (~)NoNoNoYesYesYes

Pseudo-classes

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
:active { sRules }:activeNoNoNoPartialYesYes
:first-child { sRules }:first-childNoNoNoYesYesYes
:focus { sRules }:focusNoNoNoNoYesYes
:hover { sRules }:hoverPartialPartialPartialYesYesYes
:lang(C) { sRules }:lang()NoNoNoNoYesYes
:link { sRules }:linkYesYesYesYesYesYes
:visited { sRules }:visitedYesYesYesYesYesYes
@page :first { sRules }@page :firstNoNoNoNoYesYes
@page :left { sRules }@page :leftNoNoNoNoYesYes
@page :right { sRules }@page :rightNoNoNoNoYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
:root { sRules }:rootNoNoNoNoNoYes
:nth-child(n) { sRules }:nth-child(n)NoNoNoNoNoYes
:nth-last-child(n) { sRules }:nth-last-child(n)NoNoNoNoNoYes
:nth-of-type(n) { sRules }:nth-of-type(n)NoNoNoNoNoYes
:nth-last-of-type(n) { sRules }:nth-last-of-type(n)NoNoNoNoNoYes
:last-child { sRules }:last-childNoNoNoNoNoYes
:first-of-type { sRules }:first-of-typeNoNoNoNoNoYes
:last-of-type { sRules }:last-of-typeNoNoNoNoNoYes
:only-child { sRules }:only-childNoNoNoNoNoYes
:only-of-type { sRules }:only-of-typeNoNoNoNoNoYes
:empty { sRules }:emptyNoNoNoNoNoYes
:target { sRules }:targetNoNoNoNoNoYes
:not(s) { sRules }:not(s)NoNoNoNoNoYes
:enabled { sRules }:enabledNoNoNoNoNoYes
:disabled { sRules }:disabledNoNoNoNoNoYes
:checked { sRules }:checkedNoNoNoNoNoYes
:indeterminate { sRules }:indeterminateNoNoNoNoNoYes
:default { sRules }:defaultNoNoNoNoNoNo
:valid { sRules }:validNoNoNoNoNoNo
:invalid { sRules }:invalidNoNoNoNoNoNo
:in-range { sRules }:in-rangeNoNoNoNoNoNo
:out-of-range { sRules }:out-of-rangeNoNoNoNoNoNo
:required { sRules }:requiredNoNoNoNoNoNo
:optional { sRules }:optionalNoNoNoNoNoNo
:read-only { sRules }:read-onlyNoNoNoNoNoNo
:read-write { sRules }:read-writeNoNoNoNoNoNo

Pseudo-elements

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
:after { sRules }:afterNoNoNoNoYesYes
:before { sRules }:beforeNoNoNoNoYesYes
:first-letter { sRules }:first-letterNoYesYesYesYesYes
:first-line { sRules }:first-lineNoYesYesYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
::before { sRules }::beforeNoNoNoNoNoNo
::after { sRules }::afterNoNoNoNoNoNo
::first-letter { sRules }::first-letterNoNoNoNoNoNo
::first-line { sRules }::first-lineNoNoNoNoNoNo
::selection { sRules }::selectionNoNoNoNoNoYes
::value { sRules }::valueNoNoNoNoNoNo
::choices { sRules }::choicesNoNoNoNoNoNo
::repeat-item { sRules }::repeat-itemNoNoNoNoNoNo
::repeat-index { sRules }::repeat-indexNoNoNoNoNoNo

Properties

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ sRule!important  }!important Declaration PartialPartialPartialYesYesYes

2D Transforms

CSS 3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ transform : sFunction }-ms-transformNoNoNoNoNoYes
{ transform-origin : sOrigin }-ms-transform-originNoNoNoNoNoYes

Lists

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ list-style : sStyle }list-styleYesYesYesYesYesYes
{ list-style-image : sStyle }list-style-imageYesYesYesYesYesYes
{ list-style-position : sStyle }list-style-positionYesYesYesYesYesYes
{ list-style-type : sStyle }list-style-typeNoNoNoPartialYesYes

Color and Background

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ color : sColor }colorYesYesYesYesYesYes
{ background : sBackground }backgroundYesYesYesYesYesUpdated
{ background-attachment : sAttachment }background-attachmentPartialPartialPartialYesYesUpdated
{ background-color : sColor }background-colorYesYesYesYesYesUpdated
{ background-image : sLocation }background-imageYesYesYesYesYesUpdated
{ background-position : sPosition }background-positionPartialPartialPartialPartialYesUpdated
{ background-repeat : sRepeat }background-repeatYesYesYesYesYesUpdated

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ color-profile : sProfile }color-profileNoNoNoNoNoNo
{ rendering-intent : sIntent }rendering-intentNoNoNoNoNoNo
{ background : sBackground1,
sBackground2, etc. }
background (multiple)NoNoNoNoNoYes
{ background-clip : sClip }background-clipNoNoNoNoNoYes
{ background-origin : sOrigin }background-originNoNoNoNoNoYes
{ background-break : sBreak }background-breakNoNoNoNoNoNo
{ background-size : sSize }background-sizeNoNoNoNoNoYes

Font and Text

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ direction : sDirection }directionYesYesYesYesYesYes
{ font : sFont }fontYesYesYesYesYesYes
{ font-family : sFamily }font-familyYesYesYesYesYesYes
{ font-size : sSize }font-sizeYesYesYesYesYesYes
{ font-style : sStyle }font-styleYesYesYesYesYesYes
{ font-variant : sVariant }font-variantYesYesYesYesYesYes
{ font-weight : sWeight }font-weightPartialPartialPartialPartialYesYes
 { letter-spacing : sSpacing }letter-spacingYesYesYesYesYesYes
 { line-height : sHeight }line-heightYesYesYesYesYesYes
{ text-align : sAlign }text-align YesYesYesYesYesYes
{ text-decoration : sDecoration }text-decoration YesYesYesYesYesYes
{ text-indent : sIndent }text-indent YesYesYesYesYesYes
{ text-transform : sTransform }text-transform YesYesYesYesYesYes
{ unicode-bidi : sAlign }unicode-bidi YesYesYesYesYesYes
{ vertical-align : sAlign }vertical-alignYesYesYesYesYesYes
{ white-space : sWrap }white-space PartialPartialPartialPartialYesYes
{ word-spacing : sSpacing }word-spacing PartialPartialPartialPartialYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ font-effect : sEffect }font-effectNoNoNoNoNoNo
{ font-emphasize : sEmphasize }font-emphasizeNoNoNoNoNoNo
{ font-size-adjust : sSizeAdjust }font-size-adjustNoNoNoNoNoNo
{ font-smooth : sSmooth }font-smoothNoNoNoNoNoNo
{ font-stretch : sStretch }font-stretchNoNoNoNoNoNo
{ hanging-punctuation : sHangingPunctuation }hanging-punctuationNoNoNoNoNoNo
{ punctuation-trim : sTrim }punctuation-trim NoNoNoNoNoNo
{ ruby-align : sRubyAlign }ruby-alignYesYesYesYesYesYes
{ ruby-overhang : sRubyOverhang }ruby-overhangYesYesYesYesYesYes
{ ruby-position : sRubyPlacement }ruby-position YesYesYesYesYesYes
{ ruby-span : sRubySpan }ruby-spanNoNoNoNoNoNo
{ text-align-last : sAlignLast }text-align-last PartialPartialPartialPartialPartialPartial
{ text-emphasis : sEmphasis }text-emphasis NoNoNoNoNoNo
{ text-justify : sJustify }text-justify NoYesYesYesYesYes
{ text-outline : sOutline }text-outline NoNoNoNoNoNo
{ text-overflow : sOverflow}text-overflow NoPartialPartialPartialPartialPartial
{ text-shadow : sShadow }text-shadow NoNoNoNoNoNo
{ text-wrap : sWrap }text-wrap NoNoNoNoNoNo
{ word-break : sBreak }word-break PartialPartialPartialPartialPartialPartial
{ word-wrap : sWrap }word-wrap YesYesYesYesYesYes
{ writing-mode : sFlow }writing-mode YesYesYesYesYesYes

Generated Content

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ content : sContent }contentNoNoNoNoYesYes
{ counter-increment : sCounter }counter-incrementNoNoNoNoYesYes
{ counter-reset : sCounter }counter-resetNoNoNoNoYesYes
{ quotes : sQuotes }quotesNoNoNoNoYesYes

Border and Layout

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ border : sBorder }border YesYesYesYesYesYes
{ border-bottom : sBottom }border-bottomNoYesYesYesYesYes
{ border-bottom-color : sColor }border-bottom-colorYesYesYesYesYesYes
{ border-bottom-style : sStyle }border-bottom-styleNoYesYesYesYesYes
{ border-bottom-width : sWidth }border-bottom-widthNoYesYesYesYesYes
{ border-collapse : sCollapse }border-collapsePartialPartialPartialPartialYesYes
{ border-color : sColor }border-colorYesYesYesYesYesYes
{ border-left : sLeft }border-leftNoYesYesYesYesYes
{ border-left-color : sColor }border-left-colorYesYesYesYesYesYes
{ border-left-style : sStyle }border-left-styleNoYesYesYesYesYes
{ border-left-width : sWidth }border-left-widthNoYesYesYesYesYes
{ border-right : sRight}border-rightNoYesYesYesYesYes
{ border-right-color : sColor }border-right-colorYesYesYesYesYesYes
{ border-right-style : sStyle }border-right-styleNoYesYesYesYesYes
{ border-right-width : sWidth }border-right-widthNoYesYesYesYesYes
{ border-spacing : sSpacing }border-spacingNoNoNoNoYesYes
{ border-style : sStyle }border-styleNoPartialPartialPartialYesYes
{ border-top : sTop }border-topNoYesYesYesYesYes
{ border-top-color : sColor }border-top-colorYesYesYesYesYesYes
{ border-top-style : sStyle }border-top-styleNoYesYesYesYesYes
{ border-top-width : sWidth }border-top-widthNoYesYesYesYesYes
{ border-width : sWidth }border-widthYesYesYesYesYesYes
{ caption-side : sLocation }caption-sideNoNoNoNoYesYes
{ clear : sClear }clearYesYesYesYesYesYes
{ empty-cells : sEmptyCells }empty-cellsNoNoNoPartialYesYes
{ float : sFloat }floatYesYesYesYesYesYes
{ margin : sMargin }marginYesYesYesYesYesYes
{ margin-bottom : sHeight }margin-bottomYesYesYesYesYesYes
{ margin-left : sWidth }margin-leftYesYesYesYesYesYes
{ margin-right : sWidth }margin-rightYesYesYesYesYesYes
{ margin-top : sHeight }margin-topYesYesYesYesYesYes
{ padding : sPadding }paddingYesYesYesYesYesYes
{ padding-bottom : sPadding }padding-bottomYesYesYesYesYesYes
{ padding-left : sPadding }padding-leftYesYesYesYesYesYes
{ padding-right : sPadding }padding-rightYesYesYesYesYesYes
{ padding-top : sPadding }padding-topYesYesYesYesYesYes
{ table-layout : sLayout }table-layoutYesYesYesYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ border-break : sBreak }border-breakNoNoNoNoNoNo
{ border-image : sImage }border-imageNoNoNoNoNoNo
{ border-radius : sRadius }border-radiusNoNoNoNoNoYes
{ box-shadow : sShadow }box-shadow NoNoNoNoNoYes

Positioning

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ bottom : sBottom }bottom NoPartialPartialPartialYesYes
{ clip : sClip }clip NoYesYesYesYesYes
{ display : sDisplay }display PartialPartialPartialPartialYesYes
{ height : sHeight }heightYesYesYesYesYesYes
{ left : sPosition }leftNoPartialPartialPartialYesYes
{ max-height : sMaxHeight }max-height NoNoNoYesYesYes
{ max-width : sWidth }max-widthNoNoNoYesYesYes
{ min-height : sMinHeight }min-height NoNoNoYesYesYes
{ min-width : sMinWidth }min-widthNoNoNoYesYesYes
{ overflow : sOverflow }overflowPartialPartialPartialYesYesYes
{ position : sPosition }position PartialPartialPartialYesYesYes
{ right : sPosition }rightNoPartialPartialPartialYesYes
{ top : sTop }topNoPartialPartialPartialYesYes
{ visibility : sVisibility }visibilityYesYesYesYesYesYes
{ width : sWidth }widthYesYesYesYesYesYes
{ z-index : vOrder }z-indexPartialPartialPartialPartialYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ overflow-x : sOverflow }overflow-xPartialPartialPartialYesYesYes
{ overflow-y : sOverflow }overflow-yPartialPartialPartialYesYesYes

Printing

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ orphans : nLines }orphansNoNoNoNoYesYes
{ page-break-after : sBreak }page-break-afterYesYesYesYesYesYes
{ page-break-before : sBreak }page-break-beforeYesYesYesYesYesYes
{ page-break-inside : sBreak }page-break-insideNoNoNoNoYesYes
{ widows : nLines }widowsNoNoNoNoYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ fit : sFit }fitNoNoNoNoNoNo
{ fit-position : sPosition }fit-positionNoNoNoNoNoNo
{ image-orientation : sOrientation }image-orientation NoNoNoNoNoNo
{ page : sPage }pageNoNoNoNoNoNo
{ size : sSize }sizeNoNoNoNoNoNo

User Interface

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ cursor : sCursor }cursorNoYesYesYesYesYes
{ outline : sOutline }outlineNoNoNoNoYesYes
{ outline-color : sColor }outline-colorNoNoNoNoYesYes
{ outline-style : sStyle }outline-styleNoNoNoNoYesYes
{ outline-width : sWidth }outline-widthNoNoNoNoYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
{ appearance : sAppearance }appearance NoNoNoNoNoNo
{ box-sizing : sSizing }box-sizingNoNoNoNoYesYes
{ icon : sIcon }iconNoNoNoNoNoNo
{ nav-down : sNavDown }nav-downNoNoNoNoNoNo
{ nav-index : sIndex }nav-index NoNoNoNoNoNo
{ nav-left : sNavLeft }nav-leftNoNoNoNoNoNo
{ nav-right : sNavRight }nav-rightNoNoNoNoNoNo
{ nav-up : sNavUp }nav-upNoNoNoNoNoNo
{ outline-offset : sOffset }outline-offsetNoNoNoNoNoNo
{ outline-radius : sRadius }outline-radiusNoNoNoNoNoNo
{ resize : sResize }resizeNoNoNoNoNoNo

Multi-column Layout

Internet Explorer does not support any of the CSS3 multi-column layout properties.

Speech

Internet Explorer does not support any of the CSS3 speech properties.

Media Queries

The following CSS3 media query properties are supported in Internet Explorer 9:
  • width
  • height
  • device-width
  • device-height
  • orientation
  • aspect-ratio
  • device-aspect-ratio
  • color
  • color-index
  • monochrome
  • resolution

Values

Numbers

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
<number>YesYesYesYesYesYes
<length>YesYesYesYesYesYes
<percentage>YesYesYesYesYesYes
<integer>YesYesYesYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
<angle>NoNoNoNoNoYes
<time>NoNoNoNoNoYes
<frequency>NoNoNoNoNoNo

Strings

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
<string>YesYesYesYesYesYes
\codeNoNoYesYesYesYes

Shapes

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
rect()NoYesYesYesYesYes

Functions

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
url()YesYesYesYesYesYes
counter()NoNoNoNoYesYes
attr()NoNoNoNoYesUpdated

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
calc()NoNoNoNoNoYes

Colors

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
<color> (names)YesYesYesYesYesYes
<color> (#rrggbb or #rgb Notation)YesYesYesYesYesYes
<color> (rgb(r,g,b) Notation)YesYesYesYesYesYes
<color> (system colors)YesYesYesYesYesYes
transparentNoNoPartialYesYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
<color> (rgba(r,g,b,a) Notation)NoNoNoNoNoYes
<color> (hsl(h,s,l) Notation)NoNoNoNoNoYes
<color> (hsla(h,s,l,a) Notation)NoNoNoNoNoYes

Keywords

CSS 2.1:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
autoNoNoPartialYesYesYes
inheritNoNoNoNoYesYes

CSS3:
Internet Explorer 5Internet Explorer 5.5Internet Explorer 6Internet Explorer 7Internet Explorer 8Internet Explorer 9
initialNoNoNoNoNoNo

Units

The following units are supported in Internet Explorer 3.0 and later:
  • px
  • pt
  • pc
  • cm
  • mm
  • in
  • em
  • ex
  • %
The following CSS3 units are supported in Internet Explorer 9:
  • deg
  • grad
  • rad
  • turn
  • ms
  • s
  • rem
  • vw
  • vh
  • vm
  • ch
The following units are not supported in any version of Internet Explorer:
  • Hz
  • kHz
  • gd

See Also


Fuente: http://msdn.microsoft.com/en-us/library/cc351024%28VS.85%29.aspx

IE tester, con IE9

Para comprobar mi página web en todas las versiones de Internet Explorer, @Quintin Lippiatt me sugirió un programa gratuito, IETester que lo hace de maravilla. Le falta la versión de IE9, puesto que no han seguido desarrollando dicha aplicación. Aquí copio un pequeño tutorial de cómo añadir manuealmente el IE9 a nuestro IEtester.

Also note that IE9 Preview requires Vista SP2 or Windows 7 to install on the machine.

Starting with IETester version 0.4.3, IE9 preview can be integrated into IETester by following those install steps :

1. Install IETester version 0.4.3 or newer version.
2. Install IE9 preview (click on "Install the Preview" button from this page)
3. Open two explorer windows. On the first window, go to C:\Program Files\Internet Explorer Platform Preview\ folder, and on the second window, go to C:\Program Files\Core Services\IETester\ie9 :
4. Copy the folder iepreview.exe.local from C:\Program Files\Internet Explorer Platform Preview\ to C:\Program Files\Core Services\IETester\ie9 :
5. In the C:\Program Files\Core Services\IETester\ie9 folder, rename the folder iepreview.exe.local to ietester.ie9.exe.local :
6. Done ! You don't even need to restart IETester, the IE9 button should become active after a few seconds.

Efecto Lightbox con css + javascript

Lightbox es un script desarrollado con javascript que nos permite abrir ventanas emergentes con más estilo que las habituales popup. Como esta librería existen muchísimas mas, como por ejemplo la lightview.
Bueno pero este no es el punto principal, vía unijimpe me encuentro con la posibilidad de nosotros poder "desarrollar" nuestra propia lightbox. Porque por medio de css más un simple mostrar y ocultar divs podemos hacer el efecto para que se abra una ventana emergente. Obviamente este código no cuenta con algunos efectos que tienen la ya nombrar lightbox, pero nos puede servir para nosotros darle el estilo que queramos a la popup que se abra.

Ahora vamos a ver el código para generar nuestra lightbox:
1 - Creamos un nuevo documento html, e insertamos estas divs.

PLAIN TEXT
  • id="over" class="overbox">Contenido Lightbox
  • id="fade" class="fadebox">

2 - Esta paso es uno si no el mas importante de todos, vamos aplicar el estilo css a las divs que creamos en el paso anterior.

PLAIN TEXT
  • .fadebox
  • display: none;
  • display: none;
  • position: absolute;
  • top: 0%;
  • left: 0%;
  • width: 100%;
  • height: 100%;
  • background-color: black;
  • z-index:1001;
  • -moz-opacity: 0.8;
  • opacity:.80;
  • filter: alpha(opacity=80);
  • {

  • display: none;
  • position: absolute;
  • top: 25%;
  • left: 25%;
  • width: 50%;
  • height: 50%;
  • z-index:1002;
  • overflow: auto;
  • }

Ahora lo que tenemos que hacer es crear los 2 botones para mostrar y otro para ocultar la ventana. Para esto vamos a colocar el sitio código html y también crear dos funciones javascript para que ejecuten la acción de mostrar/ocultar.

PLAIN TEXT
  • href="javascript:showLightbox();">Show LightBox
  • href="javascript:hideLightbox();">HideLightBox

PLAIN TEXT

function showLightbox()¡
  • document.getElementById('over').style.display='block';
  • document.getElementById('fade').style.display='block';
  • }

function hideLightbox() {
  • document.getElementById('over').style.display='none';
  • document.getElementById('fade').style.display='none';
  • }

document.getElementById('fade').style.display='block';
}
function hideLightbox (){
  document.getElementById('over').style.display='none';
  document.getElementById('fade').style.display='none';

}

Luego de que juntemos todo este código en nuestro archivo html nos tendría que quedar algo como este demo.

Framework CSS para crear estructuras perfecta


Utilizar un Framework termina siendo más una desventaja que una ventaja, especialmente cuando nos referimos a Frameworks CSS, CSS no es complicado para nada y no veo la necesidad de contar con una ayuda tan grande sobrecargando una aplicación con esquemas que nunca utilizaremos, no obstante me llamo mucho la atención uno en particular, estoy hablando de The Square Grid.

The Square Grid es un pequeño Frameworks CSS que esta orientado a emplear uno de los aspectos más importantes y que lamentablemente no se piensan demasiado, me refiero a las proporciones.  Como su nombre lo indica, este Framework trabaja sobre una grilla con la particularidad de contar con 35 columnas de idéntico ancho, para que luego nosotros podamos jugar con ellas disponiendo elementos o agrupandolas según nuestras necesidades.

Para crear nuestras columnas según nuestras necesidades solo bastara con asignar una clase al div indicando el numero de columnas a utilizar, o bien, si la columna en cuestión tendrá bordes.
Ejemplo de utilización, en negro el nombre de la clase de la columna:

columnas css framework

Otro excelente ejemplo de la potencia de utilizar este simple framework es el citado como ejemplo en la web oficial en donde se utilizan las columnas guardando la proporción áurea:

columnas numero oro

The Square Grid es un excelente complemento para nuestros diseños, en mi opinión es muy practico para probar distintas estructuras rápidamente, para luego ya seleccionada la definitiva traducirla a CSS simple y duro, sin utilizar el Framework como soporte definitivo, solamente a modo de guía.

Para finalizar y para mostrar un ejemplo de lo importante que es la utilización de buenas proporciones, les dejo la captura del rediseño de Twitter que utiliza la proporción áurea, que encontré hace unos días en Microsiervos.

twitter aureo

Web oficial Framework: The Square Grid

Fuente: Kabytes

¿Qué son los sprites en css y como usarlos?


Los sprites son imágenes destinadas a ahorrarte tiempo de carga a la hora de llamar las imágenes en tu sitio web. Cada sprite está compuesto por un conjunto de pequeñas imágenes.
Tomemos como ejemplo el portal de videos Youtube, el cual tiene muchos iconos e imágenes(más de 20).
En lugar de llamar a cada uno, se llama una única imagen que contenga todas esas pequeñas imágenes.
sprite youtube


La imagen completa que usa Youtube es mucho más grande y vertical, si quieren hacerse una idea este es la imagen.
Como usar un sprite

Ahora que ya vimos de que se trata, veamos como usarlos. Para ello tomaremos la misma imagen que coloqué arriba.
Una forma muy común de usar iconos es que estos cambien después de realizada una acción. Para el ejemplo, haremos que ese cambio sea al colocar el ratón sobre la imagen.


Estas dos imágenes son el resultado de usar el sprite de arriba como imagen única pero utilizando algo de magia CSS.
El código en su forma más simple, quedaría así:
HTML="conSprite">
<a id="hand" href="#go" style="background-position: -136px -38px;">a>
<a id="hand2" href="#go" style="background-position: -136px 1px;">a>
div>






CSS

.conSprite a
{
background:url('http://tensaiweb.info/blog/wp-content/uploads/2010/04/spriteyoutube.png');
width:16px;
height:19px;
display:block;
}
.conSprite #hand:hover
{
background-position: -136px -58px ;
}
.conSprite #hand2:hover
{
background-position: -136px -18px;
}
Explicando el CSS

Como habrán podido notar en el código, solamente llamamos una imagen: el sprite y la utilizamos en los enlaces. Pero cambiando la posición de la imagen, para esto debemos conocer la posición inicial de cada “icono” o imagen a mostrar.
Para mostrar cada imagen, tenemos en cuenta:

* Posicion “X” “Y” donde empieza la imagen(background-position).
* Si los números son negativos en X, nos dirigimos hacia la derecha del sprite, si son positivos; hacia la izquierda.
* Si los números son negativos en Y, nos dirigimos hacia la abajo en el sprite, si son positivos; hacia arriba.
* Por regla general, los números se toman negativos y se empieza desde la esquina superior izquierda del sprite.
* Debemos darle un tamaño con width y height para que sólo se muestre la imagen deseada.

Como crear un Sprite

Para crear un sprite se puede usar un editor de imágenes para unir todos los iconos en una sola imagen. Pero deben de anotar la posición y tamaño de cada imagen para usarlos después en el CSS.
Sin embargo existen herramientas para crear sprites online, como CssSprites.
generador sprite
Con esta herramienta sólo tienes que seleccionar las imágenes desde tu computador y luego darle a “Generate” para crear el sprite.

* Recuerda usar imágenes pequeñas y ligeras.
* Usa hasta 19 imágenes.
* Si quieres usar más de 19, crear otro grupo de 19 y luego únelos.

Como resultado te dará la imagen e incluso te indicará la posición(background-position) donde empieza cada imagen. Realmente es una gran ayuda.
Porqué es bueno usar sprites?

Usar sprites es mayormente recomendado para sitios con muchas visitas donde tengas muchas imágenes o iconos y los uses repetidamente por todo tu sitio web.
El tener todas tus imágenes en sprites hace que llamen un conjunto de imágenes en un sólo archivo(una sola imagen). Si por ejemplo tienes 10 iconos, para cargarlos necesitas hacer 10 peticiones al servidor y cada una demora un tiempo, lo cual hace esperar más tiempo al visitante.
Si tienes más de 10 es peor. Con un sprite acortas a una sola petición y reduces el tiempo de carga :razz: .
Finalmente

Espero les sirva a los que necesiten y lo usen cuando sea necesario. Tampoco es una obligación usarlos en toda web y recuerden que no sirve de mucho si las imágenes que quieren convertir en un sprite son muy grandes o pesadas.
Si no te quieres perder ningún detalle de estos artículos, suscríbete a mi feed con tu lector preferido o vía email en la parte derecha de la página.