Edit in JSFiddle

div {
    width: 150px;
    height: 150px;
    position: absolute;
    -webkit-perspective: 800;
    -moz-perspective: 800;
    -o-perspective: 800;
    perspective: 800;
    -webkit-transform-style: preserve-3d;
    -moz-transform-style: preserve-3d;
    -o-transform-style: preserve-3d;
    transform-style: preserve-3d;
}

div > figure {
    display: block;
    height: 100%;
    width: 100%;
    line-height: 150px;
    border-radius: 50%;
    color: white;
    text-align: center;
    font-weight: bold;
    font-size: 28px;
    position: absolute;
    -webkit-transition: -webkit-transform 1s;
    -moz-transition: -moz-transform 1s;
    -o-transition: -o-transform 1s;
    transition: transform 1s;
    -webkit-backface-visibility: hidden;
    -moz-backface-visibility: hidden;
    -o-backface-visibility: hidden;
    backface-visibility: hidden;
}

div > figure:nth-of-type(1) {
    background: #a3a3a3;
}

div:hover > figure:nth-of-type(1) {
    -webkit-transform: rotateY(180deg);
    -moz-transform: rotateY(180deg);
    -o-transform: rotateY(180deg);
    transform: rotateY(180deg);
}

div > figure:nth-of-type(2) {
    background: #bada55;
    -webkit-transform: rotateY(-180deg);
    -moz-transform: rotateY(-180deg);
    -o-transform: rotateY(-180deg);
    transform: rotateY(-180deg);
}

div:hover > figure:nth-of-type(2) {
    -webkit-transform: rotateY(0deg);
    -moz-transform: rotateY(0deg);
    -o-transform: rotateY(0deg);
    transform: rotateY(0deg);
}