I'm trying to rotate the double angle bracket set as the content in an :after
pseudo-element using the css transform
value rotate(90deg)
for a tab across the top of the screen. Here's the relevant code:
.header {
-moz-transition: top .5s ease;
-webkit-transition: top .5s ease;
-o-transition: top .5s ease;
transition: top .5s ease;
position: absolute;
left: 0;
right: 0;
top: -60px;
height: 80px;
background-color: #2d2;
}
.header.in-top {
top: 0;
}
.header-tab {
position: absolute;
bottom: 0;
width: 100%;
height: 20px;
text-align: center;
color: #000;
-moz-transition: color .5s ease;
-webkit-transition: color .5s ease;
-o-transition: color .5s ease;
transition: color .5s ease;
}
.header-tab:hover {
color: #e22;
}
.header-arrow:after {
font-size: 20px;
line-height: 1;
-moz-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-ms-transform: rotate(90deg);
-o-transform: rotate(90deg);
transform: rotate(90deg);
}
.header .header-arrow:after {
content: "\00bb";
}
.header.in-top .header-arrow:after {
content: "\00ab";
}
<div class="header">
<div class="header-tab" data-toggle="in-top">
<span class="header-arrow"></span>
</div>
</div>
The data-toggle
attribute is used in JavaScript to toggle the in-top
class in order to switch the direction of the double angle bracket as well as to expose the content of the header by bringing it down. The transform
properties I have specified seem to do nothing though. Any solutions?
Use display: inline-block
on the pseudo-element. Alternatively, inline-table
or block
should also work.
See jsFiddle.
Your pseudo-element is displayed inline
by default, which makes it a nontransformable element. From the CSS Transforms Working Draft specification:
transformable element
A transformable element is an element in one of these categories: an element whose layout is governed by the CSS box model which is either a block-level or atomic inline-level element, or whose ‘display’ property computes to ‘table-row’, ‘table-row-group’, ‘table-header-group’, ‘table-footer-group’, ‘table-cell’, or ‘table-caption’
You need to set the pseudo-element as a block or inline-block element:
.header-arrow:after {
display: block;
}
The specification says rotation should work on inline elements, but in WebKit based browsers it doesn't works: https://www.webkit.org/blog/130/css-transforms/
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With