.rolex
- for (var x = 0; x < 4; x++)
.lug
.lug-bg
.band
.band-detail-top-center
.band-detail-top-brushed
.band-detail-top-brushed
.band-detail-bottom-center
.band-detail-bottom-brushed
.band-detail-bottom-brushed
.crown
- for (var x = 0; x < 5; x++)
.crown-detail
.bezel
- for (var x = 0; x < 96; x++)
i.bez
.face
.content-upper
.logo
.logo-left
.logo-right
p.name Rolex
p.sub-name Oyster Perpetual<br/>Day — Date
.content-lower
p.sub-fine Superlative Chronometer<br/>Officially Certified
p.sub-swiss <span>Chris</span> <span>made</span>
.gradient-overlay
.black-outline
- for (var x = 0; x < 30; x++)
.outline-details
.five-minute
- for (var x = 0; x < 5; x++)
.five-minute-markers
.date-window
.date-window-texture
#date
.day-window-border
.day-window
.day-wrapper
.day
.text-wrapper
span.char0 M
span.char1 o
span.char2 n
span.char3 d
span.char4 a
span.char5 y
.day
.text-wrapper
span.char0 T
span.char1 u
span.char2 e
span.char3 s
span.char4 d
span.char5 a
span.char6 y
.day
.text-wrapper
span.char0 W
span.char1 e
span.char2 d
span.char3 n
span.char4 e
span.char5 s
span.char6 d
span.char7 a
span.char8 y
.day
.text-wrapper
span.char0 T
span.char1 h
span.char2 u
span.char3 r
span.char4 s
span.char5 d
span.char6 a
span.char7 y
.day
.text-wrapper
span.char0 F
span.char1 r
span.char2 i
span.char3 d
span.char4 a
span.char5 y
.day
.text-wrapper
span.char0 S
span.char1 a
span.char2 t
span.char3 u
span.char4 r
span.char5 d
span.char6 a
span.char7 y
.day
.text-wrapper
span.char0 S
span.char1 u
span.char2 n
span.char3 d
span.char4 a
span.char5 y
.hand-hour
.shadow
.hand-min
.shadow
.hand-sec
.shadow
View Compiled
/* Day */
@import url('https://fonts.googleapis.com/css?family=Krona+One&display=swap');
/* Rolex */
@import url('https://fonts.googleapis.com/css?family=Rhodium+Libre&display=swap');
/* Swiss Made */
@import url('https://fonts.googleapis.com/css?family=Montserrat:600&display=swap');
/* Text */
@import url('https://fonts.googleapis.com/css?family=Roboto:300i,400&display=swap');
/* Days */
@import url('https://fonts.googleapis.com/css?family=Cousine&display=swap');
*,*:before,*:after{ box-sizing: border-box; } html, body { width: 100%; height: 100%;} body { font-smoothing: antialiased; osx-font-smoothing: grayscale;}
%pseudo{
content:'';
display: block;
position: absolute;
}
%ab-center{
top: 0; bottom: 0; right: 0; left: 0;
margin: auto;
}
$color-text: #100000;
$color-logo: #F2E5B7;
i{
position: absolute;
@extend %ab-center;
&:before,
&:after{
@extend %pseudo;
height: inherit;
width: inherit;
border-radius: inherit;
transform: rotateZ(calc(90deg));
}
}
body{
//transform: scale(0.8);
background: linear-gradient(45deg, #3B3122 0%,
#806E5A 50%,
#C9BCA4 100%) fixed;
}
/* Band and crown - 316px */
.rolex{
position: absolute;
@extend %ab-center;
width: 316px;
height: 316px;
filter: drop-shadow(-20px 10px 20px rgba(0,0,0,0.3));
}
/* General frame */
.bezel{
width: inherit;
height: inherit;
border-radius: 100%;
position: relative;
background: linear-gradient(to right,
#725E32 0%,
#E6DFB6 100%);
box-sizing: initial;
&:before,
&:after{
@extend %pseudo;
@extend %ab-center;
}
&:after{
height: 278px;
width: 278px;
border-radius: inherit;
background: linear-gradient(to right,
#7A6337 0%,
#705C32 100%);
}
&:before{
height: 300px;
width: 300px;
border-radius: inherit;
background: linear-gradient(to right,
#E6DDB1 0%,
#4C391F 100%);
}
}
/* Texture detail */
.bez{
z-index: 1;
opacity: 1;
position: absolute;
@extend %ab-center;
&:before,
&:after{
@extend %pseudo;
@extend %ab-center;
height: 0;
width: 16px;
top: -298px;
border-left: 3px solid transparent;
border-right: 3px solid transparent;
}
&:before{
border-bottom: 5px solid #7C6435;
left: -5px;
}
&:after{
border-top: 5px solid #FAFAEB;
left: 5px;
}
}
@for $i from 0 through 96 {
i.bez:nth-of-type(#{$i}) {
transform: rotateZ(calc(3.75deg * #{$i}));
}
}
/* Checkered background, border shine, and gradient overlay */
.face{
width: 272px;
height: 272px;
position: absolute;
@extend %ab-center;
border-radius: 100%;
//overflow:hidden;
background: linear-gradient(to bottom,
#E6D8AE 0%,
#A48E64 25%,
#A48E64 38%,
#C4AF85 60%,
#DACB9E 80%,
#FCFBFA 100%);
box-shadow:
inset 0 0 1px 1px #CEC8BB,
inset 0 0 2px 3px #A28E6A,
inset 0 0 2px 5px #F4EDD2,
inset 0 0 1px 7px #A28E6A,
inset 0 0 0 8px #D2C29C;
/* Checkered BG */
&:before{
@extend %pseudo;
@extend %ab-center;
border-radius: 100%;
height: 244px;
width: 244px;
background: #DFDCD3;
box-shadow: inset 1px 1px 6px 2px rgba(0,0,0,0.3);
background-image:
repeating-linear-gradient(45deg, transparent, transparent 4px, #B4AB99 4px, #B4AB99 7px),
repeating-linear-gradient(-45deg, transparent, transparent 4px, #B4AB99 4px, #B4AB99 7px);
}
/* Shine */
&:after{
@extend %pseudo;
@extend %ab-center;
border-radius: 100%;
height: 250px;
width: 250px;
box-sizing: content-box;
border-top: 4px solid rgba(250,250,245,0.8);
border-bottom: 4px solid rgba(250,250,245,0.8);
transform: rotateZ(30deg);
filter: blur(0.02em);
}
.gradient-overlay{
@extend %ab-center;
position: absolute;
width: 244px;
height: 244px;
overflow: hidden;
border-radius: 100%;
&:before,
&:after{
@extend %pseudo;
width: 135px;
height: 135px;
background: #FFECD9;
transform: rotateZ(45deg);
filter: blur(15px);
mix-blend-mode: hard-light;
opacity: 0.6;
top: 55px;
}
&:before{
left: -42px;
}
&:after{
right: -42px;
}
}
}
/* Rolex text */
.content-upper{
color: $color-text;
text-transform: uppercase;
/* Crown */
.logo{
top: 74px;
position: absolute;
width: 12px;
height: 8px;
border: 2px solid #DFD0A9;
border-top-width: 3px;
border-radius: 50%;
left: 0;
right: 0;
margin: 0 auto;
box-shadow: 0 1px 2px 0 rgba(0,0,0,0.6);
filter: drop-shadow(0 0 2px rgba(0,0,0,0.7));
&:before,
&:after{
@extend %pseudo;
top: -22px;
}
/* Dots */
&:before{
left: 2px;
width: 4px;
height: 4px;
background: $color-logo;
border-radius: 50%;
box-shadow:
7px 2px 0 $color-logo,
12px 6px 0 #EEDDAA,
-7px 2px 0 $color-logo,
-12px 6px 0 #EEDDAA;
}
/* Center tip */
&:after{
left: 0;
right: 0;
margin: auto;
width: 0;
height: 0;
border-right: 2px solid transparent;
border-left: 2px solid transparent;
border-bottom: 20px solid $color-logo;
}
.logo-left,
.logo-right{
position: absolute;
top:-20px;
border-bottom: 20px solid $color-logo;
&:before{
@extend %pseudo;
top: 2px;
border-top: 19px solid transparent;
}
}
.logo-left{
left: -3px;
border-right: 2px solid transparent;
border-left: 2px solid transparent;
transform: rotateZ(-15deg);
&:before{
left: -5px;
border-left: 3px solid #D5C69A;
transform: rotateZ(-5deg);
}
}
.logo-right{
right: -3px;
border-right: 2px solid transparent;
border-left: 2px solid transparent;
transform: rotateZ(15deg);
&:before{
right: -5px;
border-right: 3px solid #D5C69A;
transform: rotateZ( 5deg);
}
}
}
.name{
font-family: 'Rhodium Libre', serif;
position: absolute;
font-size: 0.625em; /* 10px */
letter-spacing: 0.07em; /* 16px */
text-align: center;
width: 100%;
top: 87px;
}
.sub-name{
font-family: 'Roboto', sans-serif;
position: absolute;
text-align: center;
top: 96px;
width: 100%;
line-height: 0.9;
font-size: 0.5625em; /* 9px */
}
}
/* Smaller content*/
.content-lower{
position: absolute;
font-family: 'Roboto', sans-serif;
text-align: center;
top: 176px;
color: $color-text;
width: 100%;
.sub-fine{
text-transform: uppercase;
font-size: 5px; /* Can't use em */
letter-spacing: 0.04em;
line-height: 1.3;
}
/* Could not add Rolex logo */
.sub-swiss{
position: absolute;
top: 72px;
width: 100%;
text-transform: uppercase;
font-size: 5px; /* Can't use em */
font-weight: 600;
font-family: 'Montserrat', sans-serif;
span{
display: inline-block;
position: relative;
}
span:nth-child(1){
margin-right: 1px;
transform: rotateZ(4deg);
}
span:nth-child(2){
margin-left: 1px;
transform: rotateZ(-4deg);
}
}
}
/* Black outlines */
.black-outline{
position: absolute;
@extend %ab-center;
height: 238px;
width: 238px;
border-radius: 100%;
transform: rotateZ(-3deg);
/* Square details */
.outline-details{
position: absolute;
@extend %ab-center;
height: 6px;
width: 13px;
&:after,
&:before{
@extend %pseudo;
height: inherit;
width: inherit;
border-top: 1px solid rgba(0,0,0,0.5);
border-bottom: 1px solid rgba(0,0,0,0.5);
border-right: 1px solid rgba(0,0,0,0.5);
}
&:after{
top: -116px;
}
&:before{
top: 116px;
}
&:nth-child(30):after{
border-left: 1px solid rgba(0,0,0,0.5);
}
&:nth-child(1):before,
&:nth-child(2):before,
&:nth-child(30):before{
border-top: 0 solid transparent;
border-right: 0 solid transparent;
}
&:nth-child(29):after{
border-bottom: 0 solid transparent;
border-right: 0 solid transparent;
}
}
@for $i from 0 through 29 {
.outline-details:nth-of-type(#{$i}) {
transform: rotateZ(calc(6deg * #{$i}));
}
}
}
/* Five minute markers 6 and 9 */
.five-minute{
position: absolute;
@extend %ab-center;
width: 8px;
height: 29px;
&:before,
&:after{
@extend %pseudo;
width: inherit;
height: inherit;
background: #EAE8E5;
border: 1px solid #F0E7CA;
}
&:before{
top: 95px;
box-shadow:
inset 1px 1px 1px 0 rgba(0,0,0,0.3),
0 1px 2px 1px rgba(0,0,0,0.5);
border-bottom: 1px solid #705B2D;
}
&:after{
transform: rotateZ(-90deg);
left: -95px;
box-shadow:
inset -1px 0px 1px 0 rgba(0,0,0,0.3),
-1px 0px 2px 1px rgba(0,0,0,0.5);
border-left: 1px solid #705B2D;
border-top: 1px solid #705B2D;
}
}
/* Five minute markers 1, 2, 4, 5, 7, 8, 10, 11 */
.five-minute-markers{
position: absolute;
@extend %ab-center;
width: inherit;
height: inherit;
&:before,
&:after{
@extend %pseudo;
width: inherit;
height: inherit;
background: #EAE8E5;
box-shadow:
inset -1px -1px 1px 0 rgba(0,0,0,0.3),
-1px -1px 2px 1px rgba(0,0,0,0.5);
border: 1px solid #F0E7CA;
border-top: 1px solid #705B2D;
border-left: 1px solid #705B2D;
}
&:before{
top: -95px;
}
&:after{
top: 95px;
}
&:nth-child(1):before,
&:nth-child(2):before,
&:nth-child(1):after,
&:nth-child(2):after{
border-top: 1px solid #F0E7CA;
border-bottom: 1px solid #705B2D;
border-left: 1px solid #705B2D;
box-shadow:
inset -1px 1px 1px 0 rgba(0,0,0,0.3),
-1px 1px 2px 1px rgba(0,0,0,0.5);
}
&:nth-of-type(3) {
display: none;
}
}
@for $i from 0 through 5 {
.five-minute-markers:nth-of-type(#{$i}) {
transform: rotateZ(calc(-30deg * #{$i}));
}
}
/* Border, glass, bg, day */
[class^="date-window"]{
width: 58px;
height: 48px;
top: -3px;
bottom: 0;
margin: auto;
right: 24px;
position: absolute;
border-radius: 26px / 36px;
overflow: hidden;
}
.date-window{
border: 2px solid #C3BEB8;
border-left: 0 solid transparent;
box-shadow:
inset 2px -2px 12px 2px rgba(255,255,255,0.3),
-2px 0 1px 0 rgba(0,0,0,0.3);
z-index: 1;
/* Shine */
&:after{
@extend %pseudo;
top: -120px;
left: -80px;
width: 172px;
height: 420px;
transform: rotateZ(-18deg);
background: radial-gradient(ellipse at center,
rgba(255,255,255,0) 0%,
rgba(255,255,255,0) 48%,
rgba(255,255,255,0.8) 48%,
rgba(255,255,255,0) 68%);
}
}
/* BG pattern */
.date-window-texture{
background: #F8F8F5;
background-image:
repeating-linear-gradient(45deg, transparent, transparent 4px, #E8E6DF 6px, #E8E6DF 8px),
repeating-linear-gradient(-45deg, transparent, transparent 4px, #E8E6DF 6px, #E8E6DF 8px);
z-index: 0;
}
/* Date number */
#date{
font-family: 'Krona One', sans-serif;
position: absolute;
top: 6px;
bottom: 0;
margin: auto;
right: 30px;
text-align: center;
text-indent:-1px;
letter-spacing: -0.06em;
font-size: 1.5em; /* 24px */
line-height: 1.3;
color: #414242;
height: 36px;
width: 48px;
background: #F8F8FA;
border-top: 6px solid #C9C5BD;
border-bottom: 2px solid #C9C5BD;
border-left: 4px solid #A09891;
border-right: 4px solid #A09891;
box-shadow:
inset -1px 1px 2px 0 rgba(0,0,0,0.5);
z-index: 0;
}
/* Second hand */
.hand-sec{
@extend %ab-center;
position: absolute;
width: 12px;
height: 12px;
border-radius: 50%;
transform: rotateZ(88deg);
&:after,
&:before{
@extend %pseudo;
}
/* Circles */
&:after{
width: inherit;
height: inherit;
border-radius: inherit;
background: #71644A;
border: 3px solid #E5D396;
box-shadow:
inset 1px -2px 1px 0 #F4EDD3,
0 0 2px 1px rgba(0,0,0,0.4);
}
/* Hand */
&:before{
bottom: -26px;
left: 3px;
width: 6px;
height: 146px;
clip-path: polygon(30% 0%, 70% 0, 100% 100%, 0% 100%);
background: linear-gradient(to right,
#FFFBD2 35%,
#69522E 100%);
}
.shadow{
position: absolute;
height: 140px;
width: 0;
bottom: -24px;
left: 6px;
z-index: -1;
transform: rotateZ(2deg);
box-shadow: 0 0 3px 2px rgba(0,0,0,0.5);
}
}
/* Minute hand */
.hand-min{
@extend %ab-center;
position: absolute;
width: 18px;
height: 18px;
border-radius: 50%;
box-shadow: 0 0 2px 1px rgba(0,0,0,0.3);
transform: rotateZ(85deg);
opacity: 1.6;
background: linear-gradient(to right,
#FEFEE9 50%,
#977C44 51%);
&:after,
&:before{
@extend %pseudo;
}
/* Arm */
&:before{
height: 125px;
width: 12px;
bottom: -12px;
left: 2px;
clip-path: polygon(25% 0%, 75% 0, 100% 100%, 0% 100%);
background: inherit;
}
/* Indent */
&:after{
width: 4px;
height: 62px;
background: #fff;
bottom: 44px;
left: 6px;
box-shadow: inset 1px 0 2px 0 rgba(0,0,0,0.5);
}
.shadow{
position: absolute;
@extend %ab-center;
height: 120px;
left: -4px;
width: 5px;
bottom: 78px;
box-shadow: 2px 0 4px 3px rgba(0,0,0,0.5);
z-index: -1;
}
}
/* Hour hand */
.hand-hour{
@extend %ab-center;
position: absolute;
width: 22px;
height: 22px;
border-radius: 50%;
box-shadow: 0 0 6px 1px rgba(0,0,0,0.3);
background: linear-gradient(to right,
#735D33 50%,
#FEFEE9 51%);
transform: rotateZ(80deg);
&:after,
&:before{
@extend %pseudo;
}
/* Arm */
&:before{
height: 88px;
width: 14px;
bottom: -14px;
left: 4px;
clip-path: polygon(18% 0%, 82% 0, 100% 100%, 0% 100%);
background: inherit;
}
/* Indent */
&:after{
width: 6px;
height: 25px;
background: #fff;
bottom: 42px;
left: 8px;
box-shadow: inset -1px 0 3px 0 rgba(0,0,0,0.5);
}
.shadow{
position: absolute;
@extend %ab-center;
height: 84px;
width: 8px;
bottom: 38px;
box-shadow: -2px 0 3px 2px rgba(0,0,0,0.4);
z-index: -1;
}
}
/* Lug shadow */
.lug-bg{
position: absolute;
z-index: -1;
width: 304px;
top: 0;
bottom: 0;
margin: auto 0;
left: 6px;
&:before,
&:after{
@extend %pseudo;
width: inherit;
border-bottom: 144px solid #7D7451;
border-left: 52px solid transparent;
border-right: 52px solid transparent;
top: -26px;
}
&:after{
transform: scaleY(-1);
top: initial;
width: 302px;
left: 1px;
bottom: -32px;
border-bottom-color: #BFB281;
}
}
/* Lug */
.lug{
position: absolute;
width: 64px;
height: 130px;
left: 11px;
top: -27px;
clip-path: polygon(78% 1%, 100% 0, 100% 100%, 8% 100%);
/* Top right position */
&:nth-child(2){
transform: scaleX(-1);
right: 11px;
left: initial;
}
/* Bottom left position */
&:nth-child(3){
transform: scaleY(-1);
top: initial;
bottom: -34px;
}
/* Bottom right position */
&:nth-child(4){
transform: scaleY(-1) scaleX(-1);
top: initial;
bottom: -34px;
right: 11px;
left: initial;
}
/* Top styling */
&:nth-child(1),
&:nth-child(2){
&:before{
@extend %pseudo;
width: 80px;
height: inherit;
transform: rotate(-8deg);
top: 2px;
background: linear-gradient(to bottom,
#7A756B 2%,
#E3DCC2 3%,
#FAF7EE 5%,
#020000 5%,
#020000 6%,
#BBB082 8%,
#EBE2BB 12%,
#FDFDF1 24%,
#F3EFC6 60%);
}
&:after{
@extend %pseudo;
width: 0;
height: 0;
border-style: solid;
border-width: 0 56px 30px 56px;
border-color: transparent transparent #010101 transparent;
bottom: 45px;
left: -14px;
transform: rotate(-38deg);
}
}
/* Bottom styling */
&:nth-child(3),
&:nth-child(4){
&:before{
@extend %pseudo;
width: 80px;
height: inherit;
transform: rotate(-8deg);
top: 2px;
background: linear-gradient(to bottom,
#E3DCC2 3%,
#020000 4%,
#020000 8%,
#71683F 9%,
#EBE2BB 16%,
#F6E7B2 26%,
#FDFDF1 40%);
}
&:after{
@extend %pseudo;
width: 0;
height: 0;
border-style: solid;
border-width: 0 60px 32px 60px;
border-color: transparent transparent #010101 transparent;
bottom: 38px;
left: -17px;
transform: rotate(-38deg);
}
}
}
/* Band details */
.band{
@extend %ab-center;
position: absolute;
height: 594px;
top: 84px;
width: 74px;
/* Top */
.band-detail-top-center{
height: 46px;
width: inherit;
position: absolute;
top: 8px;
background: linear-gradient(to bottom,
#666457 1%,
#EAE7DD 6%,
#17140A 10%,
#17140A 16%,
#D3CAA8 22%,
#F7F4DD 30%,
#F7F4DD 42%,
#AB9862 48%, // one band
#666457 51%,
#EAE7DD 56%,
#17140A 60%,
#17140A 66%,
#D3CAA8 72%,
#F7F4DD 80%,
#F7F4DD 92%,
#AB9862 98%);
&:before{
@extend %pseudo;
height: 8px;
width: inherit;
top: -8px;
background: linear-gradient(to bottom,
#17140A 30%,
#D3CAA8 31%,
#F7F4DD 100%);
}
&:after{
@extend %pseudo;
width: inherit;
height: 52px;
bottom: -52px;
background: linear-gradient(to bottom,
#4F3E19 0%,
#CFC7A8 7%,
#A1985F 8%,
#CFC7A8 9%,
#A1985F 11%,
#CFC7A8 12%,
#17140A 14%,
#17140A 18%,
#FAF6D7 20%,
#FFFDF3 40%,
#8D7C49 48%,
#AB9862 48%, // one band
#4A391A 51%,
#D2C895 54%,
#A1985F 55%,
#D2C895 60%,
#17140A 60%,
#17140A 64%,
#F7F4DD 65%,
#F7F4DD 80%,
#AB9862 94%);
}
}
/* Bottom */
.band-detail-bottom-center{
height: 28px;
width: inherit;
position: absolute;
bottom: 0;
background: linear-gradient(to bottom,
#17140A 4%,
#FFFDEF 5%,
#F0E9C1 20%,
#907A46 52%,
#17140A 54%,
#17140A 70%,
#B1A26B 72%,
#D2CB9E 80%,
#B1A26B 88%,
#D2CB9E 90%,
#17140A 96%);
&:before{
@extend %pseudo;
width: inherit;
height: 64px;
bottom: 28px;
background: linear-gradient(to bottom,
#9C8E5D 0%,
#BFAE74 5%,
#968851 5%,
#BBB39C 10%,
#1B100A 12%,
#1B100A 13%,
#E2DBAC 14%,
#FFFBEA 20%,
#F2EBC4 26%,
#AF9E67 34%,
#010102 36%,
#010102 40%,
#8D7E50 41%,
#B3A673 46%,
#010102 49%,
#010102 50%,
#F0E8C9 51%,
#C6BD99 53%,
#F9F2CA 65%,
#FFFBEA 70%,
#A2925D 84%,
#1B100A 86%,
#1B100A 92%,
#8D7E50 94%,
#B3A673 99%,
#D3C382 100%);
}
&:after{
@extend %pseudo;
width: inherit;
height: 92px;
bottom: 92px;
background: linear-gradient(to bottom,
#F2EBC2 0%,
#FFFFF2 12%,
#C8BB88 18%,
#17140A 20%,
#E5D588 22%,
#17140A 24%,
#17140A 26%,
#DCD8B8 27%,
#FFFFF2 32%,
#FFFFF2 45%,
#F1EAC3 48%,
#B4A26A 56%,
#17140A 58%,
#17140A 60%,
#B39F5D 61%,
#17140A 63%,
#B39F5D 64%,
#17140A 66%,
#17140A 67%,
#DCD8B8 68%,
#FFFFF2 74%,
#FFFFF2 86%,
#B09F64 94%,
#645837 96%,
#17140A 98%);
}
}
}
.band-detail-top-brushed{
position: absolute;
left: -39px;
top: -7px;
width: 152px;
height: 16px;
border-radius: 4px 4px 0 0;
z-index: -1;
background-image:
linear-gradient(180deg,
#5C4D36 10%,
#F1EACA 12%,
#A6925D 50%,
#816D3B 60%,
#816D3B 65%,
#A6925D 70%,
#7A6938 80%);
&:before,
&:after{
@extend %pseudo;
border-radius: 2% 2% 0 0 / 90% 90% 0 0;
}
&:before{
top: 16px;
height: 24px;
width: 158px;
left: -3px;
background-image:
/*-webkit-repeating-linear-gradient(right,
rgba(160,160,160, 0) 0%,
rgba(160,160,160, 0) 3.5%,
rgba(160,160,160, .03) 4%,
rgba(160,160,160, 0) 6%,
rgba(160,160,160, .02) 12%),
-webkit-repeating-linear-gradient(left,
rgba(255,255,255, 0) 0%,
rgba(255,255,255, 0) 1.2%,
rgba(255,255,255, .1) 2.2%),*/
linear-gradient(180deg,
#45350F 8%,
#E7DFBF 10%,
#DBCE9A 34%,
#AB9B63 44%,
#E8DEB2 54%,
#8C7744 80%,
#6E592E 96%);
}
&:after{
top: 40px;
height: 28px;
width: 164px;
left: -6px;
background-image:
/*-webkit-repeating-linear-gradient(right,
rgba(160,160,160, 0) 0%,
rgba(160,160,160, 0) 3.5%,
rgba(160,160,160, .03) 4%,
rgba(160,160,160, 0) 6%,
rgba(160,160,160, .02) 12%),
-webkit-repeating-linear-gradient(left,
rgba(255,255,255, 0) 0%,
rgba(255,255,255, 0) 1.2%,
rgba(255,255,255, .1) 2.2%),*/
linear-gradient(180deg,
#A4956A 8%,
#FAF3D4 9%,
#DBCE9A 38%,
#AB9B63 46%,
#E8DEB2 52%,
#8C7744 70%,
#634A23 78%,
#634A23 82%,
#A29054 88%);
}
}
.band-detail-top-brushed:nth-child(2){
top: 61px;
width: 164px;
border-radius: 0;
height: 30px;
left: -45px;
box-shadow: 0 1px 0 1px #827A5F;
background-image:
linear-gradient(180deg,
#62552A 4%,
#FAF3D4 9%,
#DBCE9A 38%,
#917F47 46%,
#E8DEB2 52%,
#876C2F 100%);
&:before{
top: 30px;
border-radius: 0;
width: inherit;
left: 0;
height: 28px;
background-image:
linear-gradient(180deg,
#432E04 4%,
#FAF3D4 20%,
#DBCE9A 32%,
#917F47 38%,
#E8DEB2 56%,
#876C2F 100%);
}
&:after{
display: none;
opacity: 0;
}
}
.band-detail-bottom-brushed{
position: absolute;
left: -33px;
bottom: 1px;
width: 140px;
height: 14px;
border-radius: 0 0 4% 4% / 0 0 100% 100%;
z-index: -1;
background-image:
linear-gradient(180deg,
#D1CBA3 10%,
#927E4A 70%,
#5C4D36 84%);
&:before,
&:after{
@extend %pseudo;
border-radius: 0 0 2% 2% / 0 0 100% 100%;
}
&:before{
bottom: 14px;
left: -3px;
height: 24px;
width: 146px;
background-image:
linear-gradient(180deg,
#AA9C6A 4%,
#DBCE9A 18%,
#AB9B63 26%,
#F7F4D4 32%,
#E8DEB2 60%,
#8C7744 83%,
#45350F 98%);
}
&:after{
bottom: 38px;
height: 32px;
width: 152px;
left: -6px;
background-image:
linear-gradient(180deg,
#836A3B 3%,
#AA9C6A 12%,
#DBCE9A 22%,
#AB9B63 30%,
#F7F4D4 54%,
#E8DEB2 66%,
#8C7744 88%,
#45350F 96%);
}
}
.band-detail-bottom-brushed:nth-child(2){
position: absolute;
left: -42px;
bottom: 70px;
width: 158px;
height: 37px;
border-radius: 0 0 2% 2% / 0 0 100% 100%;
background-image:
linear-gradient(180deg,
#705C34 6%,
#432E0B 10%,
#705C34 14%,
#B9AA6F 18%,
#EBE1B9 36%,
#C2B381 46%,
#EEE7BB 52%,
#8E7B46 84%,
#432E0B 96%);
&:before,
&:after{
@extend %pseudo;
}
&:before{
bottom: 37px;
left: -3px;
height: 38px;
width: 164px;
border-radius: 0 0 2% 2% / 0 0 80% 80%;
background-image:
linear-gradient(180deg,
#3F2C11 3%,
#7B5F35 8%,
#C0B276 16%,
#E4DBAF 32%,
#9A8956 40%,
#9A8956 48%,
#EEE7BB 52%,
#E4DBAF 68%,
#CABC87 74%,
#91804C 88%,
#9D8C5A 98%);
}
&:after{
border-radius: 0 0 2px 2px;
box-shadow: 0 -1px 0 1px #837445;
bottom: 75px;
height: 60px;
width: 164px;
left: -3px;
background-image:
/* Fake brushed metal */
/*-webkit-repeating-linear-gradient(right,
rgba(160,160,160, 0) 0%,
rgba(160,160,160, 0) 3%,
rgba(160,160,160, .08) 4%),
-webkit-repeating-linear-gradient(left,
rgba(255,255,255, 0) 0%,
rgba(255,255,255, 0) 1.4%,
rgba(255,255,255, .1) 2.1%),*/
linear-gradient(180deg,
#F1EAC2 28%,
#C5B783 36%,
#BBB184 40%,
#50390D 43%,
#B3A367 46%,
#B9AA6D 48%,
#E4DBAF 52%,
#E4DBAF 56%,
#9A8956 62%,
#9A8956 66%,
#EEE7BB 74%,
#E4DBAF 78%,
#5C481E 88%,
#998551 98%);
}
}
/* Crown */
.crown{
width: 24px;
height: 48px;
position: absolute;
right: -22px;
top: 0;
bottom: 0;
margin: auto;
box-shadow: 6px 0 0 -5px #8C7C4F;
border-radius: 10px;
/* Bottom detail */
&:before{
@extend %pseudo;
width: 8px;
height: inherit;
clip-path: polygon(0 10%, 100% 0, 100% 100%, 0 90%);
background: linear-gradient(to bottom,
#F7F1D1 0%,
#977A35 40%,
#37291B 70%,
#877245 100%);
}
/* Top detail */
&:after{
@extend %pseudo;
width: 8px;
height: 43px;
right: 0;
top: 3px;
clip-path: polygon(0 0, 100% 5%, 100% 95%, 0 100%);
background: linear-gradient(to bottom,
#010200 8%,
#DBCD8F 11%,
#FEFFF6 32%,
#DBCD8F 84%,
#010200 90%);
}
.crown-detail{
position: absolute;
z-index: 1;
border-bottom: 3px solid #786E50;
border-left: 2px solid transparent;
border-right: 2px solid transparent;
width: 14px;
right: 5px;
filter: drop-shadow(2px 0 0 #C0B079);
&:before{
@extend %pseudo;
border-top: 3px solid #D1C398;
border-left: 2px solid transparent;
border-right: 2px solid transparent;
height: 0;
width: 14px;
left: -2px;
top: 3px;
filter: drop-shadow(0 6px 0 #C2B693);
}
&:after{
@extend %pseudo;
border-bottom: 3px solid #FAF7E0;
border-left: 2px solid transparent;
border-right: 2px solid transparent;
height: 0;
width: 14px;
left: -2px;
top: 6px;
}
&:nth-of-type(2){
top: 12px;
border-bottom-color: #FDF8E1;
&:before{
border-top-color: #C5B577;
filter: drop-shadow(0 6px 0 #EAE3A5);
}
&:after{
border-bottom-color: #020202;
}
}
&:nth-of-type(3){
top: 24px;
}
&:nth-of-type(4){
top: 36px;
}
}
}
/* Day */
/* Window style */
.day-window-border{
position: absolute;
@extend %ab-center;
width: 220px;
height: 220px;
border-radius: 50%;
clip-path:
polygon(28% 0, 72% 0, 50% 50%, 50% 50%);
box-shadow:
inset 0 0 0 22px #968D7D;
&:before{
@extend %ab-center;
@extend %pseudo;
border-radius: inherit;
width: 218px;
height: 218px;
clip-path: polygon(29% 0, 71% 0, 50% 50%, 50% 50%);
box-shadow:
inset 0 0 0 20px #B8AF9F;
}
}
/* Clip left and right */
.day-window{
position: absolute;
@extend %ab-center;
border-radius: inherit;
width: 218px;
height: 218px;
clip-path:
polygon(31% 0, 69% 0, 50% 50%, 50% 50%);
/* White window */
&:before{
@extend %ab-center;
@extend %pseudo;
border-radius: inherit;
width: 214px;
height: 214px;
clip-path: polygon(31% 0, 69% 0, 50% 50%, 50% 50%);
box-shadow:
inset 0 0 1px 2px #635D58,
inset 0 0 0 14px #FDF9FB;
}
}
/* Rotate by 51.4285deg for proper day */
.day-wrapper{
position: absolute;
@extend %ab-center;
width: 208px;
height: 208px;
border-radius: 50%;
/* Monday
transform:rotateZ(-51.4285deg);*/
/* Tuesday
transform:rotateZ(-102.857deg);*/
/* Wednesday
transform:rotateZ(-154.2855deg);*/
/* Thursday
transform:rotateZ(-205.714deg);*/
/* Friday
transform:rotateZ(-257.1425deg);*/
/* Saturday
transform:rotateZ(-308.571deg);*/
/* Divide circle into 7 equal parts */
.day{
height: 104px;
width: 100px;
clip-path: polygon(50% 100%, 0 0, 100% 0);
transform-origin: bottom center;
position: absolute;
left: 54px;
top: 0;
text-align: center;
font-size: 12px;
font-family: 'Cousine', monospace;
color: #3A3737;
text-transform: uppercase;
}
}
.text-wrapper{
transform-origin: bottom center;
position: absolute;
margin: auto;
left:-5px;
top: 0.08em;
bottom: 0;
right: 0;
}
.day {
span{
height: 100px;
position: absolute;
transform-origin: bottom center;
//background: rgba(255,0,0,0.3);
}
&:nth-child(1) {
.text-wrapper{
transform:rotateZ(-10.5deg);
}
}
&:nth-child(2) {
.text-wrapper{
transform:rotateZ(-12.5deg);
}
}
&:nth-child(3) {
.text-wrapper{
transform:rotateZ(-16.5deg);
}
}
&:nth-child(4) {
.text-wrapper{
transform:rotateZ(-14.5deg);
}
}
&:nth-child(5) {
.text-wrapper{
transform:rotateZ(-10.5deg);
}
}
&:nth-child(6) {
.text-wrapper{
transform:rotateZ(-14deg);
}
}
&:nth-child(7) {
.text-wrapper{
transform:rotateZ(-9.5deg);
}
}
}
@for $i from 0 through 7{
.day:nth-child(#{$i}){
transform: rotateZ(calc(51.4285deg * #{$i}));
}
}
@for $i from 0 through 8 {
.char#{$i} {
transform: rotateZ(calc(4deg * #{$i}));
}
}
View Compiled
// Add day, date, and time functionality
// Get current date
var today = new Date();
var day = today.getDate();
var out = document.getElementById("date");
out.innerHTML = day;
// Time
$(document).ready(function() {
setInterval(function(){
getTime();
}, 50);
function getTime() {
var d = new Date();
var s = d.getSeconds() + (d.getMilliseconds()/1000);
var m = d.getMinutes();
var h = hour12();
$(".hand-sec").css("transform", "rotateZ(" + s*6 + "deg)");
// Smoother minute hand transition. Thanks Michel Poulain @poulain !
$(".hand-min").css("transform", "rotateZ(" + (m*6+s*0.1) + "deg)");
$(".hand-hour").css("transform", "rotateZ(" + (h*30 + m*0.5) + "deg)");
function hour12() {
var hour = d.getHours();
if(hour >= 12) {
hour = hour-12;
}
if(hour == 0) {
h = 12;
}
return hour;
}
}
// Rotate day wheel based on day of the week. Thanks Kaa Kihe @simplesessions!
const ROTATE_DELTA = 51.42857 /* 360 / 7 */
const getRotateFactor = day => day * ROTATE_DELTA
const rotate = el =>
el.style.transform = `rotate(-${getRotateFactor(day)}deg)`
let day = (new Date()).getDay()
const updateDay = e => {
day += 1
rotate(e.target)
}
const dayWrapper = document.querySelector('.day-wrapper')
rotate(dayWrapper)
setTimeout(() => {
const lastDay = day
day = (new Date()).getDay()
if (day !== lastDay) {
day += 1
rotate(dayWrapper)
}
}, 1000)
});
This Pen doesn't use any external CSS resources.