<div id="handmaid" class="book">
  <div class="gloss"></div>
  <img class="cover" src="https://raw.githubusercontent.com/robole/artifice/main/shiny-book-reveal/img/cover.png">
  <div class="description">
    <h1>The Handmaid's Tale</h1>
    <hr>
    <p>In the Republic of Gilead, formerly the United States, far-right Schlafly/Falwell-type ideals
      have been carried to extremes in the monotheocratic government. The resulting society is a
      feminist's nightmare: women are strictly controlled, unable to have jobs or money and assigned
      to various classes: the chaste, childless Wives; the housekeeping Marthas; and the reproductive
      Handmaids, who turn their offspring over to the "morally fit" Wives. The tale is told by Offred
      (read: "of Fred"), a Handmaid who recalls the past and tells how the chilling society came to be.</p>
    <blockquote>“A novel that brilliantly illuminates some of the darker interconnections between politics and
      sex...just as the world of Orwell’s 1984 gripped our imaginations, so will the world of Atwood’s handmaid!”
      <br><i>Washington Post Book World</i></blockquote>
  </div>
</div>
<h1>The Handmaid's Tale</h1>
<div class="rating">
  <span>☆</span><span>☆</span><span>☆</span><span>☆</span><span>☆</span>
</div>
/*Hover to reveal a description of the book */

/* Source code:
https://github.com/robole/artifice
*/

@import url('https://fonts.googleapis.com/css2?family=Pontano+Sans&family=Stint+Ultra+Expanded&display=swap');

:root{
  --perspective: 1000px;
  --link-color:#010790;
}

* {
	box-sizing: border-box;
}

body{
  font-family: 'Pontano Sans', sans-serif;
  font-size: calc(0.65em + .05vw);
}

a{
  color:var(--link-color);
  font-weight:bold;
}

h1{
  font-family: 'Stint Ultra Expanded', cursive;
  font-size: 1.5em;
  text-align: center;
}

.book {
  display: block;
  position: relative;
  width: 320px;
	height:453px;
  margin:0 auto;
	margin-top: 5rem;
}

.gloss{
  position: absolute;
  top:0;
	z-index:200;
  overflow: hidden;
  width:20%;
  height:100%;
  opacity:0.5;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(255,255,255,0.2), rgba(255,255,255,0));
  transition:all .5s;
  transform: translateX(-50%) rotateY(0deg);
  transform-origin: left center;
}

.cover {
	position: absolute;
  width:100%;
	z-index:100;
  transition:transform .5s;
  transform: translateX(0);
  transform-origin: left center;
  backface-visibility: hidden;
}

.description{
  position: absolute;
  left:0;
  top:0;
  width:inherit;
  height:inherit;
	border: solid 1px grey;
	background:white;
	transition: all 1s;
	padding: 10% 10%;
  padding-top:5%;
  z-index:1;
}

.description h1{
  font-family: 'Pontano Sans', sans-serif;
	font-size: calc(0.75em + .1vw);
  text-align: center;
  line-height: 1.25em;
}

.book:hover{
		cursor: pointer;
}

.book:hover .cover {
    transform: perspective(var(--perspective)) rotateY(-80deg);
}

.book:hover .gloss {
    transform: perspective(var(--perspective)) rotateY(-80deg) translateX(100%) scaleX(5);
}

.book:hover .description {
    transform: translateX(20%);
}

.rating {
  unicode-bidi: bidi-override;
  direction: rtl;
  text-align: center;
  height:2em;
  margin:0 auto;
  color:grey;
}

.rating > span {
  display: inline-block;
  position: relative;
  font-size: 1.75em;
  margin-right:.2em;
}

.rating > span ~ span:before {
   content: "\2605";
   position: absolute;
   color:#8d2a06;
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.