Web前端开发网

fly63.com

首页 资源 工具 文章 教程 栏目
  • 在线搜索
  • 文章标签
  • 广告合作
  • 赞助一下
  • 关于我们
资源推荐
阿里云优惠券
卓越的云计算技术和服务提供商
腾讯云优惠券
云服务器,云数据库,CDN,域名注册等多种云计算服务
扣子Coze
创建属于你的 AI 应用,AI Agent智能办公平台
豆包AI
字节跳动旗下 AI 智能助手
即梦AI
一站式智能创作平台,即刻造梦
AiPPT
全智能AI一键生成 PPT
堆友AI
零门槛,多风格AI绘画免费生成,电商海报设计神器
蜂小推
不扣量的项目推广平台
SpeedAI
一键去重、降AIGC率、数据可视化、论文写作

资源分类

AI智能 酷站推荐 招聘/兼职 框架/库 模块/管理 移动端UI框架 Web-UI框架 Js插件 Jquery插件 CSS相关 IDE环境 在线工具 图形动效 游戏框架 node相关 调试/测试 在线学习 社区/论坛 博客/团队 前端素材 图标/图库 建站资源 设计/灵感 IT资讯
网站收录 / 问题反馈

Cssgrace

分享
复制链接
新浪微博
QQ 好友

扫一扫分享

GitHub:https://github.com/cssdream/cssgrace
网站描述:用于编写简短,优雅,面向未来的CSS
GitHub

css Grace是PostCSS的插件。它不会更改原始CSS语法,让CSS编写起来更简单,更优雅。实现了大部分常用的 IE Hack,获取图片宽高等,position: center 等功能。同时可以配合 Sass/Less 等预处理工具使用,最重要的是它不改变 CSS 原生的语法,让 CSS 写起来更简单,更优雅。

向前,CSS Grace 可以作为一种 Polyfill 工具,让你可以提前使用一些 CSS3 的新特性。

向后,CSS Grace 可以生成兼容旧浏览器的各种 Hack,让你无需担忧兼容性。

而你,只用书写和关心标准的 CSS 属性或属性值。


例如,骚年们会经常用下面这段 CSS 用来解决闭合浮动的问题:

.clearfix {
  *zoom: 1;
}
.clearfix:after {
  clear: both;
}
.clearfix:before,
.clearfix:after {
  content: '';
  display: table;
}

这个语法糖虽然好用,兼容性良好,但在 html 中会出现非常多的 。甚至有些地方已经闭合了浮动,有些人为了保险起见,还是随手加上了。o(╯□╰)o

如此一来代码显得尤为冗余,而且加了很多无语意的 class。更进一步,我们知道如果触发了 BFC 的元素是自带闭合浮动特性的,clearfix 君略感违和。

Q: 那么,CSS Grace 如何解决呢?

A: 直接使用 clear: fix 即可。

input:

.foo {
  clear: fix;
}

output:

.foo {
  *zoom: 1;
}
.foo:after {
  clear: both;
}
.foo:before,
.foo:after {
  content: '';
  display: table;
}

Q: 那么,如何解决冗余问题呢?

A: 还是直接使用 clear: fix 即可,(^o^)/~

智能识别,如果存在触发 BFC 的属性,不生成语法糖。

input:

.foo {
  clear: fix;
  overflow: hidden; /* 已经可以闭合浮动了 */
}

output:

.foo {
  overflow: hidden; /* 已经可以闭合浮动了 */
}

就是那么任性!

目前功能处于初步阶段,欢迎大家提出更多意见和想法。


快速开始

  1. 下载并安装 Node.js

  2. 新建一个目录,比如 test ,在命令行中切换到该目录,安装 cssgrace。

npm install cssgrace
  1. 在项目目录新增一个 test.js,代码如下:
npm install chokidar
var fs       = require('fs')
var cssgrace = require('cssgrace')

var src = 'src/input.css'
console.info('Watching…\nModify the input.css and save.')

chokidar.watch(src, {
  ignored: /[\/\\]\./,
  persistent: true
}).on('all',
  function(event, path, stats) {
    var css = fs.readFileSync(src, 'utf8')
    fs.writeFileSync('build/output.css', cssgrace.pack(css))
  })
  1. 在项目目录新增一个 input.css,注意编码要和 fs.readFileSync 中的保持一致。输入测试的 CSS 代码片段,比如:
.foo::after {
  position: center;
  width: 210px;
  height: 80px;
  background: rgba(112, 26, 0, .3);
}

.bar {
  display: inline-block;
  opacity: .5;
}
  1. 在命令行中执行 node test,快去看看 output.css 中发生了什么吧!
.foo:after {
  position: absolute;
  left: 50%;
  top: 50%;
  margin-left: -105px;
  margin-top: -40px;
  width: 210px;
  height: 80px;
  background: rgba(112, 26, 0, .3);
  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4c701a00', endColorstr='#4c701a00');
}

:root .foo:after {
  filter: none\9;
}

.bar {
  display: inline-block;
  *display: inline;
  *zoom: 1;
  opacity: .5;
  filter: alpha(opacity=50);
}


如何使用

Node Watch & 配合其他插件

使用 chokidar 模块实时监测 CSS 文件变动,同时可以加载其他插件,灵活扩展。

var fs       = require('fs')
var chokidar = require('chokidar')
var postcss  = require('postcss')
var cssgrace = require('cssgrace')
var nested   = require('postcss-nested') //CSS 代码嵌套
var minmax   = require('postcss-media-minmax') //使用 >=/<= 代替 @media 中的 min-/max
var selector = require('postcss-custom-selectors') //自定义选择器


var src = 'src/input.css'

console.info('Watching…\nModify the input.css and save.')


chokidar.watch(src, {
  ignored: /[\/\\]\./,
  persistent: true
}).on('all',
  function(event, path, stats) {
    var css = fs.readFileSync(src, 'utf8')
    var output = postcss()
      .use(minmax())
      .use(cssgrace)
      .use(selector())
      .use(nested)
      .process(css)
      .css;
    fs.writeFileSync('build/output.css', output)
  })

Grunt

npm install grunt-postcss
module.exports = function(grunt) {
  grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    postcss: {
      options: {
        processors: [
          require('postcss-custom-selector')(),
          require('cssgrace'),
        ]
      },
      dist: {
        src: ['src/*.css'],
        dest: 'build/grunt.css'
      }
    }
  });

  grunt.loadNpmTasks('grunt-contrib-uglify');
  grunt.loadNpmTasks('grunt-postcss');

  grunt.registerTask('default', ['postcss']);
}

Gulp

npm install gulp-postcss
var gulp = require('gulp');
var rename = require('gulp-rename');
var postcss = require('gulp-postcss');
var cssgrace = require('cssgrace');
var autoprefixer = require('autoprefixer-core')

gulp.task('default', function () {
    var processors = [
        require('cssgrace')
    ];
    gulp.src('src/input.css')
        .pipe(postcss(processors))
        .pipe(rename('gulp.css'))
        .pipe(gulp.dest('build'))
});
gulp.watch('src/*.css', ['default']);

仅供个人学习参考/导航指引使用,具体请以第三方网站说明为准,本站不提供任何专业建议。如果地址失效或描述有误,请联系站长反馈~感谢您的理解与支持!

链接: https://fly63.com/nav/3264

更多»
热门资源
less
一个CSS预处理器,意味着它扩展了CSS语言,增加了允许变量,混合,函数和许多其他技术的功能
官网
GitHub
sass
成熟、稳定和强大的CSS扩展语言
官网
GitHub
postcss
PostCSS是一个使用JavaScript插件来转换CSS的工具。
官网
GitHub
stylus
Stylus是一个高效、动态以及丰富的CSS预处理器
官网
GitHub
animate.css
齐全的CSS3动画库
官网
GitHub
Metro UI
基于平板界面设计CSS库是一种界面展示技术
官网
GitHub
Spectre.css
轻量响应式 CSS 框架
官网
GitHub
water.css
只需添加CSS框架即可应用样式,无需定义元素类
官网
GitHub
DropCSS
一个用来清理无用 CSS 的小工具
点击进入
GitHub
Pattern.css
一个CSS库,使用美丽的图案填充空的背景。
官网
GitHub
three-dots
一组CSS加载动画,它由三个点组成,而这些点仅由单个元素组成
官网
GitHub
CSSeffectsSnippets
提供了漂亮的CSS动画
官网
GitHub
类似于Cssgrace的资源
CssPiffle
一个在线的CSS界面设计工具
官网
CSSeffectsSnippets
提供了漂亮的CSS动画
官网
GitHub
wing
一个微型响应式的 CSS 框架
官网
GitHub
CssLoad
完全基于CSS的加载动画设计工具
官网
Charts.css
一个用于数据可视化的开源 CSS 框架
官网
GitHub
magic
带多种动画效果的CSS3动画库
官网
GitHub
Choreographer-js
一个用于处理复杂动画的CSS 动效库
官网
GitHub
min.css
具有响应式的12列网格系统、按钮、图标的样式
官网
GitHub
目录

手机扫一扫预览

》
分享组件加载中...
首页 技术导航 在线工具 技术文章 教程资源 前端标签 AI工具集 前端库/框架 实用工具箱 广告合作 关于我们

Copyright © 2018 Web前端开发网提供免费在线工具、编程学习资源(教程/框架/库),内容以学习参考为主,助您解决各类实际问题,快速提升专业能力。