javascript Gulp CSS媒体查询内联

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Gulp CSS媒体查询内联相关的知识,希望对你有一定的参考价值。

const fs = require('fs');
const path = require('path');
const siphon = require('siphon-media-query');
const through = require('through2');

module.exports = (opts = {}) => {
  return through.obj((file, encoding, callback) => {
    if (file.isNull()) {
      return file;
    }

    if (file.isStream()) {
      throw new Error('Streaming not supported');
    }

    let contents = file.contents.toString();

    // find stylesheet nodes that match this pattern
    const matches = contents.match(/<link rel="stylesheet" type="text\/css" href=".*css\/.*.css">/g);
    // remove stylesheet nodes
    matches.forEach((match) => contents = contents.replace(match, ''));

    // get only styles nested in media queries
    const mqCss = matches
      // capture the uri path
      .map((match) => match.match(/href="(.*css\/.*.css)"/)[1])
      // read and parse for mqs in the file from the dist directory
      .map((cssPath) => siphon(fs.readFileSync(
        path.resolve(__dirname, 'dist', cssPath)).toString()
      ))
      // combine all css media queries
      .join('\n');

    // replace this comment with media query styles
    contents = contents.replace(/<!-- <style> -->/, `<style>${mqCss}</style>`);

    file.contents = new Buffer(contents);
    callback(null, file);
  });
}

以上是关于javascript Gulp CSS媒体查询内联的主要内容,如果未能解决你的问题,请参考以下文章

我们可以嵌套不会通过 Gulp 添加到编译输出的整体大小的媒体查询 (SASS) 吗?

使用媒体查询内联样式[重复]

使用媒体查询进行移动优化的背景而不是内联图像?

将供应商 CSS 与 LESS 结合后以及 gulp-minify 后 Sourcemap 错误

CSS 媒体查询和 JavaScript 窗口宽度不匹配

CSS 媒体查询和 JavaScript 窗口宽度不匹配