Skip to content
This repository was archived by the owner on Feb 18, 2022. It is now read-only.

csstools/postcss-logical

Repository files navigation

PostCSS Logical Properties PostCSS Logo

NPM Version CSS Standard Status Linux Build Status Windows Build Status Gitter Chat

PostCSS Logical Properties lets you use Logical Properties and Values in CSS, following the CSS Logical Properties and Values Level 1 specification.

.banner {
  color: #222222;
  inset: logical 0 5px 10px;
  padding-inline: 20px 40px;
  resize: block;
}

/* used alongside postcss-nesting, postcss-dir-pseudo-class */

.banner {
  color: #222222;
  top: 0; left: 5px; bottom: 10px; right: 5px;
}

[dir="ltr"] .banner {
  padding-left: 20px; padding-right: 40px;
}

[dir="rtl"] .banner {
  padding-right: 20px; padding-left: 40px;
}

.banner {
  resize: vertical;
}

/* used with { dir: 'ltr' } option */

.banner {
  color: #222222;
  top: 0; left: 5px; bottom: 10px; right: 5px;
  padding-left: 20px; padding-right: 40px;
  resize: vertical;
}

These shorthand properties set values for physical properties by default. Specifying the logical keyboard at the beginning of the property value will transform the flow-relative values afterward into both physical LTR and RTL properties:

Logical Borders

  • border, border-block, border-block-start, border-block-end, border-inline, border-inline-start, border-inline-end, border-start, border-end, border-color, border-block-color, border-block-start-color, border-block-end-color, border-inline-color, border-inline-start-color, border-inline-end-color, border-start-color, border-end-color, border-style, border-block-style, border-block-start-style, border-block-end-style, border-inline-style, border-inline-start-style, border-inline-end-style, border-start-style, border-end-style, border-width, border-block-width, border-block-start-width, border-block-end-width, border-inline-width, border-inline-start-width, border-inline-end-width, border-start-width, border-end-width

Logical Offsets

  • inset, inset-block, inset-block-start, inset-block-end, inset-inline, inset-inline-start, inset-inline-end, inset-start, inset-end

Logical Margins

  • margin, margin-block, margin-block-start, margin-block-end, margin-inline, margin-inline-start, margin-inline-end, margin-start, margin-end

Logical Paddings

  • padding, padding-block, padding-block-start, padding-block-end, padding-inline, padding-inline-start, padding-inline-end, padding-start, padding-end

Logical Sizes

  • block-size, inline-size

Flow-Relative Values

  • clear: inline-start, clear: inline-end, float: inline-start, float: inline-end, text-align: start, text-align: end

By default, PostCSS Logical Properties changes the selector weight of flow-relative declarations and requires at least one [dir] attribute in your HTML. If you don’t have any [dir] attributes, consider using the following JavaScript:

// force at least one dir attribute (this can run at any time)
document.documentElement.dir=document.documentElement.dir||'ltr';

Otherwise, consider using the dir option to transform all logical properties and values to a specific direction.

require('postcss-logical')({
  dir: 'ltr'
});

Usage

Add PostCSS Logical Properties to your build tool:

npm install postcss-logical --save-dev

Node

Use PostCSS Logical Properties to process your CSS:

require('postcss-logical').process(YOUR_CSS);

PostCSS

Add PostCSS to your build tool:

npm install postcss --save-dev

Use PostCSS Logical Properties as a plugin:

postcss([
  require('postcss-logical')(/* options */)
]).process(YOUR_CSS);

Gulp

Add Gulp PostCSS to your build tool:

npm install gulp-postcss --save-dev

Use PostCSS Logical Properties in your Gulpfile:

var postcss = require('gulp-postcss');

gulp.task('css', function () {
  return gulp.src('./src/*.css').pipe(
    postcss([
      require('postcss-logical')(/* options */)
    ])
  ).pipe(
    gulp.dest('.')
  );
});

Grunt

Add Grunt PostCSS to your build tool:

npm install grunt-postcss --save-dev

Use PostCSS Logical Properties in your Gruntfile:

grunt.loadNpmTasks('grunt-postcss');

grunt.initConfig({
  postcss: {
    options: {
      use: [
        require('postcss-logical')(/* options */)
      ]
    },
    dist: {
      src: '*.css'
    }
  }
});

About

Use logical properties and flow-relative values in CSS

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

No packages published

Contributors 8