CSS PIE is a javascript library that enhances Internet Explorer to render many modern CSS3 capabilities wherever possible. To install:
compass install compass/pie
This will install an example stylesheet and a PIE.htc behavior file that must be loaded into your pages for IE. This file must be delivered with the following mime-type:
Content-Type: text/x-component
The example stylesheet will walk you through setting up your project with css3pie support.
The following css3 properties are supported:
Additionally, PIE supports the following CSS3 features:
Full Documentation on Supported Properties
position: relative
.It is suggested that you use Sass's @extend
directive to mark elements as
PIE elements. The example stylesheet you get when you install compass/pie
into your project will walk you through the process of setting that up.
This file can be imported using:
@import "compass/css3/pie"
false
It is recommended that you use Sass's @extend directive to apply the behavior
to your PIE elements. To assist you, Compass provides this variable.
When set, it will cause the @include pie
mixin to extend this class.
The class name you provide should not include the .
.
relative
The default approach to using PIE. Can be one of:
stylesheet-url("PIE.htc")
The location of your PIE behavior file This should be root-relative to your web server relative assets don't work. It is recommended that you set this yourself.
true
=pie-container($z-index: 0, $position: relative) z-index: $z-index position: $position
@mixin pie-container($z-index: 0, $position: relative) { z-index: $z-index; position: $position; }
When using the z-index approach, the first ancestor of the PIE element at or before the container's opaque background should have a z-index set as well to ensure propert z-index stacking.
The $position
argument must be some non-static
value (absolute, relative, etc.)
=pie-element($approach: $pie-default-approach, $z-index: 0) behavior: $pie-behavior @if $approach == relative position: relative @else if $approach == z-index z-index: $z-index
@mixin pie-element($approach: $pie-default-approach, $z-index: 0) { behavior: $pie-behavior; @if $approach == relative { position: relative; } @else if $approach == z-index { z-index: $z-index; } }
PIE elements must have this behavior attached to them. IE is broken -- it doesn't think of behavior urls as relative to the stylesheet. It considers them relative to the webpage. As a result, you cannot reliably use compass's relative_assets with PIE.
$approach
- one of: relative, z-index, or none$z-index
- when using the z-index approach, this
is the z-index that is applied.
=pie($base-class: $pie-base-class) @if $base-class @extend .#{$base-class} @else +pie-element
@mixin pie($base-class: $pie-base-class) { @if $base-class { @extend .#{$base-class}; } @else { @include pie-element; } }
a smart mixin that knows to extend or include pie-element according to your stylesheet's configuration variables.
=pie-watch-ancestors($n) -pie-watch-ancestors: $n
@mixin pie-watch-ancestors($n) { -pie-watch-ancestors: $n; }
Watch $n
levels of ancestors for changes to their class attribute
So that cascading styles will work correctly on the PIE element.