Hung-Yi’s Journal

Front-end Developer, Emacs Adventurer, Home Cook

03 Sep 2020

Pure CSS Map Marker

A cute little map marker happens to be one of the things you can easily create with pure CSS without too much sorcery. All it takes is a div with 3 rounded corners, some transform rotation, and (optionally) a matching pair of :before and :after CSS pseudo-elements to dress it up.

Check it out!

To get the above result, include the following CSS somewhere on the page (or in an appropriate place in your project).

.marker {
    /* Set the marker size here */
    width: 2rem;
    height: 2rem;
    border-radius: 2rem;
    /* Set the marker color here */
    background: #aa3300;

    display: inline-block;
    border-bottom-right-radius: 0;
    position: relative;
    transform: rotate(45deg);

    /* optional fanciness */
    border: 1px solid #881100;
}
/* inner circle (optional if you don't need the central dot) */
.marker::before {
    content: "";
    background: white;
    width: 50%;
    height: 50%;
    border-radius: 100%;
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);

    /* optional fanciness */
    border: 1px solid #881100;
    box-shadow: 0.1rem 0.1rem 0.2rem 0.1rem rgba(0, 0, 0, 0.1);
}
/* shadow (optional if you don't need a shadow) */
.marker::after {
    content: "";
    background: rgba(128, 128, 128, 0.2);
    width: 75%;
    height: 75%;
    border-radius: 100%;
    position: absolute;
    top: 100%;
    left: 100%;
    transform: translate(-50%, -50%) rotate(45deg) scaleX(0.5);
}

Then place this HTML where you want the marker to appear.

<div class="marker"></div>