Giter Site home page Giter Site logo

kattcss's Introduction

kattcss

Short about kattcss

kattcss is a fork and extension of inuitcss, a superb framework with a great ideology, that we at Agigen have used quite a lot throughout the years.

The primary goal with kattcss was essentially to make it easier and more hassle-free to use inuitcss in a whole lot of different projects, by primarily reducing the setup time. We've also made some minor changes, most of which have to do with consistency when it comes to class names, but we've also gone away from inuitcss' way to use multiple repositories to use one, single repository.

You can read more about the differences from inuitcss in the license file

In the future we want to build kattcss into something more of our own, and less of a bundle of different inuit modules, but we'll probably not stray too much from the architecture of inuitcss 5/itcss. We aim to keep kattcss as somewhat a living organism, that's extended and updated on a regular basis. kattcss, as well as this readme, is very much a work in progress, and we won't promise it won't break your heart.

Setting up a kattcss project

// Essential functions and settings
@import 'kattcss/collections/collections.core';

// Essential responsive functions and settings
@import 'kattcss/collections/collections.responsive';

// Settings and functions for a objects and trumps concerning
// layout and skin
@import 'kattcss/collections/collections.layout-skin';

// Import all generic files from kattcss
@import 'kattcss/collections/collections.generic';

@import 'kattcss/base/base.page';

@import 'kattcss/objects/objects.layout';

// Import your components
@import 'components.page-head';
@import 'components.page-foot';

// Import kattcss and inuitcss trumps
@import 'kattcss/trumps/trumps.widths';
@import 'kattcss/trumps/trumps.show-hide';

Import order

Borrowed from inuitcss' readme

Because inuitcss is broken apart into lots of small, composable modules, it is important that you as the developer piece things together in the correct order. That order is:

  • Settings: Global variables, site-wide settings, config switches, etc.
  • Tools: Site-wide mixins and functions.
  • Generic: Low-specificity, far-reaching rulesets (e.g. resets).
  • Base: Unclassed HTML elements (e.g. a {}, blockquote {}, address {}).
  • Objects: Objects, abstractions, and design patterns (e.g. .media {}).
  • Components: Discrete, complete chunks of UI (e.g. .carousel {}). This is the one layer that inuitcss doesn’t get involved with.
  • Trumps: High-specificity, very explicit selectors. Overrides and helper classes (e.g. .hidden {}).

The order of partials within each layer is fairly open; it is the sections themselves that are important to get in the correct order.

N.B. All partials—including your own—follow the <section>.<file> naming convention, e.g. _objects.box.scss, _components.carousel.scss.


Collections is a new concept introduced in kattcss: collections are modules that simply import other modules. They provide a great way to get started without having to dig deep into the framework for finding out what you might need for your project. All of the collection modules included in kattcss only import settings and tools, except the generic collection that imports all generic files, so most of the time you won't have to worry about including a collection and getting a lot of junk you might not need in your CSS.

Toggling modules

In inuitcss, the only way for a developer to completely disable a module is to not import it. In kattcss, you can import all modules provided, and if you'd later on feel the need to disable them, you can simply disable them by the module variables:

$katt-enable-module-trumps-show-hide: false;
$katt-enable-module-objects-buttons: false;

Variable index, settings

Variables in inuitcss are set up in each module; for example, for finding the variables for trumps.spacing, you need to navigate through your bower components to find the folder for trumps.spacing, and within there find the variables your searching for. In kattcss, we decided to keep all variables in settings files stored in the settings folder, to make it easier to find these.

Also included is an index of all variables that are used in kattcss:

kattcss/_vars.scss

This file is never to be included (even though it is safe for you to do so since the variables are tightly shut in an impossible if statement).

Module documentation

trumps.spacing

trumps.spacing contains helper classes for margins and paddings. By default, the margin and padding values ($katt-margin and $katt-padding) are based upon the $katt-base-spacing-unit.

The helpers are named m for margins, and p for paddings, with their classes prefixed with the utility prefix u-. They all come with a set of suffixes for the placement of the margin and padding helpers: t for top, r for right, b for bottom, l for left, h for horizontal, and v for vertical.

These suffixes can in turn be suffixed with how large the margin or padding should be: /4 for tiny margins and paddings, /2 for small, 0 for no margin or padding, 2 for large, and 4 for huge spacing.

The margin helpers can also be prefixed with n for negative margins.

The classes will in the end look like this (these are only a few examples, not a complete list):

  • .u-m - margin: $katt-margin
  • .u-mt - margin-top: $katt-margin
  • .u-mr - margin-right: $katt-margin
  • .u-mb - margin-bottom: $katt-margin
  • .u-ml - margin-left: $katt-margin
  • .u-mh - margin-left: $katt-margin; margin-right: $katt-margin;
  • .u-mv - margin-top: $katt-margin; $margin-top: $katt-margin;
  • .u-m/4 - margin: $katt-margin / 4
  • .u-mt/4 - margin-top: $katt-margin / 4
  • .u-mh/4 - margin-left: $katt-margin / 4; margin-right: $katt-margin / 4
  • .u-mr/2 - margin-right: $katt-margin / 2
  • .u-mv/2 - margin-top: $katt-margin / 2; margin-bottom: $katt-margin / 2
  • .u-m0 - margin: 0
  • .u-mb0 - margin-bottom: 0
  • .u-mt2 - margin-top: $katt-margin * 2
  • .u-mh2 - margin-left: $katt-margin * 2; margin-right: $katt-margin * 2
  • .u-m4 - margin: $katt-margin * 4
  • .u-ml4 - margin-left: $katt-margin * 4
  • .u-nm/4 - margin: -$katt-margin / 4
  • .u-nml - margin-left: -$katt-margin`
  • .u-nmh4 - margin-left: -$katt-margin * 4; margin-right: -$katt-margin * 4
  • .u-p - padding: $katt-padding
  • .u-pt - padding-top: $katt-padding
  • .u-pl/4 - padding-left: $katt-padding / 4
  • .u-pt/2 - padding-top: $katt-padding / 2
  • .u-pb0 - padding-bottom: 0
  • .u-pl2 - padding-left: $katt-padding * 2
  • .u-ph4 - padding-left: $katt-padding * 4; padding-right: $katt-padding * 4

All of these can also be suffixed with responsive aliases, to only use the helpers in specific breakpoints, such as:

  • .u-m/4-portable
  • .u-pt4-lap-and-up
  • .u-mt2-palm
  • .u-pl/2-desk
  • .u-p0-portable

The variables to enable these features of kattcss can be found in settings.spacing, or in vars

kattcss's People

Contributors

oscarekholm avatar

Watchers

Andy Homan avatar

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.