GithubHelp home page GithubHelp logo

pborreli / postcss-high-contrast Goto Github PK

View Code? Open in Web Editor NEW

This project forked from shiwaforce/postcss-high-contrast

0.0 1.0 0.0 422 KB

Create high contrast version of your project with ease.

Home Page: https://github.com/admdh/postcss-high-contrast

License: MIT License

JavaScript 100.00%

postcss-high-contrast's Introduction

PostCSS High Contrast

PostCSS High Contrast is PostCSS plugin that helps automaticaly convert all colors to high contrast. This Plugin gives you ability to create high contrast version of your project with ease.

Why?

Accessible websites are getting more popular. Some countries even pass laws obliging IT companies create high contrast versions of their projects. Creating high contrast version of your project due some reasons can be painfull.

Live Example

Basic Usage

postcss([
	require('postcss-high-contrast')({
		aggressiveHC: true,
		aggressiveHCDefaultSelectorList: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'li', 'th', 'td'],
		aggressiveHCCustomSelectorList: ['div', 'span'],
		
		backgroundColor: '#000',
		altBgColor: '#fff',
		
		textColor: '#fff',
		
		linkColor: '#fcff3c',
		linkHoverColor: '#fcff3c',
		
		borderColor: '#fff',
		disableShadow: true
	})
]);

How It works?

None Aggressive Mode

PostCSS High Contrast plugin will find all colors and replace them to high contrast ones.
input.css:

body {
	background: #fff;
	color: #000;
}

a {
	color: #0b39e1;
}

output.css:

body {
	background: #000;
	color: #fff;
}

a {
	color: #fcff3c;
}

Aggressive Mode

In addition to replacing colors to high contrast colors, there is "Aggressive Mode". "Aggressive Mode" (aggressiveHC) is enabled by default. If selector doesn't have color property it will automateclly append it for increasing specificity and providing more accurate results.
input.css:

h1 {
	font-size: 48px;
	margin: 0;
	padding: 0 24px;
	width: 100%;
}

p {
	font-size: 48px;
	margin: 0 0 24px;
}

output.css:

h1 {
	color: #fff;
	font-size: 48px;
	margin: 0;
	padding: 0 24px;
	width: 100%;
}

p {
	color: #fff;
	font-size: 48px;
	margin: 0 0 24px;
}

Use aggressiveHCDefaultSelectorList and aggressiveHCCustomSelectorList to define own lists of properties.

Appending to wepbage

Using this plugin it's better to generate new high contrast version of css file. Than it is very easy to add/append high contrast version css to a webpage using JavaScript.
JQuery example:

function appendHighContrastCss(){
	var hc = '<link rel="stylesheet" href="/assets/css/high-contrast.css" id="hccss"/>';

	if(!$('#highContrastCss').length ){
		$('head').append(hc);
	} else {
		$('#hccss').remove();
	}
}

$('a.high-contrast').click(loadHighContrastCSS);
	appendHighContrastCss();
}

Tip: use cookeis to remember turned on high contrast css on different sessions and pages.

Options

Name Default Value Description
aggressiveHC true Will append properties even if they do not exist
aggressiveHCDefaultSelectorList ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'p', 'li', 'th', 'td'] Default list of selectors for aggressive property append
aggressiveHCCustomSelectorList ['span'] Custom list of selectors for aggressive property append
backgroundColor #000 Backgound color
altBgColor #fff Alternative background color
textColor #fff Text color
linkColor #fcff3c Link color
linkHoverBgColor #fff Link hover bacground color
linkHoverColor #000 Link hover color
borderColor #fff Border color
disableShadow true Disable shadow

Used by

Magyar Posta

postcss-high-contrast's People

Watchers

 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.