Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更少css中的日期条件_Javascript_Css_Less - Fatal编程技术网

Javascript 更少css中的日期条件

Javascript 更少css中的日期条件,javascript,css,less,Javascript,Css,Less,我想使用Less来创建一些仅在给定时间间隔内有效的CSS代码 我想创建一个这样的混音 .showFromTo (@from, @to) when (`new Date().getTime() >= @from && new Date().getTime() <= @to`) { width: 100px; //for example } 因为它不起作用。。。有人能帮我吗?有几件事 传递javascript日期信息,因此需要对此进行说明 正如Stephen T

我想使用Less来创建一些仅在给定时间间隔内有效的CSS代码

我想创建一个这样的混音

.showFromTo (@from, @to) when (`new Date().getTime() >= @from && new Date().getTime() <= @to`) {
    width: 100px; //for example
}
因为它不起作用。。。有人能帮我吗?

有几件事
  • 传递javascript日期信息,因此需要对此进行说明
  • 正如Stephen Thomas指出的,我认为他是正确的,guard中不允许使用javascript表达式,因此javascript计算必须在guard计算之前进行
  • 解决办法 以下说明了这两种情况,并且似乎运行正常:

    更少

    .showFromTo (@startYear, @startMonth, @startDay, @endYear, @endMonth, @endDay) {
      @currentTime: `new Date().getTime()`;
      @start: `new Date(@{startYear}, @{startMonth} - 1, @{startDay}).getTime()`;
      @end: `new Date(@{endYear}, @{endMonth} - 1, @{endDay}).getTime()`;
      @displayCheck: `@{currentTime} >= @{start} && @{currentTime} <= @{end} ? true : false`;
      .display() when (@displayCheck = true) {
        width: 100px; //for example
      }
      .display();
    }
    
    .myClass {
      .showFromTo(2014, 1, 1, 2014, 12, 31); //displays if in 2014
    }
    .myClass2 {
      .showFromTo(2013, 1, 1, 2013, 12, 31); //does not display since we are past 2013
    }
    

    谢谢斯科特的回答。 我是这样解决的:

    @todayTs: `new Date().getTime()`;
    .showFromTo (@fromTs, @toTs) when (@fromTs =< @todayTs) and (@todayTs =<  @toTs) {
        //style
    }
    

    这样比较容易,但是您需要以更复杂的格式< /P>传递参数。我不相信HARSE表达式支持任意的JavaScript执行。在任何情况下,考虑JavaScript评估在编译时发生,所以只有在服务较少的源并让客户端编译它时,才能执行JavaScript评估。(我不建议这样做)或定期重新编译CSS,并记住破坏您可能拥有的任何缓存。
    .myClass {
      width: 100px;
    }
    
    @todayTs: `new Date().getTime()`;
    .showFromTo (@fromTs, @toTs) when (@fromTs =< @todayTs) and (@todayTs =<  @toTs) {
        //style
    }
    
    .myClass {
        .showFromTo(`new Date(2014, 00, 03).getTime()`, `new Date(2014, 00, 09).getTime()`);
    }