Compass Text Replacement
This file can be imported using:
@import "compass/typography/text/replacement"
Imports
- Browser Support – Provides configuration options for the Compass Browser Support Matrix.
Configurable Variables help
$hide-text-direction
left
Indicates the direction you prefer to move your text when hiding it.
left is more robust, especially in older browsers.
right seems have better runtime performance.
Mixins
view sourcereplace-text($img, $x, $y)
=replace-text($img, $x: 50%, $y: 50%)
+hide-text
background:
@if is-url($img)
image: $img
@else
image: image-url($img)
repeat: no-repeat
position: $x $y
@mixin replace-text($img, $x: 50%, $y: 50%) {
@include hide-text;
background: {
@if is-url($img) {
image: $img;
}
@else {
image: image-url($img);
}
repeat: no-repeat;
position: $x $y;
};
}
Hides html text and replaces it with an image. If you use this on an inline element, you will need to change the display to block or inline-block. Also, if the size of the image differs significantly from the font size, you’ll need to set the width and/or height.
Parameters:
-
img— the relative path from the project image directory to the image, or a url literal. -
x— the x position of the background image. -
y— the y position of the background image.
replace-text-with-dimensions($img, $x, $y, $inline)
=replace-text-with-dimensions($img, $x: 50%, $y: 50%, $inline: false) +replace-text(if($inline, inline-image($img), $img), $x, $y) width: image-width($img) height: image-height($img)
@mixin replace-text-with-dimensions($img, $x: 50%, $y: 50%, $inline: false) {
@include replace-text(if($inline, inline-image($img), $img), $x, $y);
width: image-width($img);
height: image-height($img);
}
Like the replace-text mixin, but also sets the width
and height of the element according the dimensions of the image.
If you set $inline to true, then an inline image (data uri) will be used.
hide-text($direction)
=hide-text($direction: $hide-text-direction)
@if $direction == left
$approximate-em-value: 12px / 1em
$wider-than-any-screen: -9999em
text-indent: $wider-than-any-screen * $approximate-em-value
overflow: hidden
text-align: left
@else
// slightly wider than the box prevents issues with inline-block elements
text-indent: 110%
white-space: nowrap
overflow: hidden
+for-legacy-browsers((ie: "7"), $critical-usage-threshold)
//Text transform capitalize fixes text-replacement issue when used in a
@mixin hide-text($direction: $hide-text-direction) {
@if $direction == left {
$approximate-em-value: 12px / 1em;
$wider-than-any-screen: -9999em;
text-indent: $wider-than-any-screen * $approximate-em-value;
overflow: hidden;
text-align: left;
}
@else {
// slightly wider than the box prevents issues with inline-block elements
text-indent: 110%;
white-space: nowrap;
overflow: hidden;
}
@include for-legacy-browsers((ie: "7"), $critical-usage-threshold) {
//Text transform capitalize fixes text-replacement issue when used in a
Hides text in an element so you can see the background.
The direction indicates how the text should be moved out of view.
See $hide-text-direction for more information and to set this globally
for your application.
squish-text
=squish-text font: 0/0 serif text-shadow: none color: transparent
@mixin squish-text {
font: 0/0 serif;
text-shadow: none;
color: transparent;
}
Hides text in an element by squishing the text into oblivion. Use this if you need to hide text contained in an inline element but still have it read by a screen reader.