如何向epub添加缺少的特定于浏览器的css声明属性和前缀

如何向epub添加缺少的特定于浏览器的css声明属性和前缀,css,epub,emmet,epub3,Css,Epub,Emmet,Epub3,发布者有时发布Epub标题时不包含所有必需的特定于浏览器的css声明属性和前缀。例如,标题可能包含-webkit transform声明,但省略transform,反之亦然 有许多工具可用于帮助开发人员创建新内容的工作流;但是,我正在寻找一种方法来解析整个Epub并添加任何缺少的属性。我们将假设所有相关CSS都在.CSS文件中。您可以通过解压打开epub,这将公开CSS文件,不管它们在哪里。然后,您可以简单地通过您最喜欢的前缀工具运行这些,然后将书压缩回原处 问题在于,AFAIK前缀工具通常需要

发布者有时发布Epub标题时不包含所有必需的特定于浏览器的css声明属性和前缀。例如,标题可能包含
-webkit transform
声明,但省略
transform
,反之亦然


有许多工具可用于帮助开发人员创建新内容的工作流;但是,我正在寻找一种方法来解析整个Epub并添加任何缺少的属性。

我们将假设所有相关CSS都在
.CSS
文件中。您可以通过解压打开epub,这将公开CSS文件,不管它们在哪里。然后,您可以简单地通过您最喜欢的前缀工具运行这些,然后将书压缩回原处


问题在于,AFAIK前缀工具通常需要
转换
属性,并添加
-webkit转换
对应项。如果只有
-webkit transform
存在,并且您希望添加
transform
,我不确定这些工具是否会起作用。您必须检查每个工具,看看它是否提供这种行为。在最坏的情况下,您可以为CSS转换框架编写自己的插件,如rework,以满足您的需要。

最终使用带有插件POSTSS UNFIX和autoprefixer的POSTSS解决了这个问题。postcss unprefix删除现有前缀,autoprefixer然后添加任何需要的前缀

var fs = require('fs')
var postcss = require('postcss');

var input = process.argv[2]; // the source of the css
var output = process.argv[3]; // where to write the output

fs.readFile(input, 'utf8', function (err, result) {
    if (err) {
        console.log(err);
        process.exit(1);
    }
    processCss(result, function (err, result) {
        if (err) {
            console.log(err);
            process.exit(1);
        } else {
            fs.writeFileSync(output, result, "utf8");
            process.exit(0);
        }
    })
});


function processCss(cssString, callback) {
    postcss([require('postcss-unprefix'), require('autoprefixer')])
    .process(cssString, { from: 'in.css', to: 'out.css' })
    .then(function ( error, result ) {
        if (result) {
            callback(String.trim(result.css));
        } else {
            callback(null, error);
        }
    });
}

试着让我的头绕过反对票。没有显示任何研究或努力:问题清楚地表明我研究了现有的工具。怎么不清楚?这对谁没用?请不要担心。也许选民们担心的是,你最初似乎想要一个工具,但现在这个工具已经离题了。然而,在这种情况下,首选的反应是投票关闭(他可能也这样做了),而不是否决。不管怎样。看来返工CSS应该可以解决这个问题。将尝试找到一种方法来分享我的解决方案。