Interactive 3D Mall Map

An interactive 3D mall map concept with a sidebar search and pin indicators for every level.

Today we’d like to share a little 3D experiment with you. The idea is to show a mall map with all its floors in perspective. Additionally, we have a search in a sidebar that allows to filter mall spaces. Once a floor is selected, we show some pins as indicators for the different stores/spaces. When clicking on a pin, we show some more details of that space. We’ve mostly used CSS trickery for this, applying transitions that will rotate and move the levels by adding or removing classes. The levels are represented by inline SVGs.

The responsiveness of this concept is powered by the viewport unit vmin which allows us to use the smallest viewport side for sizing our elements.

This concept can be applied to any kind of floor map actually; any building that has several floors and spaces could be an interesting use case for this.

Attention: This is a highly experimental proof-of-concept. 3D and viewport units support is needed for this to work.

For the filtering and ordering of the spaces list in the sidebar we are using List.js, a great library for adding search, sort, filters and flexibility to tables, lists and various HTML elements.

The following is the initial view of the mall:

InteractiveMallMap_01

When clicking on a level or when clicking on a space in the sidebar, the respective level opens and the pins show:

InteractiveMallMap_02

Tiny break: 📬 Want to stay up to date with frontend and trends in web design? Subscribe and get our Collective newsletter twice a tweek.

Clicking on a pin will open the details for that space:

InteractiveMallMap_03

We hope you enjoy this little experiment and find it inspiring!

Manoela Ilic

Manoela is the main tinkerer at Codrops. With a background in coding and passion for all things design, she creates web experiments and keeps frontend professionals informed about the latest trends.

Stay in the loop: Get your dose of frontend twice a week

Fresh news, inspo, code demos, and UI animations—zero fluff, all quality. Make your Mondays and Thursdays creative!

Feedback 92

Comments are closed.
  1. Beautiful, simple and efficient ! Great work as usual. When I see interactive screens in some malls and their poor performances… You are light years ahead of them.
    Good job again !

  2. Nice oneeeeeeeeee
    how can i change the pics and put the map for my building

  3. It should switch to a more “plane” mode on mobiles in portrait mode, since a map becomes too small while there are a lot of empty space.

  4. So good! Usable, clean, organized and edgy without being techie! Briliant work 🙂

  5. This is fantastic, great work! Thanks for sharing on Github, will look at creating a floorplan of our building for new (and old!) employees to reference.

  6. Could you tell me what program you used to create these svg floor layer images? inkscape? illustrator? sketch? Great work!

    • Hi Mary Lou,

      Hope you are doing great!

      Really need your help on this one.

      Is there a way you can add a link in the content_details that will trigger / open up another pin?

      Thank you so much.

  7. Congratulations for you work, I had a question, how you draw the plans (the floors layers)? to hand or use some software

  8. Great work!

    Is there a way to bind the pins to the svg paths withouth specify the placement in the css class?

  9. Could you tell me how I would use my own SVG file- I tried some simple shapes, and although it’s easy to swap the shapes- the JS that hides the descriptive content of the markers and the Titles of the content fail when I used my own svg- I’m assuming your SVG’s have id’s that are JS hooks that add display:none classes or- initializes an animation- maybe class=”map__space”… Tried a bunch of things but can’t get it to work

  10. Very strong work. Maybe there’s some way to speed up the design of the floors, may be invented any plugin for visual modeling of floors?

  11. Clever! I like the user interface.

    At Micello, we make indoor maps. It might be cool to explore connecting our data as an input to your visualization tool.

    Ankit

  12. Good morning,
    I try to make changes but without success.
    how to display only the icon pin of the selected name in the liste and hide all others pin?

    Thank you