Holder renders image placeholders in browser using SVG

Overview

Holder

Holder renders image placeholders in browser using SVG.

Used by thousands of open source projects (including Bootstrap v3) and many other sites.

No extra requests, small bundle size, highly customizable.

npm Travis Build Status Package Quality NerdyData Popularity jsDelivr Hits

Installing

Usage

Include holder.js in your HTML:

">
<script src="holder.js">script>

Holder will then process all images with a specific src attribute, like this one:

">
<img src="holder.js/300x200">

The above tag will render as a placeholder 300 pixels wide and 200 pixels tall.

To avoid console 404 errors, you can use data-src instead of src.

Programmatic usage

To programmatically insert a placeholder use the run() API:

var myImage = document.getElementById('myImage');

Holder.run({
  images: myImage
});

Placeholder options

Placeholder options are set through URL properties, e.g. holder.js/300x200?x=y&a=b. Multiple options are separated by the & character.

  • theme: The theme to use for the placeholder. Example: holder.js/300x200?theme=sky
  • random: Use random theme. Example: holder.js/300x200?random=yes
  • bg: Background color. Example: holder.js/300x200?bg=2a2025
  • fg: Foreground (text) color. Example: holder.js/300x200?fg=ffffff
  • text: Custom text. Example: holder.js/300x200?text=Hello
  • size: Custom text size. Defaults to pt units. Example: holder.js/300x200?size=50
  • font: Custom text font. Example: holder.js/300x200?font=Helvetica
  • align: Custom text alignment (left, right). Example: holder.js/300x200?align=left
  • outline: Draw outline and diagonals for placeholder. Example: holder.js/300x200?outline=yes
  • lineWrap: Maximum line length to image width ratio. Example: holder.js/300x200?lineWrap=0.5

Themes

Holder includes support for themes, to help placeholders blend in with your layout.

There are 6 default themes: sky, vine, lava, gray, industrial, and social.

Customizing themes

Themes have 5 properties: fg, bg, size, font and fontweight. The size property specifies the minimum font size for the theme. The fontweight default value is bold. You can create a sample theme like this:

Holder.addTheme("dark", {
  bg: "#000",
  fg: "#aaa",
  size: 11,
  font: "Monaco",
  fontweight: "normal"
});

If you have a group of placeholders where you'd like to use particular text, you can do so by adding a text property to the theme:

Holder.addTheme("thumbnail", { bg: "#fff", text: "Thumbnail" });

Using custom themes

There are two ways to use custom themes with Holder:

  • Include theme at runtime to render placeholders already using the theme name
  • Include theme at any point and re-render placeholders that are using the theme name

The first approach is the easiest. After you include holder.js, add a script tag that adds the theme you want:

">
<script src="holder.js">script>
<script>
Holder.addTheme("bright", {
  bg: "white", fg: "gray", size: 12
});
script>

The second approach requires that you call run after you add the theme, like this:

Holder.addTheme("bright", {bg: "white", fg: "gray", size: 12}).run();

Using custom themes and domain on specific images

You can use Holder in different areas on different images with custom themes:

">
<img data-src="example.com/100x100?theme=simple" id="new">
Holder.run({
  domain: "example.com",
  themes: {
    "simple": {
      bg: "#fff",
      fg: "#000",
      size: 12
    }
  },
  images: "#new"
});

Inserting an image with custom theme

You can add a placeholder programmatically by chaining Holder calls:

Holder.addTheme("new", {
  fg: "#ccc",
  bg: "#000",
  size: 10
}).addImage("holder.js/200x100?theme=new", "body").run();

The first argument in addImage is the src attribute, and the second is a CSS selector of the parent element.

Text

Holder automatically adds line breaks to text that goes outside of the image boundaries. If the text is so long it goes out of both horizontal and vertical boundaries, the text is moved to the top. If you prefer to control the line breaks, you can add \n to the text property:

">
<img data-src="holder.js/300x200?text=Add \n line breaks \n anywhere.">

If you would like to disable line wrapping, set the nowrap option to true:

">
<img data-src="holder.js/300x200?text=Add \n line breaks \n anywhere.&nowrap=true">

When using the text option, the image dimesions are not shown. To reinsert the dimension into the text, simple use the special holder_dimensions placeholder.

">
<img data-src="holder.js/90px80p?theme=sky&text=Placeholder dimensions: holder_dimensions">

Placeholders using a custom font are rendered using canvas by default, due to SVG's constraints on cross-domain resource linking. If you're using only locally available fonts, you can disable this behavior by setting noFontFallback to true in Holder.run options. However, if you need to render a SVG placeholder using an externally loaded font, you have to use the object tag instead of the img tag and add a holderjs class to the appropriate link tags. Here's an example:

">
<head>
<link href="http://.../font-awesome.css" rel="stylesheet" class="holderjs">
head>
<body>
<object data-src="holder.js/300x200?font=FontAwesome">object>

Important: When testing locally, font URLs must have a http or https protocol defined.

Important: Fonts served from locations other than public registries (i.e. Google Fonts, Typekit, etc.) require the correct CORS headers to be set. See How to use CDN with Webfonts for more details.

placeholders work like placeholders, with the added benefit of their DOM being able to be inspected and modified. As with placeholders, the data-src attribute is more reliable than the data attribute.

Fluid placeholders

Important: Percentages are specified with the p character, not with the % character.

Specifying a dimension in percentages creates a fluid placeholder that responds to media queries.

">
<img data-src="holder.js/100px75?theme=social">

By default, the fluid placeholder will show its current size in pixels. To display the original dimensions, i.e. 100%x75, set the textmode flag to literal like so: holder.js/100px75?textmode=literal.

Automatically sized placeholders

If you'd like to avoid Holder enforcing an image size, use the auto flag like so:

">
<img data-src="holder.js/200x200?auto=yes">

The above will render a placeholder without any embedded CSS for height or width.

To show the current size of an automatically sized placeholder, set the textmode flag to exact like so: holder.js/200x200?auto=yes&textmode=exact.

Preventing updates on window resize

Both fluid placeholders and automatically sized placeholders in exact mode are updated when the window is resized. To set whether or not a particular image is updated on window resize, you can use the setResizeUpdate method like so:

var img = $('#placeholder').get(0);
Holder.setResizeUpdate(img, false);

The above will pause any render updates on the specified image (which must be a DOM object).

To enable updates again, run the following:

Holder.setResizeUpdate(img, true);

This will enable updates and immediately render the placeholder.

Background placeholders

Holder can render placeholders as background images for elements with the holderjs class, like this:

#sample {background:url(?holder.js/200x200?theme=social) no-repeat}
">
<div id="sample" class="holderjs">div>

The Holder URL in CSS should have a ? in front. Like in image placeholders, you can specify the Holder URL in a data-background-src attribute:

">
<div class="holderjs" data-background-src="?holder.js/300x200">div>

Important: Make sure to define a height and/or width for elements with background placeholders. Fluid background placeholders are not yet supported.

Runtime settings

Holder provides several options at runtime that affect the process of image generation. These are passed in through Holder.run calls.

  • domain: The domain to use for image generation. Default value: holder.js.
  • dataAttr: The HTML attribute used to define a fallback to the native src attribute. Default value: data-src.
  • renderer: The renderer to use. Options available: svg, canvas. Default value: svg.
  • images: The CSS selector used for finding img tags. Default value: img.
  • objects: The CSS selector used for finding object placeholders. Default value: object.
  • bgnodes: The CSS selector used for finding elements that have background palceholders. Default value: body .holderjs.
  • stylenodes: The CSS selector used for finding stylesheets to import into SVG placeholders. Default value: head link.holderjs.
  • noFontFallback: Do not fall back to canvas if using custom fonts.
  • noBackgroundSize: Do not set background-size for background placeholders.

Using custom settings on load

You can prevent Holder from running its default configuration by executing Holder.run with your custom settings right after including holder.js. However, you'll have to execute Holder.run again to render any placeholders that use the default configuration.

Using with lazyload.js

Holder is compatible with lazyload.js and works with both fluid and fixed-width images. For best results, run .lazyload({skip_invisible:false}).

Using with React

When using Holder in a React component, execute Holder.run in componentDidMount to enable rendering after state changes. See this issue for more details.

Using with Vue

You can use Holder in Vue 2+ projects with vue-holderjs.

Using with Angular.js

You can use Holder in Angular projects with ng-holder or with angular-2-holderjs for Angular 2 projects.

Using with Meteor

Because Meteor includes scripts at the top of the document by default, the DOM may not be fully available when Holder is called. For this reason, place Holder-related code in a "DOM ready" event listener.

Using with Webpack

If you're using ProvidePlugin in your Webpack config, make sure to configure it as follows:

plugins: [
  new webpack.ProvidePlugin({
    'Holder': 'holderjs',
    'holder': 'holderjs',
    'window.Holder': 'holderjs'
  })
]

Browser support

  • Chrome
  • Firefox 3+
  • Safari 4+
  • Internet Explorer 9+ (with partial support for 6-8)
  • Opera 12+
  • Android (with fallback)

Source

License

Holder is provided under the MIT License.

Credits

Holder is a project by Ivan Malopinsky.

Comments
  • 100% CPU usage on Google Chrome

    100% CPU usage on Google Chrome

    Every site that has holder.js loaded uses 100% CPU for me as long as I have it open. The Chrome Development Tools profiler says that (program) is the culprit, so there's not much help from that.

    I also tried resetting Google Chrome to see if it was a problem with some extension, but it didn't help.

    System info: Browser: Google Chrome Version 43.0.2357.132 m OS: Windows 10 Pro Insider Preview

    opened by anka-213 20
  • Using holder with webpack

    Using holder with webpack

    I'm trying to use 'Holder.js' with webpack. But, only getting dead ends.

    When I try with require('holderjs');, I get holder.js:13 Uncaught TypeError: Cannot read property 'document' of undefined.

    When I try with require('!imports?window=>this!holderjs'); using the import-loader, I get holder.js:13 Uncaught TypeError: Cannot read property 'document' of undefined.

    Am I missing something here?

    bug 
    opened by saneef 17
  • AngularJS workaround

    AngularJS workaround

    This is a workaround to make holder work with AngularJS apps.

    I'm not sure this is the best way to add this feature as I am both a new Angular and holder user.

    The idea is to expose a method in the Holder global object that allows to process any given DOM img element, then use this method from a very short Angular directive which is called by the Angular framework during the link phase.

    Usage

    <img data-src="holder.js/360x270" bs-holder />
    

    that's it. I named the Angular directive that way so that it can be included into the project angular-strap.

    The workaround currently only supports the src/data-src method. No regression test have been achieved to test if the regular way of using holder still work (as I have no project using it outside of my first Angular app). But should be ok as the patch is very simple (just moved code into a new method).

    Here is the Angular directive source-code (which is not included in my pull request)

    directive('bsHolder', function() {
      return {
        link: function (scope, element, attrs) {
          Holder.process_img(element.get(0));
        }
      };
    })
    
    opened by ovax3 16
  • holder.js does not work when the page renders twice in React

    holder.js does not work when the page renders twice in React

    I am using holder.js in React with react-bootstrap. In index.html I added in <header>: <script src="holder.js"></script>

    In the component ProjectCard I wrote: <Card.Img className="proj-card-img" variant="top" data-src="holder.js/100px180" />

    This component is rendered using map() function

    {Object.keys(this.state.projects).map(key=>
         <ProjectCard key={key} index={key} details={this.state.projects[key]}/>)}
    

    It works nicely if I set state in ComponentWillMount(). However, if I update the state and the page renders twice (e.g. use firebase to syncState), holder.js will not work.

    I have tried

    <script>
        Holder.run({
            images:"MyClassName"
        })
    </script>
    

    but it didn't work either.

    Did I write anything wrong? Thanks!

    opened by jguo1002 14
  • Holderjs with Material Icons

    Holderjs with Material Icons

    Im attempting to try out material icons in holdejs text, and i havent been able to get it to work with this: 'holder.js/100x100?font=Material+Icons&text=\e7fb' or with this 'holder.js/100x100?font=Material+Icons&text=%26%23xe7fb' Plus also i have the class="holderjs" on the css link. how does one get an icon font in place of the text?

    opened by mikeatm 12
  • Problem with Chrome 33 - breaks google web fonts

    Problem with Chrome 33 - breaks google web fonts

    In just released Chrome 33, Holder creates some conflict with google web fonts on my site. Works fine in Chrome 32 and all other browsers tested. Details below.

    Using Open Sans font (href="//fonts.googleapis.com/css?family=Open+Sans:400,700,300") all text went completely missing on initial page load - as in the text on the page was not rendered, not a fallback font. By elimination I traced it to a problem with Holder.

    I patched a fix for the problem by wrapping the following code from Holder in a jquery $(document).ready function like this:

    $(document).ready(function() {
        contentLoaded(win, function () {
            if (window.addEventListener) {
                window.addEventListener("resize", resizable_update, false);
                window.addEventListener("orientationchange", resizable_update, false);
            } else {
                window.attachEvent("onresize", resizable_update)
            }
            preempted || app.run({});
        });
    });
    

    I do not know why this fixed it because document.ready fires before your contentLoaded does. Nor could I determine the exact problem with the font not rendering on the initial page load - click any button to a second page and the font rendered.

    You should be able to duplicate the problem by loading and using a web font in your css with holder.

    bug 
    opened by toggleshift 12
  • New problems with ie 7 & 8

    New problems with ie 7 & 8

    Thanks for a great script. The latest version seem to have new issues with IE7 and IE8.

    I get "Function Expected" on line 316, char 2

    Same error occurs on the Bootstrap implementation: http://twitter.github.com/bootstrap/components.html#media

    Also on 'holder.js'-frontpage http://imsky.github.com/holder/

    Screen dump, in IE8 (8.0.6001.19400)

    ie8-returns

    /Kasper

    opened by kasbrahan 10
  • Transparent Image

    Transparent Image

    Is there a way to make it generate transparent images? I am looking for a responsive solution when using background images on a div with s specific aspect ration and cover. I have tried the css proportional div approach but it is not as reliable as using an image to maintain aspect on all screen sizes.

    Any help is greatly appreciated. :)

    enhancement 
    opened by aaronhb 9
  • [Enhancement] Diagonal lines/border?

    [Enhancement] Diagonal lines/border?

    Is it possible to render diagonal lines and a border? I mean something like this:

    http://dhiglobal.com/wp-content/uploads/2016/07/placeholder.jpg

    Here, the border is missing, maybe a new config border = true/false (default: false) and diagonals = true/false (default: false)?

    opened by Quix0r 8
  • text: operator not work when used with percentage

    text: operator not work when used with percentage

    <img data-src="holder.js/200x90/text:hello world" alt="">
    

    Writes hello world.

    <img data-src="holder.js/100%x90/text:hello world" alt="">
    

    Writes: {container_size}x90. For example: 1903x90.

    opened by creocoder 8
  • Some bg color values don't work without specifying fg color

    Some bg color values don't work without specifying fg color

    Hei!

    I noticed that some color values brake the holder.js. For example, without adding fg color value to the code below breaks Holder: <img src="holder.js/300x300?auto=yes&bg=00AEEF&text=Add image"> and <img src="holder.js/300x300?auto=yes&bg=00AEEF&fg=000&text=Add image"> works fine.

    Trapets

    bug 
    opened by Trapets 7
  • Need to replace `robloach/component-installer`

    Need to replace `robloach/component-installer`

    With Composer 2 having been released and Composer 1 going away soon, some libraries need to be updated to support C2 or risk breaking any projects that depend upon them. robloach/component-installer is one such library. It has been labeled as DEPRECATED, so it will not be updated for Composer 2.

    $ composer update
    The "robloach/component-installer" plugin was skipped because it requires a Plugin API version ("^1.0") that does not match your Composer installation ("2.0.0"). You may need to run composer update with the "--no-plugins" option.
    [...]
    

    I ask that this project please be updated so it replaces robloach/component-installer with an alternative library as soon as possible. Several choices are listed in its README.


    Edit 01/22/2121:

    Still getting warnings using Composer 2, but now it has a specific recommendation (which happens to be the first one on the deprecated package's alternatives list):

    Package robloach/component-installer is abandoned, you should avoid using it. Use oomphinc/composer-installers-extender instead.
    
    enhancement 
    opened by SturmB 3
  • Issue with rendering in React using state variables

    Issue with rendering in React using state variables

    https://codesandbox.io/s/cannot-render-component-images-in-component-when-using-or-mapping-on-state-varia-forked-lt1oc?file=/src/App.js

    If I have a state and I draw something based on that state, the image from holderjs won't load. I can use another placeholder like sourcing from Placeholder.com, and it works just fine.

    bug 
    opened by logbaseaofn 2
  • high cpu usage

    high cpu usage

    On my machine, there is high cpu usage on pages that use holder. Traced it back to these lines in index:

        // Done to prevent 100% CPU usage via aggressive calling of requestAnimationFrame
        setTimeout(function () {
            global.requestAnimationFrame(visibilityCheck);
        }, 10);
    

    Since this is a recursive call, can we only make these calls on DOM changes? Or pehaps a way for the developer to turn off the timeout, and manually call Holder when a change has occurred.

    enhancement 
    opened by aparmar 2
  • Refer to FontAwesome icons by their class names

    Refer to FontAwesome icons by their class names

    Forgive me if this has been asked and answered already, I couldn't find it in issues. It would be great for legibility if we could fetch icons by their class names, so text=fa-plus instead of text=&#xf067;.

    They do exactly this at imgplaceholder.com: https://imgplaceholder.com/400x400/ddd/fff/fa-plus?font-size=96

    enhancement 
    opened by appel 1
  • Could not set size lesser than certain value

    Could not set size lesser than certain value

    https://github.com/imsky/holder/blob/5d03b972f0082c6c640f8e9223ca897ebc24dd50/src/lib/index.js#L844

    This code use image dimensions and App.defaults.scale which is not configurable for fontSize computing. https://github.com/imsky/holder/blob/5d03b972f0082c6c640f8e9223ca897ebc24dd50/src/lib/index.js#L660

    Hence font size could not be lesser then some computed value. It would be great to set any font size.

    enhancement 
    opened by pincher2012 1
  • Add support for specified aspect ratios.

    Add support for specified aspect ratios.

    So now when I want to have a 100% wide 16:9 image (think thumbnail) I have to calculate the height manually, I have to get the width of the (actual rendered) image and then put it through the /16*9 calculation. One could think that something like this would render an 16:9 auto sizing image.

    <div class="container">
        <div class="row align-items-stretch">
            <div class="col-md-12">
                <img data-src="holder.js/16x9?auto=yes"/>
            </div>        
        </div>
    </div>
    

    Right now with would be holder.js/100px624?auto=yes for a md-12 column on a large screen, but that second dimension is screen size dependent. Which makes it unusable, outside of my own development machine screen. (624=1110/16*9, with 1110 being the tested rendered width at 100%)

    Maybe either and extra flag or another unit. say 100px56r (With the r referring to ratio and thus the percentage of the actual width (forced and recalculated))

    Or maybe 16rx9r?auto=yes and that making a autoscaling (fill the container until on of the sides "hit" any thing, being height or width.)

    Or an extra flag forceAspect with the size given in a 100px56p type of way.

    I looked at the source but I'm quite lost. Right now I tried to just wrap the script, but it is not very user friendly.

    Maybe something for v3?

    enhancement 
    opened by EraYaN 1
Releases(v2.8.0)
  • v2.8.0(Jun 2, 2015)

    • Outlines with diagonals can now be drawn using the outline option.
    • Text color is now automatically set if no foreground color is specified.
    • Text margin can now be controlled using the run-time lineWrapRatio option.
    • addImage now supports a DOM node (or nodes) as argument
    • SVG and DOM functions have been factored out into modules.
    • Scene graph code has been rewritten to use plain JS, augment.js has been removed.
    • Flag processing code has been removed.
    • README has been updated with more documentation of internal options.
    Source code(tar.gz)
    Source code(zip)
  • v2.7.0(May 6, 2015)

    • Query-string support has been added, e.g. holder.js/300x200?text=Holder 2.7
    • Flag syntax has been deprecated
    • Text can now be aligned
    • Text can now be displayed without wrapping
    • Image SVG placeholders no longer use Base64 encoding in data URIs
    • Added official Meteor package: imsky:holder
    • Fixed malformed SVG bug in Opera 12
    Source code(tar.gz)
    Source code(zip)
  • v2.6.0(Apr 8, 2015)

    • Holder is now available through NPM
    • Scene graph and utility code has been factored out into CommonJS modules
    • Webpack is now used to create the UMD build
    • Stylesheets are generated for SVG placeholders, reducing inline styles and file size
    • The data-src "substitute" attribute for img's src can now be customized through the dataAttr option
    Source code(tar.gz)
    Source code(zip)
  • v2.5.0(Feb 3, 2015)

    • Invisible placeholders are now rendered automatically.
    • Font size units now default to points (pt) from the previous hard-coded default of px.
    • Resizable placeholders can pause and resume their rendering using the setResizeUpdate method.
    • Font size can now be set as part of the placeholder URL.
    • The URL used to generate the placeholder is embedded inside the generated image (SVG only)
    • Holder.version now reports the library version
    Source code(tar.gz)
    Source code(zip)
Owner
Ivan Malopinsky
Ivan Malopinsky
Renders and SVG schema of SARS-CoV-2 clade as defined by Neststrain

ncov-clade-schema https://ncov-clades-schema.vercel.app/ Visualizes current tree of SARS-CoV-2 clades. Allows to generate an SVG image of this tree. C

Nextstrain 5 Nov 3, 2022
A Javascript library to export svg charts from the DOM and download them as an SVG file, PDF, or raster image (JPEG, PNG) format. Can be done all in client-side.

svg-exportJS An easy-to-use client-side Javascript library to export SVG graphics from web pages and download them as an SVG file, PDF, or raster imag

null 23 Oct 5, 2022
Formats message strings with number, date, plural, and select placeholders to create localized messages

Formats message strings with number, date, plural, and select placeholders to create localized messages. Small. Between 700 bytes and 1.3 kilobytes (m

Marcis Bergmanis 35 Oct 30, 2022
A lightweight JavaScript library that renders text in a brilliant style by displaying strings of random characters before the actual text.

cryptoWriter.js A lightweight javascript library which creates brilliant text animation by rendering strings of random characters before the actual te

Keshav Bajaj 2 Sep 13, 2022
A Cloudflare Workers service that fetches and renders Notion pages as HTML, Markdown, or JSON.

notion-fetch A Cloudflare Workers service that fetches and renders Notion pages as HTML, Markdown, or JSON. Powered by Durable Objects and R2. Usage P

Heyang Zhou 7 Jan 6, 2023
This repo renders contribution data.

This is a Next.js project bootstrapped with create-next-app. Getting Started First, run the development server: npm run dev # or yarn dev Open http://

OpenSauced 4 Sep 17, 2022
optimize image & upload file to cloud as image bed with tiny image automic.

Rush! 图片压缩 & 直传图床工具 这是一个兴趣使然的项目, 希望 Rush! 能让这个世界的网络资源浪费减少一点点 下载 Downloads 获取最新发行版 功能 Features 拖拽批量压缩图片, 支持格式 jpg/png/gif Drop to optimize, jpg/png/gif

{ Chao } 3 Nov 12, 2022
🍎Transform an SVG icon into multiple themes, and generate React icons,Vue icons,svg icons

IconPark English | 简体中文 Introduction IconPark gives access to more than 2000 high-quality icons, and introduces an interface for customizing your icon

Bytedance Inc. 6.8k Jan 5, 2023
Hashmat Noorani 4 Mar 21, 2023
🖼️ Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component.

Next.js Image Proxy Image proxy for Next.js. Makes it possible to use dynamic domains in next/image component. ❔ Motivation This library makes it poss

Blazity 30 Dec 1, 2022
A Javascript library that discourages and prevents image theft/download by preventing client ability to retrieve the image.

ProtectImage.js ProtectImage.js is a Javascript library that helps prevent image theft by disabling traditional user interactions to download/copy ima

null 4 Aug 18, 2022
Simple JavaScript Library to add parallax image to background-image

Backpax Simple JavaScript Library to add parallax image to background-image Install $ npm install backpax --save Demo Demo page is here Usage If you

appleple 13 Oct 12, 2022
Piccloud is a full-stack (Angular & Spring Boot) online image clipboard that lets you share images over the internet by generating a unique URL. Others can access the image via this URL.

Piccloud Piccloud is a full-stack application built with Angular & Spring Boot. It is an online image clipboard that lets you share images over the in

Olayinka Atobiloye 3 Dec 15, 2022
Freewall is a cross-browser and responsive jQuery plugin to help you create grid, image and masonry layouts for desktop, mobile, and tablet...

Freewall Freewall is a cross-browser and responsive jQuery plugin to help you create many types of grid layouts: flexible layouts, images layouts, nes

Minh Nguyen 1.9k Dec 27, 2022
Easiest 1-click way to install and use Stable Diffusion on your own computer. Provides a browser UI for generating images from text prompts and images. Just enter your text prompt, and see the generated image.

Stable Diffusion UI Easiest way to install and use Stable Diffusion on your own computer. No dependencies or technical knowledge required. 1-click ins

null 3.5k Dec 30, 2022
An easy way to animate SVG elements.

Walkway I loved the animations for the polygon ps4 review a few months back and decided to create a small library to re-create them (simple demo). It

Connor Atherton 4.4k Jan 2, 2023
JavaScript library to make drawing animation on SVG

vivus.js Demo available on http://maxwellito.github.io/vivus Play with it on Vivus Instant Vivus is a lightweight JavaScript class (with no dependenci

maxwellito 14.5k Jan 3, 2023