HTMLフラグメントに "height=100%"を指定しても、Iframeが全高で表示されない。

問題

  • ポートレット(例えばブログポートレット)をIframeで埋め込むと、"height = 100%" であっても、ポートレットはスクロールバー付きの約150pxの高さで表示されます。

再生産ステップ:

  1. Content & Data --> Blogsにアクセスし、ブログエントリーと新しいジャーナル記事を追加する。

  2. サイトビルダー --> ページにアクセスし、コンテンツページを作成し、ブログポートレットを追加します。また、アセットパブリッシャーを追加し、"ダイナミック "に設定します。

  3. ポートレットのコンフィギュレーションを開き、「共有」を選択し、コードスニペットをコピーしてください。 たとえば、こんな感じだ:

    <iframe frameborder="0" height="100%" src="http://localhost:8080/widget/web/guest/test/-/blogs" width="100%"></iframe>

    (コード内の高さは100%のままであるべきです) それから、ページを公開します。

  4. Site Builder --> Pagesにアクセスして、別のコンテンツページを追加し、そこにHTMLフラグメントを追加します。フラグメントを編集するには、先にコピーしたコードをフラグメントエディタに貼り付け、保存します。

実際の結果 ブログはページに表示されるが、縦スクロールになる。
期待される結果 スクロールの必要なく、ページ全体にブログが表示される。

Environment

  • Liferay DXP 7.3
  • Liferay DXP 7.4

解決策

  • 現在の振る舞いは予想通りだ。 なぜなら、 height="100% は、フラグメントが親から受け継ぐ高さのパーセンテージを指しており、HTMLに埋め込んだときにコントロールできないからです。 いくつかの回避策を提案することができる:
    1. フラグメントの高さをパーセンテージなしで正確に指定する(例: height="1290" または height="1290px");

    2. カスタムCSSを使用する:

      .[$FRAGMENT_CLASS$] > div { height: 100%; } .component-html { height: 100%; }
    3. HTMLフラグメントの代わりにIFrameウィジェットを使用する;

    4. カスタムHTML & CSSでカスタムフラグメントを作成する。

  • 最後の2つのオプションでは、カスタマイズは私たちのサポートと互換性がないため、カスタムCSSやフラグメントを提供することはできません。 カスタマイズのサポートが必要な場合は、グローバルサービスチーム(GS)にお問い合わせください。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています