ニュースティッカー ガジェット
こういう新着記事等のお知らせをする奴
なんかいいな、、、と思いつつ
ウチのブログには必要はないか、、、
あっ、そうだ
くだらない呟きに使ってみよう
Xで呟くのも恥ずかしい、馬鹿馬鹿しい
どうでもいい事をココで呟こう
人様の眼を汚す事も気分を悪くさせる事もないだろう
ブログ見に来てこんなの気にする人いないだろうから
完全に個人的な遊び
Blogger・F-light用ニュースティッカー
いつものようにふじやんさんのをパク、、、参考にさせて頂きました
まずは、ここを参照してください
コチラに実装方法、コードがアップされています
で、これを呟きだけに使いたいのでリンク機能が要らないわけですよ
自分で少し要らない部分を削除してみるも、、、
わからん。。。
ChatGPTに聞いたら教えてくれました
コード
アップしているコードはリンク機能を省いた呟き専用です
<!-- ニュースティッカー -->
<div class='ticker-wrap'>
<div class='ticker-head'>Mutter</div>
<div class='ticker'>
<ul>
<li class='ticker-item'><a href='#' style='color:inherit;text-decoration:none;cursor:text'><span class='ticker-title'>テキスト</span></a></li>
<li class='ticker-item'><a href='#' style='color:inherit;text-decoration:none;cursor:text'><span class='ticker-title'>テキスト</span></a></li>
<li class='ticker-item'><a href='#' style='color:inherit;text-decoration:none;cursor:text'><span class='ticker-title'>テキスト</span></a></li>
</ul>
</div>
</div>
<script>/*<![CDATA[*/
/* News Ticker gadget powered by IB-Note via: https://itblogger-note.blogspot.com/2022/07/news-ticker.html */
(function(window, document) {
const animTime = 5000;
const speed = 100;
const limit = 0;
let animId;
let isRunning = false;
const ticker = document.querySelector('.ticker');
loadTicker();
function loadTicker() {
tickerAnim();
animId = setInterval(tickerAnim, animTime);
isRunning = true;
}
// アニメーション処理
function tickerAnim() {
const items = ticker.querySelectorAll('.ticker-item');
const running = ticker.querySelector('.run');
let idx, link, first, next;
if (!running) { // 実行中の要素がない場合(初回のみ)
first = items[0];
link = first.querySelector('a');
first.classList.add('fadeInDown', 'run');
first.style.zIndex = 1;
setTimeout(textMove, 1000, link); // 第3引数に引数linkを指定。こうしないと即実行されてしまうので注意。
} else {
for (let i = 0; i < items.length; i++) {
if (items[i] == running) {
idx = i; // 実行中要素のインデックスを取得
break;
}
}
next = items[(idx + 1) % items.length];
running.classList.replace('fadeInDown', 'fadeOutDown');
setTimeout(() => {
running.classList.remove('fadeOutDown', 'run');
running.style.zIndex = 0;
link = running.querySelector('a');
link.style.transform = 'none';
next.classList.add('fadeInDown', 'run');
next.style.zIndex = 1;
link = next.querySelector('a');
setTimeout(textMove, 1000, link);
}, 300);
}
}
// テキスト移動処理
function textMove(elm) {
const move = elm.parentNode.clientWidth - elm.clientWidth;
if (move < 0) {
elm.style.transform = 'translateX(' + move + 'px)';
elm.style.transitionDuration = Math.abs(move) / speed + 's';
}
}
// ウィンドウサイズ変更時
window.addEventListener('resize', () => {
const windowWidth = window.innerWidth;
if (windowWidth <= limit) {
ticker.style.display = 'none';
clearInterval(animId);
isRunning = false;
} else {
if (!isRunning) {
ticker.style.display = 'block';
animId = setInterval(tickerAnim, animTime);
isRunning = true;
}
}
});
})(window, document);
/*]]>*/</script>
<style>/*<![CDATA[*/
.ticker-wrap {
display: flex;
max-width: 97%;
width: 800px;/*横幅一杯に表示させる場合は 1155px*/
background: var(--brand);
padding: 4px;
margin: 2em auto 0;
}
.ticker-head {
width: 4.5em;
font-family: verdana;
font-style: italic;
color: var(--brand-font); /*F-light v1.29 以降は var(--brand-font) に置き換える*/
line-height: 30px;
padding: 0 4px;
text-align: center;
}
.ticker {
width: 100%;
height: 30px;
font-size: 15px;
background: var(--light-bg);
line-height: 30px;
padding: 0 6px;
overflow: hidden;
}
.ticker ul {
position: relative;
list-style: none;
height: 100%;
padding: 0;
margin: 0;
}
.ticker-item {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
padding-right: 0;
opacity: 0;
}
.ticker-item a {
display: inline-block;
width: auto;
color: var(--color);
white-space: nowrap;
text-decoration: none;
transition: transform 5s linear;
}
.ticker-item a:hover {
color: var(--link);
}
.ticker-date {
font-weight: bold;
color: var(--link);
}
.ticker-title {
margin-left: 10px;
}
.ticker-new {
color: var(--red-color);
font-weight: bold;
margin-left: 10px;
animation: blink 1s ease-in-out infinite alternate;
}
.fadeInDown {
opacity: 0;
}
.fadeInDown.run {
animation: fadeInDown 0.3s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
}
.fadeOutDown {
opacity: 1;
}
.fadeOutDown.run {
animation: fadeOutDown 0.3s cubic-bezier(0.645, 0.045, 0.355, 1) forwards;
}
@keyframes fadeInDown {
0% {
opacity: 0;
transform: translateY(-30px);
}
100% {
opacity: 1;
transform: translateY(0);
}
}
@keyframes fadeOutDown {
0% {
opacity: 1;
transform: translateY(0);
}
100% {
opacity: 0;
transform: translateY(30px);
}
}
@keyframes blink {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0;
}
}
/*]]>*/</style>
最初に公開したコードにエラーありました
ふじやんさんがチェックしてくれて修正コードを教えてくれました
もし、この記事公開早々にコードをコピーした方が居たら現在公開しているコードに変えてください
m(__)m
ChatGPTに聞いて、そのまま動いてますので問題はないと思いますが、、、
要らない部分、もっと削れる部分があるかもしれません
しかし素人には、そんな難しい事は解りませんのでご了承ください
コード貼り付け時の注意点
で
呟く時は
『テキスト』を書き換えればOKです
長文書いても文章が流れてきて全部見れますよ
長文書いても文章が流れてきて全部見れますよ
誰も真似しそうにないカスタマイズですが良かったらどうぞ(^^;
その他のカスタマイズはコチラ
コメントを投稿