Code Monkey home page Code Monkey logo

susy's Introduction

Power Tools For The Web [Deprecated]

Susy is Deprecated. It should no longer be used on new projects, and will no longer be receiving any updates.

npm version

Susy is a design-agnostic set of tools for creating powerful, custom layouts. We didn't want another grid system full of rules and restrictions — we wanted a power tool for building our own damn systems. Version Three is trimmed down to it's most basic components — functions that can be used to build any grid system.

Quotes

"I like the idea of grids-on-demand, rather than a strict framework."
– Chris Coyier, CSS Tricks

"Susy and Zendesk have been getting along magically… It’s precisely what you need and nothing more."
— Stephany Varga, Zendesk

"If you’re interested in reading Sass poetry, be sure to look at Susy’s source code!"
— Kitty Giraudel, SitePoint

Resources

Third-Party Tools

Installation

npm install susy

There are two imports to choose from. The default sass/susy comes with un-prefixed versions of the core API functions. If you want Susy to be name-spaced, import sass/susy-prefix instead.

// un-prefixed functions
@import '<path-to>/susy/sass/susy';

// susy-prefixed functions
@import '<path-to>/susy/sass/susy-prefix';

Using Eyeglass

With eyeglass set up, you can @import 'susy'; without providing the npm-modules path.

Using Webpack

Make sure sass-loader is installed:

npm install sass-loader --save-dev

Make sure you have sass-loader enabled in your webpack configuration:

// webpack.config.js
module: {
  rules: [
    {
      test: /\.scss$/,
      use: ['style-loader', 'css-loader', 'sass-loader'],
    },
  ];
}

Start using Susy:

/* app.scss */
@import '~susy/sass/susy';

Using Gulp

Add a gulp task:

// gulpfile.js
gulp.task('sass', function () {
  return gulp
    .src('scss/*.scss')
    .pipe(
      sass({
        outputStyle: 'compressed',
        includePaths: ['node_modules/susy/sass'],
      }).on('error', sass.logError),
    )
    .pipe(gulp.dest('dist/css'));
});

Start using Susy:

/* app.scss */
@import 'susy';

Using Grunt (and Yeoman)

To add Susy to the Sass task, edit your Gruntfile.js at the root level of your project and look for the Sass-related rules. Add require: 'susy' inside the options object:

// Gruntfile.js
sass: {
  dist: {
    options: {
      style: 'expanded',
      require: 'susy'
    },
    files: {
      'css/style.css': 'scss/style.scss'
    }
  }
}

Assuming you’ve already installed Susy, it will now be added to the project and will not clash with Yeoman's grunt rules.

Start using Susy:

/* app.scss */
@import 'susy';

Susy vs Su

You may notice that some functions have a susy- prefix, while others only have su-. This helps distinguish between the two distinct layers:

  • The core grid-math layer is called Su, and is made up of "pure" functions that expect normalized values. This is useful if you prefer argument-syntax to shorthand syntax, or if you are building your own Susy mixins.
  • The upper Susy layer provides syntax-sugar – global defaults, shorthand-parsing, normalization, and a smaller set of common-use functions that call on the core math as necessary. This is the primary API for most users.

Sponsor OddBird's OSS Work

At OddBird, we love contributing to the languages & tools developers rely on. We're currently working on polyfills for new Popover & Anchor Positioning functionality, as well as CSS specifications for functions, mixins, and responsive typography. Help us keep this work sustainable and centered on your needs as a developer! We display sponsor logos and avatars on our website.

Sponsor OddBird's OSS Work

susy's People

Contributors

alertmybanjos avatar benebun avatar bigsweater avatar carljm avatar chriseppstein avatar codingdesigner avatar danielbayerlein avatar dannyprose avatar jdlehman avatar jerivas avatar jgerigmeyer avatar jptaranto avatar kittygiraudel avatar luzat avatar medoingthings avatar michaelarestad avatar mirisuzanne avatar pniederlag avatar rkjaer avatar samusgray avatar scottkellum avatar silvenon avatar snoblenet avatar snugug avatar sondrae avatar stephenway avatar trev avatar tsi avatar u982744 avatar zakj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

susy's Issues

Official Site Document Error

Just work through the document, excellent library for programmer.

Found two issues about the tutorial:

  1. the sample html5 is not validate XML, and cause display problem.
    (At least affects Firefox/Opera on Ubuntu 10.04)
  2. 'no-style-list' mixin is not exist in susy anymore?
    i replace it with no-bullets from compass and it works

Confused about gutters, maybe a bug too

First, I'm not sure about the purpose of gutters. Is it just a sensible default kind of thing? After all, it's not like gutters are enforced in any way. Or maybe the following is a bug. Here is the html:

screen.scss:
h1 {
@include full;
@include prefix(1);
padding: 1px; <-------- ! causes text to jump from one column to the other !
}

base.scss:
$total-cols : 2;
$col-width : 48%;
$gutter-width : 2%;
$side-gutter-width : 0%;

html:
<div class="container">
<h1 id="what">test</h1>
</div>

Result:
For some reason the "test" text jumps from the right column to the left column when I specify any padding. If I remove it, it is on the right column again. Doesn't make sense to me.

Grid breaking in Firefox.

This issue only seems to affect Firefox(12.0), Chrome is OK. I've only just started playing with Susy though, so it's quite possible there is something I've overlooked.

I have a a full-width ul, and below 6 columns width I want each li to be full-width; at 8 columns I would like 2 to a row; and at 12 columns, 3 to a row. Everything works as expected, except when the window is between 945px - 960px wide, where the 3rd li drops down breaking the grid. Dropping the width of every third li by 1% realigns the li's to the grid to the position they should be in.

Hope that all makes sense. Here is my broken down code.

HTML:

...blah...
<container>
    ...blah...
    <ul>
        <li>blah</li>
        <li>blah</li>
        <li>blah</li>
        <li>blah</li>
        <li>blah</li>
        <li>blah</li>
        <li>blah</li>
        ...etc...   
    </ul>
    ...blah...
</container>
...blah...

SCSS:

$base-font-size: 14px;

$total-columns  : 4;           
$column-width   : 4em;           
$gutter-width   : 1.5em;           
$grid-padding   : $gutter-width; 

$break-1 : 6;
$break-2 : 8;
$break-3 : 12;  

.container{
    @include container($total-columns,$break-1,$break-2,$break-3);
}

ul{
    list-style-type:none;
    padding:0;
    @include pie-clearfix;
}

li{
    float:left;
    @include span-columns(4, 4);
}

@include at-breakpoint($break-1) {
    li{
        @include span-columns(6, 6);
    }   
}

@include at-breakpoint($break-2) {
    li{
        @include span-columns(4, 8);
        &:nth-child(2n+2){@include omega;}
    }   
}

@include at-breakpoint($break-3) {
    li{
        @include span-columns(4, 12);
        // need to add this in here, because the $omega settings are inherited from previous media query
        &:nth-child(2n+2){float:left;margin-right:$gutter-width;}
        &:nth-child(3n+3){@include omega;}
    }   
}

Many thanks,

Jez

New repository with removed helpers?

Hi Eric,

Would you please create a new repository with the helpers you removed (rhythm-borders, etc.)? I am currently using them and think they'd be useful for others.

duplicate declarations with omega

am I doing something wrong?

this:

        .footer-widgets-2{
            @include columns(6,12);
            @include omega;
        }

results in this:

  #footer-widgets .footer-widgets-2 {
    display: inline;
    float: left;
    width: 48.75%;
    margin-right: 2.5%;
    display: inline;
    float: right;
    margin-right: 0%;
    #margin-left: -24px;
  }

is there any way to avoid the duplicate float and display declartions?

Unable to switch to a fixed grid

My grid system is currently percentage based.

I want to experiment with a fixed layout and read your tutorial at http://susy.oddbird.net/tutorial/

I tried to follow this instruction "For a fixed grid you can simply change your grid units to px." and update my set up but the layout is still fluid unless I over-ride the max-width: 100% that @include container; establishes.

This hack felt wrong, so I thought I check in.

This is an example of my gird set-up

$total-cols: 12;
$col-width: 70px;
$gutter-width: 30px;
$side-gutter-width: 15px;
$grid-background-column-color : #F68888;

Accept $base-font-size in any unit

I'm using Susy 1.0 RC and I'm building out my grid options using ems instead of px, but Susy is throwing the following error:

Line 19 of _grid.scss: 7.085em * em/px isn't a valid CSS value

Now I haven't backtraced where Susy is coming up with em * em/px for a value, but I'm willing to bet you're making the assumption that everyone is inputing options as px values, to which I say let ems be ems.

File to import not found or unreadable: susy.

I'm trying to setup a new rails 3.2.3 project with susy 1.0 and for the life of me I cannot get it working.

This is the error I've been staring at for an hour:

ActionView::Template::Error (File to import not found or unreadable: susy.

So far my google-fu has failed me. Any ideas?

Grid helpers & gutter

How about adding a way to push/pull something by the gutter size? I often find myself in situations where I have to do stuff like this:

margin-left: - gutter($main);

Typing that doesn't feel good. Here's a not-very-thought-through idea:

@include pull(1 gutter, $main);

For columns, you could type:

@include pull(1 column, $main);

but column would be default.

units problem

Hello, after updating to fresh susy edge (I did it for the very first time, so...) I've got this:

Syntax error: Incompatible units: '%' and 'em'.
        on line 21 of /home/paul/.rvm/gems/ruby-1.9.3-p194@padrino/bundler/gems/susy-fc85ec85fbf4/sass/susy/_functions.scss, in `set-container-width'
        from line 30 of /home/paul/.rvm/gems/ruby-1.9.3-p194@padrino/bundler/gems/susy-fc85ec85fbf4/sass/susy/_grid.scss, in `apply-container'
        from line 56 of /home/paul/.rvm/gems/ruby-1.9.3-p194@padrino/bundler/gems/susy-fc85ec85fbf4/sass/susy/_grid.scss, in `container'
        from line 31 of /usr/home/paul/develop/web/petition/app/stylesheets/application.sass

... and in the sass file it all starts with "+container"

What am I doing wrong?

Internet explorers all versions calculate different dimensions from other browsers

The problem is:
I configure susy like this:

$base-font-size: 16px;
$base-line-height: 24px;
$total-cols: 12;
$col-width: 4em;
$gutter-width: 1em;
$side-gutter-width: $gutter-width;

The "full" element (element with full mixin) in the container has different width in internet explorer (I use internet explorer 9 but in compatible mode I get the same).

In Chrome I get:
container: width 976px
"full" element: margin-left: 1.639%, margin-right: 1.639%
calculated width of "full" element: 946px

In IE:
container: width 976px
"full" element: margin-left: 1.639%, margin-right: 1.639%
calculated width of "full" element: 944px

Is there any hack to correct this?

undefined mixin "trailer" after initial setup in rails 3 app

Great work with Susy; I'm looking forward to having it up and running.

I just spent a couple hours purging Blueprint and setting up Susy in my Rails 3 app, but it's not working. First, I

compass init rails . -r susy -u susy

Then I converted all the scss files to sass (probably a way to do that with the above command, huh?).

I opened up screen.sass and changed .container to #page.

And then I get

Syntax error: Undefined mixin 'trailer'. 
    on line 81 of app/stylesheets/./_defaults.sass, in `trailer'
    from line 81 of app/stylesheets/./_defaults.sass
    from line 5 of app/stylesheets/screen.sass

Is the Susy project still being worked on ?

I've found a lot of enthusiasm for Susy, and with me that have been using the equivalent in Bootstrap by Twitter I started looking for it. But then I found this repo and the last commit is 10 months old. Is it on pause or has it moved somewhere or ?

Gem incompatibility with new Rails app + Compass

Bundler could not find compatible versions for gem "compass":
Bundler could not find compatible versions for gem "compass":
  In Gemfile:
    susy depends on
      compass

    compass-rails depends on
      compass (0.12.1)

@chriseppstein Perhaps needs to change requirements on compass-rails? Not sure.

$gutter-width = 1px... possible?

So I've been working on a project where the site has a 4 column layout and there is supposed to me 1 pixel between columns. Since this is also a (flexible) responsive site there seem to be some issues when rendering the gutters as percentages.

My setup is...

$total-columns: 4
$column-width: 240px 
$gutter-width: 1px
$grid-padding: 0px

So with this setup the margin between columns is 1px, but between the 3rd and 4th (omega) column there are quite a few pixels. I get that if the browser's width + 1 isn't divisible by 4 there will be 1-3 extra pixles to account for between column 3 and 4, but I'm getting 5 pixels sometime depending on the viewport width.

Granted at some viewport widths there is no visible margin between the other columns because a margin-right of 0.104% will only get you so far.

So my question is, if there a good way to make sure the margins between the columns are consistent in a situation like this or do I need to set the gutter to 0 and put my 1px margin on an element in the span-column?

Thanks.

position:absolute within position:relative hides the inner div in FF8

-# HAML
.container
    #inner Hello

// SASS
.container
    position:relative
    +columns(5)
#inner
    position:absolute

This all works fine in Chrome 15 and Safari 5.1, but in Firefox 8 the inner div is hidden.

The fix is to add

#inner
    display:block

which overrides display:inline from columns mixin.

The absolute-ems function is wrong?

These are the relevant variables:

$base-font-size: 18px;
$media-layout: 60em 16em;

When I do:

@include at-breakpoint($media-layout)

The ems get precalculated to 67.5em. But the ems should be lower than the specified 60em, not higher, because 60em in context of 18px is bigger than 60em in the context of 16px.

Correct me if I'm wrong.

tagging

Please don't forget to keep tagging your repo's version, cheers

+susy in body and line-height problems

Is there a reason that you instruct people to do:

body
  +susy

rather than just:

+susy

=susy contains a body definition and leads to body body { ... }

It also causes compass's reset line-height: 1 to win out over susy's +establish-baseline

/* line 20, ../../../vendor/bundler_gems/ruby/1.8/gems/compass-0.10.0.pre5/frameworks/compass/stylesheets/compass/utilities/general/_reset.sass */
body {
  line-height: 1;
  color: #000;
  background: #fff;
}

...

/* line 27, ../../../vendor/bundler_gems/ruby/1.8/gems/compass-susy-plugin-0.7.0.pre4/sass/susy/_vertical_rhythm.sass */
body body {
  font-size: 100%;
  line-height: 1.5em;
}

Doc bug *or* feature request: Combo breakpoints + fallbacks

Per the docs, at-breakpoint takes a $media-layout of the form:

$media-layout: <min-width> <layout> <max-width> <ie-fallback>;

I naïvely thought that this meant I could specify a min-width and IE fallback class in one inclusion of at-breakpoint, but this isn’t the case; obviously it does not make sense to define a min-width for a browser that doesn’t support the concept, but I thought it would output @content twice, once within @media and once within the fallback class.

I ended up using my own mixin that basically calls at-breakpoint twice to achieve the same effect.

I think it would make sense if at-breakpoint worked the way I thought it might. That would be my preferred resolution of this issue. Otherwise, maybe the docs should point out that it’s not valid or sensical to define min/max-widths with an IE fallback.

File to import not found or unreadable: susy.

I have tried using the new SUSY several times and keep getting this error.

"File to import not found or unreadable: susy."

in LiveReload

.container { @include container; @include susy-grid-background; }

works and I see susys grid but once i add @include span-columns(3,12); it tells me "Undefined mixin 'span-columns'." I have tried everything to get this to work.

inline-block version

What do you think about the grids that are going with inline-blocks? Seems like there are some cool advantages over using float.

Could that work with susy?

Add option for generating a standalone stylesheet without media queries (e.g. for IE < 9)

In a mobile-first approach desktop browsers not capable of interpreting media queries (e.g. IE < 9) will render the mobile version, if not polyfilled by tools like respond.js et al.

To prevent this one could generate a separate ie.scss like so:
@import "base";
$mlHandheld: 4 lt-ie9;
$mlTablet: 500px 12 lt-ie9;
$mlDesktop: 900px 12 lt-ie9;
@import "style";

The generated ie.css will include all the needed fallback styles. But also it will redundantly include all styles wrapped in media queries as well. It would be really sweet to have some kind of option or keyword to tell Susy to only generate the fallback styles in order to cut down the overhead for our old IE friends.

Alpha, omega and nested context utility ?

I never really paid much attention to what the internal mechanics of Susy were. But when I switched to it from Twitter Bootstrap, one thing that struck me was the overall supplementary layer of required stuff. Bootstrap's grid system is demonstrated on that page.

Now as you see, although I assume that Bootstrap and Susy don't work the same way, Bootstrap require neither alpha, omega nor the need to specify context in nested environement. ie, inside a .span6 you can just call .span2 and .span4, without having to explicitely tell the code that the parent is 6 columns wide.
What I wanted to know, was if these differences were because of fundamental choices in the core mechanics, making it impossible for Susy to get rid of alpha, omega and columns(...,N). Or, if these were just residues of old code – old technics in term of grid-making that have just evolved since ?

Automatic omega

Having to apply the omega mixin is sometimes really painful, not because it's complicated - the new Susy takes all care of that - but becauses it clutters the Sass stylesheet easily.

I've used Susy for a while, and in 90% of the case, I've applied omega this way :

section
    article
        +span-columns(X)
        &:last-child
            +omega

The last-child selector is now widely supported and I think somewhere a shortcut of some way would really be helpful to a lot of people.

Susy Compilation error in _grid.scss

I'm compiling with Codekit, running Sass 3.2 alpha and susy 1.0alpha.1 and am coming across this error when compiling.


Compass was unable to compile one or more files in the project:

error screen.scss (Line 58 of _grid.scss: Invalid CSS after "...edia-layout-1) ": expected "}", was "{")

identical screen.css

New Susy variable not working for me

Already installed Susy Version 1.0 Alpha 2 and Compass 0.12.2.rc.0

Setting the grid with new variable

$total-columns  : 12;
$column-width   : 2.5em;
$gutter-width   : 1.25em;
$grid-padding   : $gutter-width;

Simple container layout

#page {
         @include container;
}

The output

#page {
  *zoom: 1;
  margin: auto;
  width: 63.75em;
  max-width: 100%;
}
#page:after {
  content: "";
  display: table;
  clear: both;
}

I got wrong calculation if used new variable, but when I came back to the old variable, it fix the issue. Ex

Setting the grid with the old variable

$total-cols         : 12;
$col-width           : 2.5em;
$gutter-width       : 1.25em;
$side-gutter-width  : $gutter-width;

see the bold one.

Simple container layout

#page {
         @include container;
}

The Output

#page {
  *zoom: 1;
  margin: auto;
  width: 46.25em;
  max-width: 100%;
}
#page:after {
  content: "";
  display: table;
  clear: both;
}

Works!

What I'm missing ?

Thanks and sorry for my English

grid background is incorrect with percentages

when making a percentage based layout, the grid background columns and gutters aren't of the correct width.
Here is my grid definition:
$total-width: 960px;
$total-cols: 12;
$col-width-abs: 58px;
$col-width: $col-width-abs / $total-width * 100%;
$gutter-width-abs: 24px;
$gutter-width: $gutter-width-abs / $total-width * 100%;
$side-gutter-width: 0;

I then made a pixel grid at http://gridulator.com/ with the same dimensions to compare.
I used the Pixelperfect firefox plugin to overlay the PNG grid from gridulator over the layout, and the actual divs dimensions are correct, but the background grid image is not. Also it is different between Firefox and Chrome.

Typo in _padding

Both the prefix and suffix mixins have $colums arguments that should actually be $colum_n_s arguments.

Unable to bundle susy with rails 3.2 + compass-rails

When I add "gem 'susy'" to my gemfile in my rails 3.2.3 app I get the following when I attempt to bundle.
Adding gem 'compass-susy-plugin' instead just results in:
bundle exec compass install susy
-> No such framework: "susy"

Bundler could not find compatible versions for gem "compass":
In Gemfile:
susy (>= 0) ruby depends on
compass (>= 0.13.alpha.0) ruby

compass-rails (>= 0) ruby depends on
  compass (0.12.0)

Uninitialized constant Sass::Util

When I try to run compass watch, I get the following error when I have susy required in my confib.rb:

NameError on line 29 of /var/lib/gems/1.8/gems/sass-3.2.0.alpha.237/lib/sass/plugin/compiler.rb: uninitialized constant Sass::Util

I have susy 1.0.rc.1 installed. Is there something I might be doing wrong?

Move utils into a separate gem

I don't use your gem for CSS layouts (no offense here I hope ;)), but I use your utils.sass file for abstracting vendor and CSS3 rules.

Since generating grids and abstracting modern CSS rules are not very related things, it would be nice to have two separate gems.

Thanks.

Browser Support

I'm enjoying learning susy. Can you tell me what can kind of browser support it has? Maybe I missed something?

Thanks,
-Glenn

Unreadable: susy

I've installed the compass-susy-plugin gem successfully and included it in my config.rb file (require 'susy') but when I import susy into my base stylesheet I get the following error:

error sass/screen.scss (Line 9: File to import not found or unreadable: susy.

If I then try including the container mixin it says it's undefined—as it's not loading susy.

using box-sizing border-box

it would be nice to have an option to enable using border-box as an alternative box model.
I think it would result in cleaner and less CSS.

Breaking the grid - Help with an example

Hi, I've used a pixel based grid for a long time but am recently trying Susy.

I'm building off of a mockup and ran into my first hurdle. See screenshot:
Screenshot

I'm curious how you would approach this slight breaking of the grid here with Susy. Notice the gallery on the left is 16 cols, but in the space where there would be a gutter, the next 6 cols occupy that as well.

In my pixel based grid mixins, I would always have a final param for any additional offset of the width for exceptions like this. Obviously that breaks the grid a bit for content nested inside of that, but usually this kind of thing is just a one-off exception.

Any help is apprecaited!

decimals for column/padding widths...should they work?

Here's what I'm attempting:

.test { @include columns(7.5, 8); @include omega(8); @include pad(.25); .inner-1 { @include columns(5, 7.5); } .inner-2 { @include columns(2.5, 7.5); @include omega(7.5); } }

It kinda seems to work, but the widths aren't quite flush to the grid. I'm wondering if this is a problem with Susy or just a browser approximation issue when you get to decimals and percentages?

Sass::SyntaxError: Undefined mixin 'trailer'.

Trying to compile nanoc project with compass+susy I keep getting "Sass::SyntaxError: Undefined mixin 'trailer'." when trying to compile default templates that come with susy. Susy seems to be imported fine, but the trailer thing is not.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.