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

【Blogger】コメント欄をカスタマイズ!コメントを新しい順番で表示させ、「コメントを投稿」の表示位置を移動してみた


別ブログでコメントの表示方法などに不満を感じてアレンジしたため記載。
「コメントの場所」は「埋め込み」で、他の形式の場合機能するかは不明です。
また、jqueryを使用するので、導入がまだの方は以下のコードを<head> ~ </head>の中に記述してください。

jquery
<script src='https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js'/>


やったことを簡単にまとめると、コメントはlist形式で出力されているため、flexの下から順に表示させるcolumn-reverseを用いてコメントを新しい順番で表示させる。
また、「コメントを投稿」の表示位置をコメント部分の一番上に移動させました。

Bloggerのコメントを新しい順番で表示させる

Bloggerの場合、コメント部分のソースコードは以下のようになっています。
<ol id="top-ra">
<li class="comment" id="xxxxx"></li>
<li class="comment" id="xxxxx"></li>
<li class="comment" id="xxxxx"></li>
</ol>


CSSの方でこのtop-raにflexのcolumn-reverseを付与すれば、下から順に表示されるのでコメントが新しい順番で表示されるようになります。

こんな感じ
#top-ra { display: -webkit-flex;
display: flex;
-webkit-flex-direction: column-reverse !important;
flex-direction: column-reverse !important;}


デフォルトの古い順番で表示させる場合はこちら
#top-ra { display: -webkit-flex;
display: flex;
-webkit-flex-direction: column !important;
flex-direction: column !important;}


Bloggerの「コメントを投稿」の表示位置を移動する

「コメントを投稿」部分はid="top-ce"が付与されているので、これをjqueryを用いて移動させます。
自分はコメントの始まるid="top-ra"の前に移動させたので、こういったコードを追加しました。
<script>
$(function() {
$(&quot;#top-ce&quot;).insertBefore(&quot;#top-ra&quot;);
});
</script>
insertBeforeでid="top-ra"の前に移動させています。

以上です。
あまり使用頻度は高くないかもしれませんが、参考になる方がいれば嬉しいです。

【JavaScript/jQuery】シンプルな方法でページが完全に読み込まれるまで要素を表示しない代わりにローディング画像を表示してみる

デザインの乱れ等の理由によって、ページが完全に読み込まれるまで要素を非表示にしたい場合は様々な方法がありますが、今回はシンプルな方法でこれを実現してみたいと思います。

方法は至って簡単で、ページが完全に読み込まれるまで表示したくない要素にdisplay:noneを付与し、ローディング画像など最初から表示させたい要素だけ表示
ページが完全に読み込まれたら、/jQueryのshowメソッドで非表示にしていた要素を表示させ、ローディング画像などをhideで非表示にするといった方法です。

HTML
<!--ページが完全に読み込まれるまで表示する要素-->
<div class="photo1"><img src ="画像URL"/></div>

<!--ページが完全に読み込まれるまで表示したくない要素-->
<div class="body_test">要素</div>
CSS
.photo1 img{display:block;margin:0 auto;/*画像を画面の中央に*/}
.body_test {display:block;/*ページが完全に読み込まれるまで表示したくない要素を非表示に*/}
このままだとphoto1の要素が表示され、body_testの要素が表示されないだけなので、ページが完全に読み込まれた後に動作するjQueryを書き加えます。

ページが完全に読み込まれた後の処理を明記したい場合は主に以下の2つの書き方があります。
window.onload = function () {
/*処理*/
};
$(window).on('load', function() {
/*処理*/
});
今回は最初のメソッドを使用し、以下のようにshowとhideメソッドを加えます。
<script>
window.onload = function () {
$('.photo1').hide();
$('.body_test').show();
};
</script>
これでページが完全に読み込まれると、photo1がhideで非表示となり、body_testがshowで表示されるようになりました。

要素が表示されるときにふわっと表示されようなアニメーション効果を与えたい場合はshowをfadeInに書き換え、()内に完全に表示させるまでのミリ秒単位を指定しましょう(スライド表示させた場合はslideDown)。

(例)
<script>
window.onload = function () {
$('.photo1').hide();
$('.body_test').fadeIn(1000);
};
</script>


ページが読み込まれるまでに表示したい画像はお好みの画像にして下さい。
ローディング画面であれば、自由にカラーを設定できる以下のサイトを利用するのがオススメです。
以上です。
シンプルな方法なのでコピペで簡単に導入できると思います。

【JavaScript】簡単にクリックで要素の表示・非表示を切り替える方法hide、show、toggle

初心者でもコピペだけで導入できるJavaScript第二弾です。

第一弾はこちら
【JavaScript】初心者でも簡単!CSSよりも便利に使えるJavaScriptコード 2選!
https://bloggercustoman.blogspot.com/2019/08/cssjavascript-2.html

jQueryを導入していない方はheader要素内に以下のコードを記述しておいて下さい。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>


hide、show、toggleを使い分けてクリックで要素の表示・非表示を切り替えよう

ベースとなるのは以下のコードです。
<script>
  
$('#ID名').click(function() {
       
/*ここに動作を記述*/

    })
    
</script>
ここから#ID名がクリックされた場合の動作を記述していくことになります。
  • hide = 要素を非表示にする
  • show = 要素を表示する
  • toggle = 要素の表示・非表示を交互に繰り返す

hide、show

hide

それでは、サンプルです。

HTML
<span id="bana_t1">バナナ</span>
<span id="bana_t2">リンゴ</span>
JavaScript
<script>
  
$('#bana_t1').click(function() {
$('#bana_t2').hide();
 })
    
</script>
ID属性bana_t1の「バナナ」をクリックすると、ID属性bana_t2の「リンゴ」が非表示になるコードです。

サンプル
バナナ リンゴ


「バナナ」をクリックすると「リンゴ」が消えましたよね?
CSSのdisplay:none;と同様の効果があります。
このままでは消えたままで出てきません。
showで出してみましょう。

show

showで要素を表示させるには、その要素を隠しておく必要があるので、予め表示したい要素をdisplay:none;で隠しておきましょう。

HTML
<span id="bana_t3">バナナ</span>
<span id="bana_t4" style="display:none;">リンゴ</span>
JavaScript
<script>
  
$('#bana_t3').click(function() {
$('#bana_t4').show();
 })
    
</script>
hideshowに変わっただけです。
ID属性bana_t3の「バナナ」をクリックすると、display:none;を指定したID属性bana_t4の「リンゴ」が表示されるコード。

サンプル
バナナ


どうでしょう。
今度は「バナナ」をクリックすると「リンゴ」が出てきましたよね。
しかし、今度は出てきたままで消えません。
そこで、1クリックごとに交互に表示・非表示を繰り返すtoggleを使用してみましょう。

toggle

toggleは、1クリック目が非表示であるのなら、2回目は以降は表示・非表示を繰り返します。
予めdisplay:none;で隠しておいたものであるなら、1クリック目が表示となるので、2回目は以降は非表示・表示を繰り返すことになります。

HTML
<span id="bana_t5">バナナ</span>
<span id="bana_t6">リンゴ</span>
<span id="bana_t7" style="display:none;">メロン</span>
JavaScript
<script>
  
$('#bana_t5').click(function() {
$('#bana_t6').toggle();
$('#bana_t7').toggle();
 })
    
</script>

サンプル
バナナ リンゴ


IDしか記述していない「リンゴ」は最初から表示され、1クリック目で非表示となった一方で、display:none;を記述してある「メロン」は逆に1クリック目で表示されていますよね。
toggleは何度クリックしても交互に動作を繰り返すのが特徴です。


おまけ

全てに共通することですが、.hide();の()の中に要素を表示・非表示するまでのミリ秒数(1000 = 1秒)を指定することが可能で、ちょっとしたアニメーション効果を演出できます。

HTML
<div id="bana_t11" style="padding:20px;background-color:#ff8080;">バナナ</div>
<div id="bana_t12" style="padding:20px;background-color:#226b80;">リンゴ</div>
JavaScript
<script>
  
$('#bana_t11').click(function() {
$('#bana_t12').toggle(1000);
 })
    
</script>

サンプル
バナナ
リンゴ


toggleとしか記述していないため、デフォルトの横方向のアニメーションが適用されていますが、toggleには他にもメソッドが存在します。
  • slideToggle = 縦方向のアニメーション
  • fadeToggle = フェードイン・アウトのようなアニメーション
toggleの箇所を上記のどちらかに書き換えるだけ。Tを大文字にすることが必須!

サンプル(slideToggle
バナナ
リンゴ

サンプル(fadeToggle
バナナ
リンゴ


toggleClassというメソッドもあり、新たにclass属性を追加、削除が可能です。


また、今回はIDを指定しましたが、IDではなく、class名を指定したいときは、#を.に書き換えてください。

<script>
  
$('.bana_t5').click(function() {
$('.bana_t6').toggle();
$('.bana_t7').toggle();
 })
    
</script>


第二弾は以上です。
簡単に応用できるJavaScriptなので、様々な形で使用してみてください。

【JavaScript】初心者でも簡単!CSSよりも便利に使えるJavaScriptコード 2選!

サイトのデザインはHTML、CSSをメインにする方が多いと思います。
JavaScriptは見慣れないコードが並ぶため、難しいように思えますが、CSSよりも便利に使えて、痒いところに手が届く”サイトに動き”を与えるものです。
もちろん、複雑な動作をさせるためには複雑なコードを書く必要がありますが、今回は初心者でもコピペだけで実装できる簡単なJavaScriptコードをご紹介します。

基本編 その1


本文に行く前に、CSSとJavaScriptの違いを確認しておきましょう。

CSS

  • class、id属性を与えれば、一箇所書き換えるだけで、文字、背景、高さなど、様々なデザインを装飾できる。
  • JavaScriptよりも処理速度が早い。

JavaScript

  • スクロールしたときなど条件付きでサイトに動作を与えられる。
  • class、id属性を与えたHTML、リンクを丸ごと書き換えるなど、CSSよりも幅広く、動的に書き換えられる。
  • JavaScriptを切っている環境では動作しない。


基本編 その2

jQuery

jQueryはJavaScriptのライブラリで、初心者でも簡単にコードを書いて、動的に動かせます。
実装の条件は、本体をダンロードする方法もありますが、CDNを経由する方法はより簡単で、HTMLのheader要素内に以下のコードを書くだけ。
今後、使用するので導入しておきましょう。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
※最新版はjQuery公式サイトでご確認ください。

JavaScriptの書き方

JavaScriptの記述場所はheader要素内、body要素内など特に指定されていませんが(個人的には</body>タグの直前を推薦します)、<script> ~ </script>で囲うことは必須です。
<script> 

ここに記述

</script>


また、本記事ではid属性を取得するgetElementById("id名")を使用しますが、class属性を取得したい場合はgetElementById("id名")の部分をgetElementsByClassName("クラス名")querySelector(".クラス名")に書き換えて実装してください。
※querySelectorの場合はクラス名の前に.を忘れずに!

(サンプル)
var banana = document.getElementById("id名");
var banana = document.getElementsByClassName("クラス名");
var banana = document.querySelector(".クラス名");


varでbananaという変数名を宣言していますが、今回はあくまでもコピペで実装できる初心者向けの記事なので、専門的な知識は他ブログにお任せして、「データに固有の名前を与えている」程度と思っておいて下さい。
簡単に言うと、要素・属性を取得して、そこに動きを与えるといったことが基本的な流れです。

おまたせしました。
以下は本文です!


1.簡単に要素の中身を入れ替えてみよう!

一度、書いたHTMLを書き換えたくなるときってありますよね。
JavaScriptのinnerHTMLで書き換えてみましょう。
<p id="banana_1">バナナのブログ</p>
上記のid属性banana_1の中身「バナナのブログ」をJavaScriptで書き換えるとこうなります。
<script>
var banana = document.getElementById("banana_1");
banana.innerHTML = "<span style='color:#ff502f;font-size:20px;'>リニューアル</span>";
</script>
サンプル
バナナのブログ

↓↓↓↓

バナナのブログ



innerHTMLは要素の中身を壊して新たな要素を加えます。
CSSと違うところは、HTMLがそのまま反映されることで、CSSよりも楽に要素の中身を入れ替えられますし、様々な応用が可能ですね。

他にも、innerText、textContentでもほぼ同様の動作が可能ですが、使用できないブラウザなどがあるのでinnerHTMLがオススメです。

2.CSSの疑似要素before、afterをJavaScriptで再現してみよう!


※jQueryを使います。
導入がまだの方は、上記の基本編 その2を参照。

before、after、prepend、append

基本的なコードは以下の通り。
<script>
$('#指定したい要素のid名').($('#追加したい要素を持つid名'));
</script>
HTMLを代入する場合の表記
<script>
$('#指定したい要素のid名').('ここに追加したいHTML');
</script>

このの部分にbefore、after、prepend、appendを記述すると、それぞれのメソッドで動作します。
  • before = 指定の要素の前に新要素を追加
  • after = 指定の要素の後に新要素を追加
  • prepend = 指定の要素の子要素の前に新要素を追加
  • append = 指定の要素の子要素の後に新要素を追加


サンプル

before

HTML
<div id="ban_1">バナナです</div>


<div id="ban_22">わたしは、</div>
JavaScript
<script>
$('#ban_1').before($('#ban_22'));
</script>

結果

バナナです
わたしは、


after

HTML
<div id="ban_a1">バナナですか?</div>


<div id="ban_a22">あなたは、</div>
JavaScript
<script>
$('#ban_a22').after($('#ban_a1'));
</script>

結果

バナナですか?
あなたは、


テキストを代入する形なら、CSSの疑似要素before、afterと同様に使えますね。
JavaScriptなら簡単に属性に別の属性を追加できるので、デザインの幅が広がるのではないでしょうか。
※prepend、appendのサンプルは省略します。

replaceWith、replaceAll、appendTo、prependTo、insertAfter、insertBefore

replaceWith、replaceAllには細かい違いはありますが、基本的にはinnerHTMLと同様に要素を置き換えるメソッドです。

  • appendTo = 指定の要素の子要素の最後に別の要素を移動
  • prependTo = 指定の要素の子要素の先頭に別の要素を移動
  • insertAfter = 指定の要素の最後に別の要素を移動
  • insertBefore = 指定の要素の最初に別の要素を移動


jQueryなので、コードの書き方は上記のbefore、after、prepend、appendと同様です。
色々試してみると、CSSでは思いつかなかったアイディアが浮かんでサイトを一歩上のレベルに引き上げることができると思います。
JavaScriptには他にもまだ便利なコードはありますが、ここまでで長い記事になってしまったので、またの機会にご紹介します。
長文にお付き合い下さって、ありがとうございました。