Pen Settings

HTML

CSS

CSS Base

Vendor Prefixing

Add External Stylesheets/Pens

Any URLs added here will be added as <link>s in order, and before the CSS in the editor. You can use the CSS from another Pen by using its URL and the proper URL extension.

+ add another resource

JavaScript

Babel includes JSX processing.

Add External Scripts/Pens

Any URL's added here will be added as <script>s in order, and run before the JavaScript in the editor. You can use the URL of any other Pen and it will include the JavaScript from that Pen.

+ add another resource

Packages

Add Packages

Search for and use JavaScript packages from npm here. By selecting a package, an import statement will be added to the top of the JavaScript editor for this package.

Behavior

Auto Save

If active, Pens will autosave every 30 seconds after being saved once.

Auto-Updating Preview

If enabled, the preview panel updates automatically as you code. If disabled, use the "Run" button to update.

Format on Save

If enabled, your code will be formatted when you actively save your Pen. Note: your code becomes un-folded during formatting.

Editor Settings

Code Indentation

Want to change your Syntax Highlighting theme, Fonts and more?

Visit your global Editor Settings.

HTML

              
                .div
              
            
!

CSS

              
                *, *::after, *::before
  box-sizing border-box

:root
  --width 30vh
  --height 50vh
  --depth 5vh
  --ground 35vh
  --bg rgba(0,0,0,1)
  --stroke rgba(255,255,255,1)
  --trans rgba(0,0,0,0)
  --border 0.35vh
  --border-n calc(var(--border) * -1)
  --radius calc(var(--width) / 2)
  --duration 3.5s

html, body
  height 100%

body
  color var(--stroke)
  background-color var(--bg)
  background-image linear-gradient(158deg, #353535, transparent)
  background-attachment fixed
  overflow hidden
  display flex
  justify-content center
  align-items center

.div, .div::before, .div::after
  animation-duration 8s
  animation-timing-function ease-out
  // animation-delay 0
  animation-iteration-count infinite
  // animation-direction forwards
  // animation-fill-mode both


// div ------------------------------------------------------------
.div
  position relative
  width var(--width)
  height var(--height)
  border var(--border) solid var(--stroke)
  animation-name Div

@keyframes Div
  from, 20%
    border-top-left-radius 0
    border-top-right-radius 0
    box-shadow \ 
      0 0 0 var(--border-n) inset var(--bg), //arch
      0 0 0 inset var(--stroke), // arch
      0 0 0 var(--border-n) var(--bg), // stair
      0 0 0 var(--stroke), // stair
      0 0 0 var(--border-n) var(--bg), // frame
      0 0 0 0 var(--stroke) // frame

  40%
    border-top-left-radius var(--radius)
    border-top-right-radius var(--radius)
    box-shadow \ 
      var(--depth) 1.5vh 1px inset var(--bg), //arch
      var(--depth) 1.5vh 0 var(--border) inset var(--stroke), // arch
      0 0 0 var(--border-n) var(--bg), // stair
      0 0 0 var(--stroke), // stair
      0 0 0 var(--border-n) var(--bg), // frame
      0 0 0 0 var(--stroke) // frame

  60%, 80%
    border-top-left-radius var(--radius)
    border-top-right-radius var(--radius)
    box-shadow \ 
      var(--depth) 1.5vh 1px var(--bg) inset, //arch
      var(--depth) 1.5vh 0 var(--border) var(--stroke) inset, // arch
      0 var(--depth) 0 var(--border-n) var(--bg), // stair
      0 var(--depth) 0 var(--stroke), // stair
      0 0 0 calc(var(--depth) - var(--border)) var(--bg), // frame
      0 0 0 var(--depth) var(--stroke) // frame

  to
    border-top-left-radius 0
    border-top-right-radius 0
    box-shadow \ 
      0 0 0 var(--border-n) inset transparent, //arch
      0 0 0 inset transparent, // arch
      0 0 0 var(--border-n) transparent, // stair
      0 0 0 var(--stroke), // stair
      0 0 0 var(--border-n) transparent, // frame
      0 0 0 0 transparent // frame

  80%
    background transparent
  81%
    background white
  82%
    background transparent

// div::before ------------------------------------------------------------
div::before
  content ""
  position absolute
  top var(--border-n)
  z-index -1
  height var(--height)
  border-top-left-radius var(--radius)
  border-top-right-radius var(--radius)
  animation-name Div_before

@keyframes Div_before
  from, 40%
    left 0
    width var(--width)
    box-shadow \ 
        0 0 0 var(--border-n) var(--bg), // depth
        0 0 0 var(--stroke)

  60%, 80%
    width calc(var(--width) + var(--depth))
    left calc(var(--depth) * -1)
    border-top-left-radius var(--radius)
    border-top-right-radius var(--radius)
    box-shadow \ 
      var(--depth) 0 0 calc(var(--depth) - var(--border)) var(--bg), // depth
      var(--depth) 0 0 var(--depth) var(--stroke)

  to
    left 0
    width var(--width)
    border-top-left-radius 0
    border-top-right-radius 0
    box-shadow \ 
        0 0 0 var(--border-n) transparent, // depth
        0 0 0 transparent

// div::after ------------------------------------------------------------
.div::after
  content "~ toabr.de ~"
  position fixed
  width 100vw
  height var(--ground)
  bottom 0
  left 0
  z-index -2
  font-size 3.5vh
  text-align center
  animation-name Div_after
  animation-timing-function ease-in

@keyframes Div_after
  from, 40%
    box-shadow \
      calc(50vw - var(--width) / 2) calc((100vh - var(--height)) / -2) 1px inset transparent, // left box
      calc(-50vw - var(--width) / 2) 0 transparent, // left box
      calc(-50vw + var(--width) / 2) calc((100vh - var(--height)) / -2) 1px inset transparent, // right box
      calc(50vw + var(--width) / 2) 0 transparent // right box
      
  80%
    box-shadow \
      calc(50vw - var(--width) / 2) calc((100vh - var(--height)) / -2) 1px inset var(--bg), // left box
      calc(-50vw - var(--width) / 2) var(--border-n) var(--stroke), // left box
      calc(-50vw + var(--width) / 2) calc((100vh - var(--height)) / -2) 1px inset var(--bg), // right box
      calc(50vw + var(--width) / 2) var(--border-n) var(--stroke) // right box
    
  // Text --------------------------
  from, 60%, to
    padding-left 0
    font-size 3.5vh
    color var(--stroke)
  
  85%, 98%
    padding-left 8.5vw
    font-size 0
    color transparent

  98%, to
    padding-left 0
    font-size 3.5vh
              
            
!

JS

              
                
              
            
!
999px

Console