カテゴリー: サイト作成

  • CSSでスピナーや★に色付けをランキングサイトにしてみた

    API に問い合わせてデータを取り込み表示するまでの待ち時間、なんの変化もないとフリーズしたみたいだから円環をクルクルまわるスピナーを表示させてみた。

    CSSアニメでスピナー

    コード

    <div id="spinner"></div>
    
    @keyframes spin {
      0% {transform:rotate(0deg);}
      50% {transform: rotate(180deg);}
      100% {transform: rotate(360deg);}
    }
    #spinner {
      width: 100px;
      height: 100px;
      border-radius: 50%;
      border: 20px solid;
      border-color: transparent transparent transparent #bf0000;
      animation: spin 1s linear infinite;
      position: fixed;
      inset:0;
      margin: auto;
    }

    html ファイルに ID が spinner の divタグを用意。場所はどこでも。スタイルシートに@keyframes 以下をペタッと貼れば、画面中央にスピナーがクルクルまわります。

    アニメーション

    @keyframes に spin と言う名のアニメーションのキーフレームを設定します。最初 0%は、回転角 0度。50% で 180度。100% で 360度、つまり一回転する transform 変化を設定。コレを #spinner 以下の animationプロパティで読み込み、1s 一秒で linear 直線的に変化させ infinite 無限ループする。

    スピナー

    正方形の一辺を丸め、そこだけ色付けする。コレで円環の一部分を表現。transparent は、親要素の色を指定するので見えない。position: fixed; で画面の見える範囲に固定表示。inset: 0; margin: auto; で中央を指定。

    あとは、JS(JavaScript) で display の値を block で表示 none で非表示を切り替えてます。

    const spn=document.querySelector('#spinner');
    	spn.style.display="block"; //表示
    	spn.style.display="none";  //非表示

    CSSで★に色付け

    <rate><rate-af>★★★</rate-af>★★★</rate>
    
    rate{
      display: inline-block;
      color: #ccc;
    }
    rate-af {
      position: absolute;
      color: #ffa500;
      overflow: hidden;
      height: 1.5rem;
    }

    rateタグに inline-block を指定することで文章の途中に position で指定できる座標をつくる。入れ子の rate-afタグの position を absolute にすることで親要素 rateタグの座標 0 に固定。rate-af の width を JS で可変させ、あふれた部分を overflow: hiddon; とすることで非表示。rem は文字の高さを表す単位だけど、★ はほぼ幅とも同じ。それで ★ 1.5コなんかも表現できる。height は、行の高さ設定次第だけど表示位置がズレないよう1.5rem にしてみた。

    ランキングサイト

    楽天市場のランキング、公式サイトのトップページにリアルタイムランギングが画像表示で少しある。けれど画像だけだと、なんだかよく判らないものも。アイテム名も含めテキスト込で一覧表示で見たいなぁと思っていたら、楽天ウェブサービスに API があるじゃない。

    てことで、楽天ランキングの一覧サイトを作ってみた。CSSのスピナーや★に色付けをしたものの動作サンプルにどうぞ♪

  • ゴルフ場 検索 SPS はグーグルに片想い

    ゴルフ場 検索ができるSPS(シングルページサイト)を作ったよ。グーグルがJS(ジャワスクリプト)を読めると聞いたので、どんな感じになるのか興味があって♪

    結果は、ある意味想定通り。読んではいるけど、こちらが期待したロングテールのSEO効果は、まだマルチページの方がありそう。。

    さて、そんな片想いに終わったSPSとは、シングルページサイト。つまり、トップページしかない、ある意味ペラサイト。URLも https://golf.4141.biz/ のみ。index.html ファイルに JS でコンテンツを書き出すから、ページ変移がない。キャッシュの持たせ方次第でサイト表示の体感速度を上げることができる。そんなサイト。

    今回は、html にフォームを置く。その選択に合わせて、データを楽天APIから引っ張ってくる。という形を取った。

    このサイトに人間がアクセスした場合、タイトルとフォームくらいしか無いシンプルページが表示され、「ん?」と思う間にデフォルトデータを楽天APIからダウンロード。ゴルフ場の一覧が表示される仕様。

    コレをPHPなどのサーバーサイドで行うと、データを待ってる間ページ表示が中断される。ページの描画が読み込み途中で止まると「重っ!」ってなるけど、それが「ん?」で済むカンジ。

    以前はJSガン無視だったグーグルが、どこまで読んでくれるのか。その結果をみるため、アナリティクスとサチコ(search console)を導入。URL検索でグーグルのキャッシュ確認などもしてみた。

    サチコを見る限り、フォーム内容がキーワードとして挙がっているものの楽天APIから引っ張ってきたデータに基づくロングテール系のワードは一切ない。

    「JS 読んでない!?」

    と疑いつつ、アナリティクスを見ながらキャッシュ確認をすると滞在時間が0秒。JS を読んでないのか、楽天APIのラグが原因なのかハッキリしない。

    そこで、位置情報に基づきデータをダウンロードするスクリプトを入れてみた。アクセス許可を求めるダイアログが出るので、グーグルのキャッシュ次第でJSなのか、ラグなのか判断する試み。

    結果、ダイアログが表示された状態でキャッシュ。よってJSは読んでるけど、ラグは待ってくれない模様。

    サチコに挙がったキーワードの平均掲載順位は60位辺り。ロングテールを拾えないと検索からのアクセスは見込めない。キャッシュまわりを整備したとして、htmlファイルにベタ打ちされてる以外のワードをグーグルが読んでくれないなら、これ以上の開発は無意味か??

    そんなこんなで放置してたら、サチコのクエリに検索ワードが全く挙がらなくなった(大笑)。デフォルトの表示を関東のゴルフ場一覧に戻し、URL検査で再インデックスをリクエスト。そして気づく、公開URLテスト。テストページでレンダリングされたページの表示ができるのね。きっちり楽天APIからのデータが表示できてたよ。とはいえ、デフォルト以外は読んでくれない模様。。

    やっぱり、マルチページか?!

  • WordPress ブロックエディタのブロックを作ってみる

    ワードプレス 5系グーテンベルクで導入されたブロックエディタ。標準仕様でも色々なブロックがあり、とても多機能。さらにカスタムブロックを作ることで、従来のショートコードを超える利便性!(タブンネ)

    とはいえ、カスタムブロックは必須パラメータのみの最小構成だと画面表示すらできない。これは、投稿画面と公開画面で共用の関数が使われているから。そこで、とりあえず画面表示できるまでを最小構成とし、最終的にインスタグラムの画像を独自仕様で貼り付けるブロックをプラグインとして作成してみる。

    (さらに…)
  • ワードプレスのショートコードで楽天APIを呼ぶプラグインの作り方

    ワードプレスのショートコードとは、記事投稿で使えるマクロのこと。PHPを使って一連の作業を自動化できる。[gallery]のように組み込みショートコードもあるが、APIを使って自作もできる。今回は、楽天APIを呼ぶプラグインの作り方。

    WordPress プラグインの作り方 で基本的なことはおさえたので応用編。

    (さらに…)
  • WordPress プラグインの作り方

    最近のWordPress のプラグインって、多機能すぎて重いんだよね。(子)テーマを編集するとセキュリティ更新が面倒。プラグインなら最悪、無効化すればいい。自作 phpコードは、ワードプレスのサンドボックスでエラーチェックしてくれるから、気軽にメモ帳で書いてみよう。

    てことで、シンプルなプラグインを作るよ。

    (さらに…)