26

翡翠では、このメソッドに従って条件付きの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タグを無視し、endタグを書き込みません</html>。これは無効なhtmlであり、IEは何も表示しません。

それを行う方法はありますか?

方法がない場合は、JavaScriptソリューションを使用することを考えています。

4

7 に答える 7

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

于 2012-05-07T18:22:43.747 に答える
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
于 2013-01-07T14:39:10.650 に答える
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
  …
于 2011-10-25T18:37:56.520 に答える
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最初の 4 つの要素は適切にフォーマットされた HTML 要素であることに注意してください。最後のものは Jade 構文を使用します。また、最後のコメント<!--<![endif]-->はインデントする必要があります。

Jade バージョン 1.0.0 以降では、HTML コメントを安全に使用できます。Jade は<文字で始まる行を無視するからです。

Jadeのバージョン0.35.01.0.0. また、条件付きコメントに Jade mixins メカニズムを使用する代替アプローチも示します。

于 2014-01-22T02:07:55.403 に答える
3

バージョン 1.0.0 以降、この// if構造はもう魔法ではありません。別の回答で引用されているトムのブログに従って、HTML をそのままレンダリングするか (< で始まる行は Jade によってそのまま送信されます)、ミックスインを使用します。

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')
于 2014-06-06T15:55:29.707 に答える
-5

私の知る限り、このような html タグを jade に入れることはできません。これには、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
于 2011-10-13T17:55:42.793 に答える