通知メッセージ

通知エリアのメッセージをスクロール表示する方法

Cocoonカスタマイズ集
この記事は約6分で読めます。
記事内に広告が含まれています。

はじめに

Cocoonの通知エリアに表示されるメッセージを、横スクロール(流れる文字)で表示させたいケースがあります。

以下の記事では、notice.phpを編集して通知メッセージを <span>タグで囲み、CSSで流れるようにする方法を紹介しています。

その後、Cocoon本体のアップデートにより<span>タグが付加されました。
そのため、CSSのみでスタイルを変更することが可能です。

この記事では、この方法について説明します。

完成イメージ

本ページに完成イメージを反映させます。

実装手順

以下の手順で実装します。

  • ラベル
    Cocoon設定

    表1に示す項目を設定します。

    Cocoon設定
    設定大項目項目設定値
    通知通知設定通知エリアの表示オン
    通知メッセージメッセージを入力
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    .notice-area {
      overflow: hidden;
    
      span {
        animation: marquee 20s linear infinite;
        display: inline-block;
        padding-left: 100%;
        white-space: nowrap;
      }
    }
    
    @keyframes marquee {
      0% {
        transform: translateX(0);
      }
      100% {
        transform: translateX(-100%);
      }
    }

参考:CSSのみで縦にスクロールする方法

以下をCSSのみで実現します。

完成イメージ

実装手順

  • ラベル
    HTMLを追加

    以下のコードを「カスタムHTML」ウィジェットに追加します。

    <ul class="ticker">
      <div class="ticker-wrap">
        <li><a href="#"><span>1つ目のお知らせ。</span></a></li>
        <li><a href="#"><span>2つ目のお知らせ。</span></a></li>
        <li><a href="#"><span>3つ目のお知らせ。</span></a></li>
        <li><a href="#"><span>1つ目のお知らせ。</span></a></li> <!-- クローン -->
      </div>
    </ul>
  • ラベル
    CSSを追加

    以下のコードをstyle.cssに追加します。

    .body {
      .ticker {
        background-color: #333;
        height: 2.5em;
        overflow: hidden;
        position: relative;
    
        .ticker-wrap {
          align-items: center;
          animation: scrollTicker 10.5s linear infinite;
          display: flex;
          flex-direction: column;
        }
    
        li {
          height: 2.5em;
          line-height: 2.5em;
          list-style: none;
          margin: 0;
          white-space: nowrap;
        }
    
        span {
          display: inline-block;
          max-width: 100%;
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
        }
      }
    }
    
    @keyframes scrollTicker {
      0%     { transform: translateY(0); }
      28.57% { transform: translateY(0); }      /* 3秒停止 */
      33.33% { transform: translateY(-2.5em); } /* 0.5秒移動 */
    
      61.90% { transform: translateY(-2.5em); } /* 3秒停止 */
      66.66% { transform: translateY(-5em); }   /* 0.5秒移動 */
    
      95.23% { transform: translateY(-5em); }   /* 3秒停止 */
      100%   { transform: translateY(-7.5em); } /* 0.5秒移動 */
    }

さいごに

今回紹介した方法を使えば、CSSのみで通知エリアのメッセージをスムーズにスクロール表示できます。
特別なJavaScriptやプラグインは不要で、簡単に実装可能です。

タイトルとURLをコピーしました