(Very) simple modals
Modals seem anymore to be in vogue only for interrupting a user's thought or attention flow with an advertisement or 'special offer' to 'join now' etc. In my experience, where modals were sought by design & marketing for signing up or logging in, modals were especially painful on mobile devices and we soon opted to eliminate modals, which, in that particular case, was fairly easy since the site (a storefront for a subscription service) was a Single Page App. All the reasons for not using modals in your flows & funnels aside, I enjoy creating them, especially the challenges that mobile presents. Enter Otter Modals.
Otter Modals is a simple modal feature. The goal was to create a modal content feature with a small footprint and a decent amount of stylability. To achieve this, much of the setup is 'manual', meaning only that there are a few prerequisite requirements outside the scope of the functionality built into Otter.
Otter provides a somewhat inventive solution for displaying 'modal' content on mobile devices i.e. in a 'drawer' (see the demos). Also provided are eight 'intro' animations for accentuation.
To satisfy the desire for simplicity, each modal instance requires a specific HTML structure. In past modal features I've built, I had all of this added dynamically. However this time I felt it 'simpler' to leave the 'how' for getting the modal container and content into the DOM up to the specific abilities of the developer who knows best their existing code. This shouldn't be too difficult and leaves the 'what' content open fairly wide I should think.
The HTML structure should look like this:
<div id="{any ID you wish}" class="otter" style="display: none;"> <div class="otter-outer"> <!-- The × is a multiplication icon entity. Use whatever fits your branding --> <a href="#" class="otter-close o-close-x">×</a> <div class="otter-inner"> {Any content you require} <!-- Add a button or link to close the modal inside the modal content if desired --> <p><a href="#" class="otter-close">Close Modal</a></p> </div> </div> </div>
All of the visual design attributes of the modal is left to the CSS. otter.css has a minimal set of visual styles - the comments within the file indicate what can 'safely' be edited to fit your desired visual style.
If you have more than one modal on a specific page and you wish to have a different look for each, this is easily achieved by adding a class to the otter.css file to override the defaults and add the class to the appropriate HTML element (normally .otter-outer or .otter-inner). See the notes in otter.css.
There are several configurations that can be included at instantiation. Of course, none of these are exclusively required, however there are advantages to doing so. You may include only those configurations you require to suit your needs. Any left out will use their default values. Here they are listed with explanation.
There is a dependency on jQuery, so be sure to include the jQuery library.
Beyond that, all you need are the otter.css and otter.js files.
Here is an example of setting things up.
var otterdemo = new OTTER(); otterdemo.init({ 'mobileDrawer' : true, 'desktopDrawer' : false, 'triggerClass' : 'otterdemo', 'contentHook' : 'data-content', 'blurBehind' : 'page', 'overlayClose' : true, 'animatedIntro' : 'bounce' });
And the trigger should look something like this:
<a href="#" class="otterdemo" data-content="hellomodal">trigger for hello modal</a>
You can download the files with a demo page from this page, or to ensure you download the latest version (in case I get the time to make improvements) from my github account.
demo modal 1: overlay on both modal and desktop, rubberBand animation
demo modal 3: no configs provided, all defaults
demo modal 4: drawer for mobile and desktop
demo modal 5: the pulse animation
demo modal 6: the shake animation
demo modal 7: the swing animation
demo modal 8: the tada animation
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.
In hac habitasse platea dictumst. Nullam vel arcu fermentum, feugiat ipsum ut, efficitur orci. Nullam non leo nisl. Fusce in molestie sem. Morbi fringilla fermentum dolor, sit amet blandit mauris maximus ut. Nulla auctor leo nibh, sit amet euismod arcu sodales eget. Sed venenatis viverra metus. Nulla facilisi. In nec facilisis orci. Fusce rhoncus molestie pretium. Vestibulum eu efficitur quam. Vestibulum fringilla, velit ac vulputate luctus, ipsum eros aliquam tellus, a viverra neque magna eget turpis. Vivamus sed sodales erat. Donec commodo sit amet enim eu mollis.