繁体   English   中英

我应该在 UnCSS 插件上忽略什么字符串才能使 Foundation 6 的响应式菜单正常工作?

[英]What string should I ignore on UnCSS plugin to make the responsive menu of Foundation 6 works?

我用 NPM 安装了 Foundation 6,用foundation new命令开始了一个新项目,并开始构建一个新网站。 但是,当我使用命令foundation build --production在生产环境中构建它时, .top-bar类总是折叠,即使是在大型显示器上也是如此(注意data-hide-for="medium" )。 当我使用foundation watch命令在开发模式下运行它时,它工作得很好(仅在中小型设备上崩溃)。

我认为可能是gulp的一些任务有问题,我决定一一测试。 当我将uncss修改为仅在开发模式下运行(将isProduction var 更改为false布尔值)时,它起作用了,所以。 我决定阅读他们的文档,在那里我找到了“忽略”设置。 我可以在其中设置一些选择器,这是我的问题吗? 我必须忽略什么选择器才能使折叠效果很好。 我认为 UnCSS 正在删除一些它认为 *,html 文件没有使用的选择器。 但它是,我无法确定它是哪个选择器。

注意: uncss任务仅在生产模式下运行。

index.html

<div class="title-bar" data-responsive-toggle="top-menu" data-hide-for="medium">
    <button class="menu-icon" type="button" data-toggle></button>
    <div class="title-bar-title">Menu</div>
</div>

<div class="top-bar" id="top-menu">
    <div class="top-bar-left">
        <ul class="dropdown menu" data-dropdown-menu>
            <li class="menu-text">Site Title</li>
            <li class="has-submenu">
                <a href="#">One</a>
                <ul class="submenu menu vertical" data-submenu>
                    <li><a href="#">One</a></li>
                    <li><a href="#">Two</a></li>
                    <li><a href="#">Three</a></li>
                </ul>
            </li>
            <li><a href="#">Two</a></li>
            <li><a href="#">Three</a></li>
        </ul>
    </div>
    <div class="top-bar-right">
        <ul class="menu">
            <li>
                <input type="text" placeholder="Login">
            </li>
            <li>
                <input type="password" placeholder="Password">
            </li>
            <li>
                <button type="button" class="button">Login</button>
            </li>
        </ul>
    </div>
</div>

gulpfile.js (这是Foundation for sites complete template的默认,所以我只放CSS编译部分)

// Compile Sass into CSS
// In production, the CSS is compressed
gulp.task('sass', function() {
  var uncss = $.if(isProduction, $.uncss({
    html: ['src/**/*.html'],
    ignore: [
      new RegExp('^meta\..*'),
      new RegExp('^\.is-.*')
    ]
  }));

  var minifycss = $.if(isProduction, $.minifyCss());

  return gulp.src('src/assets/scss/app.scss')
    .pipe($.sourcemaps.init())
    .pipe($.sass({
      includePaths: PATHS.sass
    })
      .on('error', $.sass.logError))
    .pipe($.autoprefixer({
      browsers: COMPATIBILITY
    }))
    .pipe(uncss)
    .pipe(minifycss)
    .pipe($.if(!isProduction, $.sourcemaps.write()))
    .pipe(gulp.dest('dist/assets/css'))
    .pipe(browser.reload({stream: true}));
});

整个 CSS 没有改动,我没有修改任何东西,甚至路径都是默认的(但我添加了一些规则,比如字体和一些颜色),我只是删除了 Foundation 6 的默认 index.html 并添加了这个菜单(那是在他们的文档上)。

为了帮助你,我在 MEGA 上上传了整个项目,只需解压缩并运行foundation watch ,看到.top-bar工作正常(带有菜单和登录表单),然后运行foundation build --production并运行index.html dist文件夹中的index.html可以看到.top-bar折叠了。

.top-bar生产: 在此处输入图像描述

.top-bar开发(工作): 在此处输入图像描述

我遇到了类似的问题,并通过以下 gulp-uncss 设置进行了修复:

   .pipe(uncss({
      html: ['./*.html'],
      ignore: [new RegExp('^meta\..*'),
        new RegExp('.*\.is-.*'),
        new RegExp('.*\.top-bar.*'),
        new RegExp('.*\.menu.*')]
    }))

foundation-mq类添加到您的忽略列表中。 只有正则表达式对我有用: /foundation\-mq/


_global.scss

// These styles are applied to a <meta> tag, which is read by the Foundation JavaScript
.foundation-mq {
  font-family: '#{-zf-bp-serialize($breakpoints)}';
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM