Modal-Style Text Selection with Fokus

By  on  

Every once in a while I find a tiny JavaScript library that does something very specific, very well.  My latest find, Fokus, is a utility that listens for text selection within the page, and when such an event occurs, shows a beautiful modal dialog in the background of the entire page, allowing only the highlighted block to display at it's normal mode.

The HTML

Nothing special needs to be done with the page HTML, and you don't create "active" zones -- simply include the JavaScript file at the bottom of the page:

<!-- at bottom of the page -->
<script src="fokus/js/fokus.min.js" async></script>

The overlay elegantly fades in and out.  Canvas is used to create the overlay, and CSS' pointer-events property is used to ensure event handling consistency.  It would be great if Fokus was a bit more modular, including allowing active zones and customized overlay color, but it's hard to complain about anything else with Fokus.

Fokus isn't a necessity for any site, but I was taken aback by how smooth and accurate Fokus is.  Weighing in at just 3KB, it's an impressive little library.  Have an idea for how you'd use Fokus?  Share it!

Recent Features

  • By
    39 Shirts &#8211; Leaving Mozilla

    In 2001 I had just graduated from a small town high school and headed off to a small town college. I found myself in the quaint computer lab where the substandard computers featured two browsers: Internet Explorer and Mozilla. It was this lab where I fell...

  • By
    fetch API

    One of the worst kept secrets about AJAX on the web is that the underlying API for it, XMLHttpRequest, wasn't really made for what we've been using it for.  We've done well to create elegant APIs around XHR but we know we can do better.  Our effort to...

Incredible Demos

  • By
    New MooTools Plugin:  ElementFilter

    My new MooTools plugin, ElementFilter, provides a great way for you to allow users to search through the text of any mix of elements. Simply provide a text input box and ElementFilter does the rest of the work. The XHTML I've used a list for this example...

  • By
    Create a Spinning, Zooming Effect with CSS3

    In case you weren't aware, CSS animations are awesome.  They're smooth, less taxing than JavaScript, and are the future of node animation within browsers.  Dojo's mobile solution, dojox.mobile, uses CSS animations instead of JavaScript to lighten the application's JavaScript footprint.  One of my favorite effects...

Discussion

  1. patrick

    why not using it when using html5 contenteditable. it would play very nice together by let the user focus on the content he wants to edit.

  2. nice find. one thing; your website search box is broke. i couldn’t search for anything directly from the box and i had to use google for searching your website.

  3. smashercosmo

    Nice plugin. But I think, that implementation is too complex. It would be rather simpler to add outline: 999px solid rgba(0,0,0,0.7) to the focused block instead of rendering canvas.

  4. Nice… but until I was told what to do to make it work in the demo I would never have known! And that’s where it falls down.

  5. You could totally use this tool to launch a submenu that allows you to print it, send it to someone or post to twitter, etc. It would be super cool and as always you rock for puttin’ this out.

    • Alex

      This is really the best idea for this snippet. Thanks for sharing!

  6. how can you have an option to edit the text selected?
    Thank you

  7. s23q

    where is this to download??

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!