ラベル JavaScript の投稿を表示しています。 すべての投稿を表示
ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

10/19/2024

AIによるJavaScriptコードの説明:ページトップに戻るボタン(前記事参照)

実際の動作⇒https://tan-deki.com/
  const backToTopButton = document.addEventListener('DOMContentLoaded', function () {
    const backToTopButton = document.getElementById('back-to-top');
    
    backToTopButton.addEventListener('click', () => {
        window.scrollTo({ top: 0, behavior: 'smooth' });
    });

    window.addEventListener('scroll', () => {
        if (window.pageYOffset > 300) {
            backToTopButton.classList.add('show');
        } else {
            backToTopButton.classList.remove('show');
        }
    });
});

 【コードの目的】

このJavaScriptコードは、Webページに「ページトップに戻る」ボタンを作成し、特定の条件下で表示・非表示を切り替えるためのものです。ユーザーがページをある程度スクロールするとボタンが表示され、クリックするとページの一番上へスムーズに移動することができます。

  1. DOMContentLoaded イベントリスナー:

    • document.addEventListener('DOMContentLoaded', function () { ... }): WebページのDOM(Document Object Model)が完全に読み込まれた後に、中の関数が実行されます。これは、JavaScriptコードがHTMLの要素にアクセスする前に、すべての要素が準備できていることを保証するためです。
  2. 「戻る」ボタンの取得:

    • const backToTopButton = document.getElementById('back-to-top');: HTMLの中でIDが'back-to-top'となっている要素(通常はボタン)を取得します。このボタンがクリックされたときの動作を定義します。
  3. ボタンクリック時の処理:

    • backToTopButton.addEventListener('click', () => { ... }): ボタンがクリックされたときに実行される関数を設定します。
      • window.scrollTo({ top: 0, behavior: 'smooth' });: ブラウザウィンドウをページの一番上(top: 0)へスムーズにスクロールします。behavior: 'smooth'によって、カクカクせずに滑らかなスクロールを実現します。
  4. スクロールイベントリスナー:

    • window.addEventListener('scroll', () => { ... }): ユーザーがページをスクロールしたときに実行される関数を設定します。
      • if (window.pageYOffset > 300) { ... } else { ... }: 現在スクロールされている位置(window.pageYOffset)が300ピクセルを超えているかチェックします。
        • 300ピクセル以上スクロールした場合:
          • backToTopButton.classList.add('show');: ボタンに'show'というクラスを追加します。CSSでこのクラスに表示に関するスタイルが定義されており、ボタンを表示させる効果があります。
        • 300ピクセル未満スクロールした場合:
          • backToTopButton.classList.remove('show');: ボタンから'show'クラスを削除します。これにより、ボタンが非表示になります。

まとめ

このコードは、以下の動作を実現します。

  • ページが読み込まれると、IDが'back-to-top'のボタンを探します。
  • ユーザーが300ピクセル以上スクロールすると、ボタンが表示されます。
  • ボタンをクリックすると、ページの一番上へスムーズに移動します。

補足:

  • CSS: ボタンの表示・非表示を切り替えるためには、CSSで'.show'クラスに表示に関するスタイルを定義する必要があります。
  • カスタマイズ: スクロールのしきい値(300ピクセル)や、ボタンの表示位置、デザインなどは、CSSやJavaScriptを調整することで変更できます。

このコードは、Webページのユーザビリティ向上に役立つ基本的なJavaScriptの例です。

10/18/2024

画像ボタンでページトップへ戻る固定リンクのJavaScriptとCSS


トップへ戻るボタンの画像を用意してサーバにアップして、ボタンを表示するページのHTMLに以下を挿入

<div id="back-to-top"></div>

JavaScriptの以下のコードを読み込む

  const backToTopButton = document.addEventListener('DOMContentLoaded', function () {
    const backToTopButton = document.getElementById('back-to-top');
    
    backToTopButton.addEventListener('click', () => {
        window.scrollTo({ top: 0, behavior: 'smooth' });
    });

    window.addEventListener('scroll', () => {
        if (window.pageYOffset > 300) {
            backToTopButton.classList.add('show');
        } else {
            backToTopButton.classList.remove('show');
        }
    });
});

back-to-topの部分はCSS

/* 画面トップへのボタン */
#back-to-top {
    position: fixed;
    right: 20px;
    bottom: 20px;
    width: 60px;
    height: 160px;
    background-image: url('https://tan-deki.com/img/up.png');
    background-size: cover;
    background-repeat: no-repeat;
    background-position: center;
    border: none;
    cursor: pointer;
    z-index: 100;
    opacity: 0; /* 初期状態は非表示 */
    pointer-events: none;
    transition: opacity 0.3s ease;
}

#back-to-top.show {
    opacity: 1;
    pointer-events: auto;
}
実際の動作⇒https://tan-deki.com/

10/16/2024

ウェブサイトのフッターにコピーライトは絶対に必要か?

コピーライト(著作権表示)は法律的に「必須」ではなくってよ、でもウェブサイトのフッターにコピーライトを表示することで、コンテンツの著作権がそのウェブサイトの所有者に帰属することを明確にし、無断使用や不正なコンテンツの流用を防ぐ効果があるので「推奨」

典型的な表示は以下

 ©2024 Company Name. All rights reserved.

でも頭の©は環境依存文字なので、このままコピペしても c になってしまったりするから、実体参照にするべき

&copy;2024 Company Name. All rights reserved.

という風にね

自分の場合はこんなで・・・

<div class="copyright">&copy; <?=date("Y")?> <a href="<?=$url?>" target="_blank">MomoiroOokamiRose</a>. All rights reserved.</div>

PHPを使って西暦年を取得したり、ファイルの行頭に定義してあるURLを取得してる


https://hachikuma.tan-deki.com/2017/06/index.html

9/24/2024

生まれてから2万日目はいつなのかをJavaScriptで計算するフォーム

  <h1>あなたの生年月日から生まれて2万日目をお教えします、生年月日を選択してください</h1>
  <form>
    <label>年:</label>
    <select id="year">
      <option value="">--年--</option>
      <?php
      $currentYear = date("Y");
      for ($i = 1950; $i <= $currentYear; $i++) {
        echo "<option value='$i'>$i</option>";
      }
      ?>
    </select>
    <label>月:</label>
    <select id="month">
      <option value="">--月--</option>
      <?php
      for ($i = 1; $i <= 12; $i++) {
        $month = str_pad($i, 2, "0", STR_PAD_LEFT);
        echo "<option value='$month'>$month</option>";
      }
      ?>
    </select>
    <label>日:</label>
    <select id="day">
      <option value="">--日--</option>
      <?php
      for ($i = 1; $i <= 31; $i++) {
        $day = str_pad($i, 2, "0", STR_PAD_LEFT);
        echo "<option value='$day'>$day</option>";
      }
      ?>
    </select>
    <button type="button" onclick="calculate()">送信</button>
  </form>
  <div id="result"></div>
  <script>
    function calculate() {
      var year = document.getElementById("year").value;
      var month = document.getElementById("month").value;
      var day = document.getElementById("day").value;
      if (year == "" || month == "" || day == "") {
        alert("年月日を選択してください。");
        return;
      }
      var birthday = new Date(year, month - 1, day);
      var targetDate = new Date(birthday.getTime() + (20000 * 86400000)); // 20000日後の日付を計算する
      var result = document.getElementById("result");
      result.innerHTML = "あなたが生まれてから2万日目は「" + targetDate.getFullYear() + "年" + (targetDate.getMonth() + 1) + "月" + targetDate.getDate() + "日」です!!";
    }
  </script>
↓実際のページ↓

9/23/2024

今日は生まれてから何日目か、誕生日から(カレンダーで選択して)JavaScriptで換算するフォーム

 


  <h1>今日は生まれてから何日目か?</h1>
  <form>
    <label for="birthday">生年月日:</label>
    <input type="date" id="birthday" name="birthday">
    <button type="button" onclick="calculateDays()">計算する</button>
  </form>
  <div id="result"></div>
  <script>
    function calculateDays() {
      const birthday = new Date(document.getElementById("birthday").value);
      const today = new Date();
      const differenceInTime = today.getTime() - birthday.getTime();
      const differenceInDays = Math.floor(differenceInTime / (1000 * 3600 * 24));
      document.getElementById("result").innerHTML = `今日は生まれてから ${differenceInDays} 日目です!`;
    }
  </script>
↓実際のページ↓

9/22/2024

今日は生まれてから何日目か、誕生日からJavaScriptで換算するフォーム

今日という日が、 自分が生まれてから何日目かを誕生日から換算


<form name="myF">
    <p>西暦<input type="text" size="4" name="myFy">年<input type="text" size="2" name="myFM">月<input type="text" size="2" name="myFd">日生まれ <input type="button" value="☆ボタン☆" onclick="mySet()"></p>
    <p><input type="text" size="45" name="myFmes"></p>
</form>
    function mySet(){
       myNow = new Date();
       myBirth = new Date( document.myF.myFy.value, document.myF.myFM.value-1, document.myF.myFd.value );
       myMsec = myNow.getTime() - myBirth.getTime();
       myDay = Math.floor( myMsec / (1000*60*60*24) );
       document.myF.myFmes.value = "今日は生まれてから " + (myDay+1) + "日目ですよ!";
    }
↓実際のページ↓

9/02/2024

「サイト引っ越しました」のお知らせはどう出す?

「ホームページ〇〇は引っ越しました」というお知らせを出したコトがある人、昔ならmetaタグに以下のように書いてたであろう、かくいう自分もそう
<meta http-equiv="refresh" content="30;URL=https://hachikuma.tan-deki.com/">

URLの前にある30は30秒って意味で、30秒待ってると自動的に新しいURLが開くけど、たいていはそこでじっと待たずにサイトに表示されてるリンクから開くよね




bodyタグにJavaScriptを書く方法もある
<body onload='setTimeout(function(){
    location.replace("https://hachikuma.tan-deki.com/");
}, 3000);'>
この場合は3秒後に自動的に新しいURLを開こうと思ったら3000(ミリ秒)だ

サーバによっては.htaccessで飛ばすのも可能だが、そうするとユーザは旧サイトのページは開かずに新しいサイトが開いてしまうので、新しいURLになってるとは気付きにくいと思われ

8/31/2024

HTMLもPHPもJavaScriptもAIに吐き出させたら楽ちんよ♪

 もう1つのサーバはいくらなんだろうか?


こっちはワリと最近契約してて、最初から月額千円と考えてたので予想通りの金額ではあるが、それにしても少しづつ値上がりしてるんだな・・・

加えて、ドメインが1つ5千円以上になったから5つもあったら年間で3万円近くも支払ってるコトになるが、ドメインこそ無駄だ

自分のは3つから1つに絞って、全然使ってなかったドメインを活かそう

一応、そのためのディレクトリはあって、.htaccessが置いてある

AddHandler php7.4-script .html

hetemlサーバの場合、これでhtmlファイル内でPHPが使えるのだ 

ChatGPTにトップページのHTMLを吐き出してもらおう
「新しくサイトを作成するのでトップページのHTMLをお願いします」

<!DOCTYPE html>
<html lang="ja">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>サイトのタイトル</title>
    <link rel="stylesheet" href="styles.css">
</head>

<body>
    <header>
        <nav>
            <ul>
                <li><a href="#">ホーム</a></li>
                <li><a href="#">サービス</a></li>
                <li><a href="#">お問い合わせ</a></li>
                <li><a href="#">会社概要</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <section id="hero">
            <h1>ようこそ、私たちのウェブサイトへ!</h1>
            <p>ここにサイトのメインメッセージやキャッチコピーが入ります。</p>
            <a href="#" class="btn">詳しくはこちら</a>
        </section>

        <section id="services">
            <h2>サービス内容</h2>
            <div class="service-item">
                <h3>サービス 1</h3>
                <p>サービス1の説明文がここに入ります。</p>
            </div>
            <div class="service-item">
                <h3>サービス 2</h3>
                <p>サービス2の説明文がここに入ります。</p>
            </div>
            <div class="service-item">
                <h3>サービス 3</h3>
                <p>サービス3の説明文がここに入ります。</p>
            </div>
        </section>
    </main>

    <footer>
        <p>&copy; 2024 サイトの名前. All rights reserved.</p>
    </footer>
</body>

</html>
このままアップしてみた


これを自分用に書き換えて、PHPが使えるのか実験


年齢は誕生日を迎える度に勝手に書き換えてくれるように以下PHP
<?php echo floor((date('Ymd') - 19680820)/10000);?>
ちなみにその下の生まれてから何日目かってのはJavaScriptだが
こういうのは今はChatGPTが吐き出してくれるから楽だわ♪

8/30/2024

某レンタルサーバとの決別

サーバ代が月額300円だったから始めたはずが、気が付いたら6カ月で5,610円も払ってる?!


しかも半年で3千円以上になったのは2019年なので、この数年でも倍近くになってるが、最初からしたら3倍以上の金額になってる・・・酷い

サーバ2つあるから、解約しようと決意!

9月中に解約だ!! 

まずは中身を全部ダウンロードしてしまい、紐づいてるドメインも解約だ
そしてもう一つのサーバにアップし直すかどうかは、吟味してアップし直す際にPHP依存な作りはやめて、JavaScriptで代用できそうな部分は差し替えよう

もうサーバのPHPのVer.のために移行するのとか疲れたわ・・・