Vue Css Doodle

Porting of css-doodle to VueJs, a web component for drawing patterns with CSS

Installation

This package is available on npm.


    # Deps
    npm install --save @luxdamore/vue-css-doodle

Usage

As a component


    // Component
    import { VueCssDoodle } from '@luxdamore/vue-css-doodle';
    import '@luxdamore/vue-css-doodle/dist/VueCssDoodle.css';

    // Install
    Vue.component(
        VueCssDoodle.name,
        VueCssDoodle
    );

    // Or in a .vue file
    export default {
        components: {
            'vue-css-doodle': VueCssDoodle,
        },
    };

    // Add this line to your main.js
    Vue.config.ignoredElements = [ 'css-doodle' ];

As a plugin


    // Plugin
    import VueCssDoodle from '@luxdamore/vue-css-doodle';
    import '@luxdamore/vue-css-doodle/dist/VueCssDoodle.css';

    // Install
    Vue.use(
        VueCssDoodle
    );

Browser's way


    <!doctype html>
    <html>
        <head>

            <!-- VueCssDoodle style -->

                <!-- Old way -->
                <link rel="stylesheet" href="https://unpkg.com/@luxdamore/vue-css-doodle@latest/dist/VueCssDoodle.css" />
                <!-- end old way -->

                <!-- New way -->
                <link rel="preload" href="https://unpkg.com/@luxdamore/vue-css-doodle@latest/dist/VueCssDoodle.css" as="style" onload="this.rel='stylesheet'" />
                <link rel="preload" href="https://unpkg.com/@luxdamore/vue-css-doodle@latest/dist/VueCssDoodle.umd.min.js" as="script" />
                <!-- end new way -->

            <!-- end VueCssDoodle style -->

        </head>
        <body>

            <!--
                Others script (ex. VueJs) and html.
            -->

            <!-- VueCssDoodle script -->
                <script src="https://unpkg.com/@luxdamore/vue-css-doodle@latest/dist/VueCssDoodle.umd.min.js"></script>
            <!-- end VueCssDoodle script -->

        </body>
    </html>

Markup


    <vue-css-doodle>
        :doodle {
            @grid: 50x1 / 80%;
        }

        @place-cell: center;
        @size: calc(100% / @size * @i);

        transform: rotate(calc(@i * 5deg));

        border-radius: 30%;
        border: 1px solid hsla(
            calc(10 + 4 * @i), 70%, 68%, @r.8
        );
    </vue-css-doodle>

Integrations

NuxtJS

  • Create a file in the plugins folder;
  • Name it vue-css-doodle.client.js;
  • Install it as a plugin;
  • Import it in the nuxt.config.js file as client side only.

Options

Slots


    # Available
    slot="default" # Add the content, it expose v-slot="{ generate }" method to refresh the doodle

Props

Attribute Type Default Required About
title String null false The title
grid String or Number null false Value of grid-attr
use String null false Value of use-attr
height String null false Height of the doodle
width String null false Width of the doodle
mx-auto Boolean false false Add margin-left|right-auto to the doodle
fit-width Boolean false false Force the doodle to fit in a max-width
fit-height Boolean false false Force the doodle to fit in a max-height
fill-height Boolean false false Expand the doodle to an height of 100%
click-to-update Boolean false false Refresh on click
overflow-hidden Boolean false false Add overflow-hidden to the container
absolute Boolean false false Set position to absolute

Check the DOCS for more information.