Reedo0910 / zoom-vanilla.js

Medium's image zoom in vanilla JS (no jQuery & no offset on enlarged images).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

zoom-vanilla.js (no offset on the enlarged images)

A simple library for image zooming; as seen on Medium. It zooms in really smoothly and zooms out when you click again, scroll away, or press the esc key.

If you hold the or Ctrl key when clicking the image, it will open the image in a new tab instead of zooming it.

This is a fork of the zoom-vanilla.js. Please refer to the original doc and repo for demos and more details. These are the key differences:

  1. No offset on the enlarged images.

Installation

  1. Download the JS and CSS files by:    

    • Manually download dist/zoom-vanilla.min.js and dist/zoom.css from GitHub
  2. Add the zoom-vanilla.min.js and zoom.css files to your HTML page:

    <!-- inside <head> -->
    <link href="path/to/dist/zoom.css" rel="stylesheet">
    
    <!-- before </body> -->
    <script src="path/to/dist/zoom-vanilla.min.js"></script>

    You can also import them if you're using webpack:

    import "path/to/dist/zoom.css"
    import "path/to/dist/zoom-vanilla.min.js"

Usage

Add a data-action="zoom" attribute to the images you want to make zoomable:

<img src="img/blog_post_featured.png" data-action="zoom">

Browser support

zoom-vanilla.js should (in theory) work in all modern browsers. If not, create an issue! Thanks!

Known issues

  • The image is appended to the body; use an appropriate CSS selector for extra styling
  • Zooming may not be quite right if the aspect ratio of the image is changed

Build

  • git clone the repo
  • npm i to install dev dependencies
  • npm start to start a simple HTTP server (makes it easy to view the demo page)
  • npm run build to build the minified JS and vendor-prefixed CSS
  • npm run watch to rebuild when any JS files change (recommended for development)

About

Medium's image zoom in vanilla JS (no jQuery & no offset on enlarged images).

License:MIT License


Languages

Language:JavaScript 52.9%Language:HTML 42.8%Language:CSS 3.3%Language:Nix 1.0%