如何在玉石中添加html标签条件?

时间:2011-10-13 16:21:51

标签: html internet-explorer node.js pug

jade中,我想根据this method输入一个带有条件的html标签,其中包含

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->

位于html文件的顶部。

我试过

//[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]
//[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]
//[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]
//[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]
  head
    ...

但是jade忽略了html标记,并且没有在最终</html>标记中写入。这是无效的html,导致IE根本没有显示任何内容。

有没有办法做到这一点?

我想如果没办法,我会使用javascript解决方案。

7 个答案:

答案 0 :(得分:21)

此方法适用于关闭html标记:

!!! 5
//if lt IE 7
    <html class="no-js lt-ie9 lt-ie8 lt-ie7">
//if IE 7
    <html class="no-js lt-ie9 lt-ie8">
//if IE 8
    <html class="no-js lt-ie9">
// [if gt IE 8] <!
html(class="no-js", lang="en")
    // <![endif]
    head
        title= title

    body!= body

来自:https://gist.github.com/kmiyashiro/1140425#comment-675550

更新

正如kumar-harsh指出的那样,这种行为现在已被折旧,如果你需要这个功能,你现在应该使用常规的html:

<!--[if IE]>
  <html class="ie">
<![endif]-->
<![if !IE]>
  <html class="not-ie">
<![endif]>
</html>

来自:https://github.com/visionmedia/jade/issues/1345?source=cc#issuecomment-31920732

答案 1 :(得分:17)

这就是你要找的东西,它也会给出结束的html标签。

!!! 5
//[if lt IE 7]><html lang="en" class="no-js oldie lt-ie9 lt-ie8 lt-ie7"><![endif]
//[if IE 7]><html lang="en" class="no-js oldie lt-ie9 lt-ie8"><![endif]
//[if IE 8]><html lang="en" class="no-js oldie lt-ie9"><![endif]
//[if gt IE 8]><!
html(class='no-js', lang='en')
  //<![endif]
  head

答案 2 :(得分:11)

只需使用此语法,请注意不同的缩进:

!!! 5
| <!--[if lt IE 7]> <html class="ie6 oldie" lang="en"> <![endif]-->
| <!--[if IE 7]>    <html class="ie7 oldie" lang="en"> <![endif]-->
| <!--[if IE 8]>    <html class="ie8 oldie" lang="en"> <![endif]-->
| <!--[if gt IE 8]><!--> <html lang="en"> <!--<![endif]-->
head
  …

答案 3 :(得分:8)

在版本1.0.0(在 2013年12月22日发布)中,Jade不再解析评论内容,并且已删除对IE条件评论的支持(//if lt IE 7不会像0.35.0及以下版本一样工作。

新方法是使用格式良好的IE条件注释。因此,为了生成上述IE条件注释,Jade模板必须如下:

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!-->
html(class="") 
  <!--<![endif]-->
  ...

请注意,前四个html元素是格式良好的HTML元素。最后一个使用Jade语法。最后一条评论<!--<![endif]-->也必须缩进。

使用Jade 1.0.0及更高版本,可以安全地使用HTML注释,因为Jade会忽略以<字符开头的任何行。

您还可以访问有关Jade版本0.35.01.0.0之间差异的有关IE条件评论的this post。它还显示了使用Jade mixins机制进行条件注释的替代方法。

答案 4 :(得分:3)

从版本1.0.0开始,// if构造is not magical anymore。要么逐字呈现HTML(任何以&lt;开头的行按照Jade原样发送),要么使用mixin,按照另一个答案中引用的Tom's blog

mixin ie(condition)
    | <!--[!{condition}]>
    block
    | <![endif]-->

doctype html
html
  head
    title= My title
    +ie('if IE 8')
      link(rel='stylesheet', href='/stylesheets/style-ie8-1.css')

答案 5 :(得分:1)

很简单。

例:

<强> HTML

<!--[if lt IE 7 ]><html class="ie ie6" lang="en"><![endif]-->
<!--[if IE 7 ]><html class="ie ie7" lang="en"><![endif]-->
<!--[if IE 8 ]><html class="ie ie8" lang="en"> <![endif]-->

<强> JADE

//[if lt IE 7]>
  <html class="ie ie6" lang="en"> <![endif]
//[if IE 7]>
  <html class="ie ie7" lang="en"> <![endif]
//[if IE 8]>
  <html class="ie ie8" lang="en"> <![endif]

答案 6 :(得分:-5)

据我所知你不能把这样的html标签放在玉器里。为此,您需要包含html或在标记中使用尾随(。),这些标记支持以下文本:

p. <html><script></script>....

所以html标签不支持文本,所以你不能这样做。另一个解决方案是:

-if IE==6
    html.ie6
-if IE==7
    html.ie7
-if IE==8
    html.ie8
-if IE==9
    html.ie9
  head
  body
      h1 My sit