Pen Settings



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


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


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.


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.


        h4 First Name
        input(name="firstName" type="text")
        h4 Last Name
        input(name="lastName" type="text") 
        h4 Language
                option(value="en") English
                option(value="zh") 中文
    button.button →
        span.closeButton x


                $iconBox: 40px
$loginBoxWidth: 380px
$colorPurple: #B993D6
$colorBlue: #8CA6DB
$colorRed: rgb(186, 49, 80)
    // border: 1px solid

body, html
    margin: 0
    box-sizing: border-box
    padding: 15px
    background: linear-gradient(to left, $colorPurple , $colorBlue)
    width: 100%
    height: 100%
    display: flex
    margin: 0
    padding: 30px 40px 0px 50px
    opacity: 0.5
    width: $loginBoxWidth
    margin: auto
    position: relative
    z-index: 1
    padding-bottom: 40px
    border-radius: 8px
    background-color: #EEE
    padding: 20px 20px 60px
    box-shadow: 0 0 10px #777
    transition: 0.5s
        background-color: #FFF
    width: $iconBox
    height: $iconBox
    text-align: center
.icon, input, .styleSelect
    display: inline-block
    vertical-align: bottom
    margin-bottom: 5px
    margin-left: 10px
    width: calc(90% - #{$iconBox})
    height: 27px
    border: 0px solid 
    border-bottom: 2px solid rgba($colorPurple, 0.3)
    outline: none
    transition: 0.3s
    font-size: 20px
    background-color: transparent
        border-color: $colorPurple
        border-bottom-color: $colorRed
    margin-top: 15px
    margin-left: 5px
    margin-bottom: 5px
    background: url( no-repeat 96% 0
    height: 32px
    overflow: hidden
    width: calc(95% - #{$iconBox})
    border: 1px solid $colorPurple
        background: transparent
        border: none
        font-size: 14px
        height: 32px
        padding: 5px
        width: 150%
    border-radius: 50%
    background-color: $colorRed
    color: white
    position: absolute
    width: 50px
    height: 50px
    right: 20px
    font-size: 22px
    bottom: -18px
    border: none
    cursor: pointer
    box-shadow: 0 0 10px #777
    position: absolute
    width: 50%
    height: auto
    left: 50%
    top: 50%
    transform: translate(-50%, -50%)
    z-index: 3
    background-color: #EFEFEF
    padding: 20px 20px 60px
    box-shadow: 0 0 10px #777
    transition: 0.5s
    border-radius: 10px
    display: none
        text-align: right
        box-sizing: border-box
        margin-bottom: 10px
            font-size: 40px
            display: inline-block
            cursor: pointer
            width: 40px
            height: 40px
            line-height: 30px
            text-align: center
        width: 100%
        margin: 0 auto
        font-size: 20px
        padding-right: 0.1em
        height: 100%
        display: inline
        border-right: 2px solid #333


                // Constructor
let greetr = function(firstName, lastName, language) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.language = language;
greetr.prototype = {
    greeting: function() {
        if (this.language === "en") {
            return "Hello, " + this.firstName + ' ' + this.lastName;
        } else {
            return "你好, " + this.firstName + ' ' + this.lastName;

//  Add TypeWritter Effect
let count = 0;
let blink = function() {
    if (count == 0) {
        count = 1;
    } else {
        count = 0;
let end = 0;
let typeWriter = function(msg) {
    $('.msg').html(msg.substr(0, end));
    if (end == msg.length + 1) clearInterval(clock);

//  Check InputValue
let checkInputVal = function(el) {
    $(el).blur(function() {
        if ($(this).val()) {

let guest, clock, blinkr, firstName, lastName, language, msg;
$("#loginBox").on('click', ".button", function() {
    firstName = $('input[name=firstName]').val();
    lastName = $('input[name=lastName]').val();
    language = $("#lang").val();

    if (firstName && lastName) {
        guest = new greetr(firstName, lastName, language);
        msg = guest.greeting();
        clock = setInterval(typeWriter, 100, msg);
        blinkr = setInterval(blink, 500);
    } else {
        if (!firstName) {
        } else if (!lastName) {


$('.closeButton').on('click', function() {
    end = 0;

//  for debug

// $("#loginBox").hide();
// $("#login").show();
// let msg = "Lorem Ipsum is simply dummy text of the printing ";
// let clock = setInterval(typeWriter, 50, msg);
// let blinkr = setInterval(blink, 500);