Several of the demos on this site link to a stylesheet called “rotation.css”. It is shown here for easy reference.
The stylesheet defines rotations for a number of fundamental symmetries (with vendor prefixes): triangular (in 120° increments), quadrilateral (90°), pentagonal (72°), hexagonal (60°), heptagonal (51.4°), octagonal (45°), nonogonal (40°), decagonal (36°), dodecagonal (30°), hexadecagonal (22.5°) and (wait for it), hexatriacontagonal (10°). Of course, some of the symmetries overlap each other, and you are unlikely to need all of them for a given project.
The defined classes use degrees as the unit of rotation, but it’s worth pointing out that you can use other units: gradians (e.g., tranform:rotate(123grad), with 400 gradians in a full circle); radians (e.g., transform:rotate(1.8573rad), with 2π radians per circle); and “turns” (e.g., transform:rotate(.5turn), with one turn per circle; turns can be incremented down to at least the thousandth place: transform:rotate(.005turn).)
3D rotations are also possible with the following syntax (with example values): transform:rotateX(45deg); transform:rotateY(200grad); transform:rotateZ(1rad). The axis of rotation is appended to the word “rotate”, so rotateZ is essentially the same as the ordinary rotate property, the z-axis being perpendicular to the page; rotateX and rotateY are the interesting ones, since a element will seem to rotate into the space above or below from the plane of the page.
/* ROTATION.css */
.rot10deg {
-moz-transform: rotate(10deg);
-webkit-transform: rotate(10deg);
-o-transform: rotate(10deg);
-ms-transform: rotate(10deg);
transform: rotate(10deg);
}
.rot15deg {
-moz-transform: rotate(15deg);
-webkit-transform: rotate(15deg);
-o-transform: rotate(15deg);
-ms-transform: rotate(15deg);
transform: rotate(15deg);
}
.rot20deg {
-moz-transform: rotate(20deg);
-webkit-transform: rotate(20deg);
-o-transform: rotate(20deg);
-ms-transform: rotate(20deg);
transform: rotate(20deg);
}
.rot22deg {
-moz-transform: rotate(22.5deg);
-webkit-transform: rotate(22.5deg);
-o-transform: rotate(22.5deg);
-ms-transform: rotate(22.5deg);
transform: rotate(22.5deg);
}
.rot30deg {
-moz-transform: rotate(30deg);
-webkit-transform: rotate(30deg);
-o-transform: rotate(30deg);
-ms-transform: rotate(30deg);
transform: rotate(30deg);
}
/* decagonal */
.rot36deg {
-moz-transform: rotate(36deg);
-webkit-transform: rotate(36deg);
-o-transform: rotate(36deg);
-ms-transform: rotate(36deg);
transform: rotate(36deg);
}
/* nonogonal */
.rot40deg {
-moz-transform: rotate(40deg);
-webkit-transform: rotate(40deg);
-o-transform: rotate(40deg);
-ms-transform: rotate(40deg);
transform: rotate(40deg);
}
.rot45deg {
-moz-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-o-transform: rotate(45deg);
-ms-transform: rotate(45deg);
transform: rotate(45deg);
}
.rot50deg {
-moz-transform: rotate(50deg);
-webkit-transform: rotate(50deg);
-o-transform: rotate(50deg);
-ms-transform: rotate(50deg);
transform: rotate(50deg);
}
/* heptagonal */
.rot51deg {
-moz-transform: rotate(51.4deg);
-webkit-transform: rotate(51.4deg);
-o-transform: rotate(51.4deg);
-ms-transform: rotate(51.4deg);
transform: rotate(51.4deg);
}
.rot60deg {
-moz-transform: rotate(60deg);
-webkit-transform: rotate(60deg);
-o-transform: rotate(60deg);
-ms-transform: rotate(60deg);
transform: rotate(60deg);
}
.rot67deg {
-moz-transform: rotate(67.5deg);
-webkit-transform: rotate(67.5deg);
-o-transform: rotate(67.5deg);
-ms-transform: rotate(67.5deg);
transform: rotate(67.5deg);
}
.rot70deg {
-moz-transform: rotate(70deg);
-webkit-transform: rotate(70deg);
-o-transform: rotate(70deg);
-ms-transform: rotate(70deg);
transform: rotate(70deg);
}
/* pentagonal/decagonal */
.rot72deg {
-moz-transform: rotate(72deg);
-webkit-transform: rotate(72deg);
-o-transform: rotate(72deg);
-ms-transform: rotate(72deg);
transform: rotate(72deg);
}
.rot75deg {
-moz-transform: rotate(75deg);
-webkit-transform: rotate(75deg);
-o-transform: rotate(75deg);
-ms-transform: rotate(75deg);
transform: rotate(75deg);
}
/* nonogonal */
.rot80deg {
-moz-transform: rotate(80deg);
-webkit-transform: rotate(80deg);
-o-transform: rotate(80deg);
-ms-transform: rotate(80deg);
transform: rotate(80deg);
}
.rot90deg {
-moz-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-o-transform: rotate(90deg);
-ms-transform: rotate(90deg);
transform: rotate(90deg);
}
.rot100deg {
-moz-transform: rotate(100deg);
-webkit-transform: rotate(100deg);
-o-transform: rotate(100deg);
-ms-transform: rotate(100deg);
transform: rotate(100deg);
}
/* heptagonal */
.rot102deg {
-moz-transform: rotate(102.9deg);
-webkit-transform: rotate(102.9deg);
-o-transform: rotate(102.9deg);
-ms-transform: rotate(102.9deg);
transform: rotate(102.9deg);
}
.rot105deg {
-moz-transform: rotate(105deg);
-webkit-transform: rotate(105deg);
-o-transform: rotate(105deg);
-ms-transform: rotate(105deg);
transform: rotate(105deg);
}
.rot108deg {
-moz-transform: rotate(108deg);
-webkit-transform: rotate(108deg);
-o-transform: rotate(108deg);
-ms-transform: rotate(108deg);
transform: rotate(108deg);
}
.rot110deg {
-moz-transform: rotate(110deg);
-webkit-transform: rotate(110deg);
-o-transform: rotate(110deg);
-ms-transform: rotate(110deg);
transform: rotate(110deg);
}
.rot112deg {
-moz-transform: rotate(112.5deg);
-webkit-transform: rotate(112.5deg);
-o-transform: rotate(112.5deg);
-ms-transform: rotate(112.5deg);
transform: rotate(112.5deg);
}
.rot120deg {
-moz-transform: rotate(120deg);
-webkit-transform: rotate(120deg);
-o-transform: rotate(120deg);
-ms-transform: rotate(120deg);
transform: rotate(120deg);
}
.rot130deg {
-moz-transform: rotate(130deg);
-webkit-transform: rotate(130deg);
-o-transform: rotate(130deg);
-ms-transform: rotate(130deg);
transform: rotate(130deg);
}
.rot135deg {
-moz-transform: rotate(135deg);
-webkit-transform: rotate(135deg);
-o-transform: rotate(135deg);
-ms-transform: rotate(135deg);
transform: rotate(135deg);
}
.rot140deg {
-moz-transform: rotate(140deg);
-webkit-transform: rotate(140deg);
-o-transform: rotate(140deg);
-ms-transform: rotate(140deg);
transform: rotate(140deg);
}
/* pentagonal/decagonal */
.rot144deg {
-moz-transform: rotate(144deg);
-webkit-transform: rotate(144deg);
-o-transform: rotate(144deg);
-ms-transform: rotate(144deg);
transform: rotate(144deg);
}
.rot150deg {
-moz-transform: rotate(150deg);
-webkit-transform: rotate(150deg);
-o-transform: rotate(150deg);
-ms-transform: rotate(150deg);
transform: rotate(150deg);
}
/* heptagonal */
.rot154deg {
-moz-transform: rotate(154.3deg);
-webkit-transform: rotate(154.3deg);
-o-transform: rotate(154.3deg);
-ms-transform: rotate(154.3deg);
transform: rotate(154.3deg);
}
.rot157deg {
-moz-transform: rotate(157.5deg);
-webkit-transform: rotate(157.5deg);
-o-transform: rotate(157.5deg);
-ms-transform: rotate(157.5deg);
transform: rotate(157.5deg);
}
.rot160deg {
-moz-transform: rotate(160deg);
-webkit-transform: rotate(160deg);
-o-transform: rotate(160deg);
-ms-transform: rotate(160deg);
transform: rotate(160deg);
}
.rot165deg {
-moz-transform: rotate(165deg);
-webkit-transform: rotate(165deg);
-o-transform: rotate(165deg);
-ms-transform: rotate(165deg);
transform: rotate(165deg);
}
.rot170deg {
-moz-transform: rotate(170deg);
-webkit-transform: rotate(170deg);
-o-transform: rotate(170deg);
-ms-transform: rotate(170deg);
transform: rotate(170deg);
}
/* decagonal */
.rot180deg {
-moz-transform: rotate(180deg);
-webkit-transform: rotate(180deg);
-o-transform: rotate(180deg);
-ms-transform: rotate(180deg);
transform: rotate(180deg);
}
.rot190deg {
-moz-transform: rotate(190deg);
-webkit-transform: rotate(190deg);
-o-transform: rotate(190deg);
-ms-transform: rotate(190deg);
transform: rotate(190deg);
}
.rot195deg {
-moz-transform: rotate(195deg);
-webkit-transform: rotate(195deg);
-o-transform: rotate(195deg);
-ms-transform: rotate(195deg);
transform: rotate(195deg);
}
.rot200deg {
-moz-transform: rotate(200deg);
-webkit-transform: rotate(200deg);
-o-transform: rotate(200deg);
-ms-transform: rotate(200deg);
transform: rotate(200deg);
}
.rot202deg {
-moz-transform: rotate(202.5deg);
-webkit-transform: rotate(202.5deg);
-o-transform: rotate(202.5deg);
-ms-transform: rotate(202.5deg);
transform: rotate(202.5deg);
}
/* heptagonal */
.rot205deg {
-moz-transform: rotate(205.7deg);
-webkit-transform: rotate(205.7deg);
-o-transform: rotate(205.7deg);
-ms-transform: rotate(205.7deg);
transform: rotate(205.7deg);
}
.rot210deg {
-moz-transform: rotate(210deg);
-webkit-transform: rotate(210deg);
-o-transform: rotate(210deg);
-ms-transform: rotate(210deg);
transform: rotate(210deg);
}
/* pentagonal/decagonal */
.rot216deg {
-moz-transform: rotate(216deg);
-webkit-transform: rotate(216deg);
-o-transform: rotate(216deg);
-ms-transform: rotate(216deg);
transform: rotate(216deg);
}
.rot220deg {
-moz-transform: rotate(220deg);
-webkit-transform: rotate(220deg);
-o-transform: rotate(220deg);
-ms-transform: rotate(220deg);
transform: rotate(220deg);
}
.rot225deg {
-moz-transform: rotate(225deg);
-webkit-transform: rotate(225deg);
-o-transform: rotate(225deg);
-ms-transform: rotate(225deg);
transform: rotate(225deg);
}
.rot230deg {
-moz-transform: rotate(230deg);
-webkit-transform: rotate(230deg);
-o-transform: rotate(230deg);
-ms-transform: rotate(230deg);
transform: rotate(230deg);
}
.rot240deg {
-moz-transform: rotate(240deg);
-webkit-transform: rotate(240deg);
-o-transform: rotate(240deg);
-ms-transform: rotate(240deg);
transform: rotate(240deg);
}
.rot247deg {
-moz-transform: rotate(247.5deg);
-webkit-transform: rotate(247.5deg);
-o-transform: rotate(247.5deg);
-ms-transform: rotate(247.5deg);
transform: rotate(247.5deg);
}
.rot250deg {
-moz-transform: rotate(250deg);
-webkit-transform: rotate(250deg);
-o-transform: rotate(250deg);
-ms-transform: rotate(250deg);
transform: rotate(250deg);
}
/* decagonal */
.rot252deg {
-moz-transform: rotate(252deg);
-webkit-transform: rotate(252deg);
-o-transform: rotate(252deg);
-ms-transform: rotate(252deg);
transform: rotate(252deg);
}
.rot255deg {
-moz-transform: rotate(255deg);
-webkit-transform: rotate(255deg);
-o-transform: rotate(255deg);
-ms-transform: rotate(255deg);
transform: rotate(255deg);
}
/* heptagonal */
.rot257deg {
-moz-transform: rotate(257.1deg);
-webkit-transform: rotate(257.1deg);
-o-transform: rotate(257.1deg);
-ms-transform: rotate(257.1deg);
transform: rotate(257.1deg);
}
.rot260deg {
-moz-transform: rotate(260deg);
-webkit-transform: rotate(260deg);
-o-transform: rotate(260deg);
-ms-transform: rotate(260deg);
transform: rotate(260deg);
}
.rot270deg {
-moz-transform: rotate(270deg);
-webkit-transform: rotate(270deg);
-o-transform: rotate(270deg);
-ms-transform: rotate(270deg);
transform: rotate(270deg);
}
.rot280deg {
-moz-transform: rotate(280deg);
-webkit-transform: rotate(280deg);
-o-transform: rotate(280deg);
-ms-transform: rotate(280deg);
transform: rotate(280deg);
}
.rot285deg {
-moz-transform: rotate(285deg);
-webkit-transform: rotate(285deg);
-o-transform: rotate(285deg);
-ms-transform: rotate(285deg);
transform: rotate(285deg);
}
/* pentagonal/decagonal */
.rot288deg {
-moz-transform: rotate(288deg);
-webkit-transform: rotate(288deg);
-o-transform: rotate(288deg);
-ms-transform: rotate(288deg);
transform: rotate(288deg);
}
.rot290deg {
-moz-transform: rotate(290deg);
-webkit-transform: rotate(290deg);
-o-transform: rotate(290deg);
-ms-transform: rotate(290deg);
transform: rotate(290deg);
}
.rot292deg {
-moz-transform: rotate(292.5deg);
-webkit-transform: rotate(292.5deg);
-o-transform: rotate(292.5deg);
-ms-transform: rotate(292.5deg);
transform: rotate(292.5deg);
}
.rot300deg {
-moz-transform: rotate(300deg);
-webkit-transform: rotate(300deg);
-o-transform: rotate(300deg);
-ms-transform: rotate(300deg);
transform: rotate(300deg);
}
/* heptagonal */
.rot308deg {
-moz-transform: rotate(308.6deg);
-webkit-transform: rotate(308.6deg);
-o-transform: rotate(308.6deg);
-ms-transform: rotate(308.6deg);
transform: rotate(308.6deg);
}
.rot310deg {
-moz-transform: rotate(310deg);
-webkit-transform: rotate(310deg);
-o-transform: rotate(310deg);
-ms-transform: rotate(310deg);
transform: rotate(310deg);
}
.rot315deg {
-moz-transform: rotate(315deg);
-webkit-transform: rotate(315deg);
-o-transform: rotate(315deg);
-ms-transform: rotate(315deg);
transform: rotate(315deg);
}
.rot320deg {
-moz-transform: rotate(320deg);
-webkit-transform: rotate(320deg);
-o-transform: rotate(320deg);
-ms-transform: rotate(320deg);
transform: rotate(320deg);
}
/* decagonal */
.rot324deg {
-moz-transform: rotate(324deg);
-webkit-transform: rotate(324deg);
-o-transform: rotate(324deg);
-ms-transform: rotate(324deg);
transform: rotate(324deg);
}
.rot330deg {
-moz-transform: rotate(330deg);
-webkit-transform: rotate(330deg);
-o-transform: rotate(330deg);
-ms-transform: rotate(330deg);
transform: rotate(330deg);
}
.rot337deg {
-moz-transform: rotate(337.5deg);
-webkit-transform: rotate(337.5deg);
-o-transform: rotate(337.5deg);
-ms-transform: rotate(337.5deg);
transform: rotate(337.5deg);
}
.rot340deg {
-moz-transform: rotate(340deg);
-webkit-transform: rotate(340deg);
-o-transform: rotate(340deg);
-ms-transform: rotate(340deg);
transform: rotate(340deg);
}
.rot345deg {
-moz-transform: rotate(345deg);
-webkit-transform: rotate(345deg);
-o-transform: rotate(345deg);
-ms-transform: rotate(345deg);
transform: rotate(345deg);
}
.rot350deg {
-moz-transform: rotate(350deg);
-webkit-transform: rotate(350deg);
-o-transform: rotate(350deg);
-ms-transform: rotate(350deg);
transform: rotate(350deg);
}
.rot360deg {
-moz-transform: rotate(360deg);
-webkit-transform: rotate(360deg);
-o-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}