Skip to content

Conversation

@takerucam
Copy link
Contributor

html, css, js のファイルを追加しました。

README を見ながら進めてもらい不備がないかのチェックをしていただきたいです。


```css
.nav {
animation: fadeInUp 0.5s cubic-bezier(0.4, 0, 0.2, 1);
Copy link

@Shion-Serizawa Shion-Serizawa Jan 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge
cubic-bezierが初見なので、解説を追加すると良さそう。

FYI
https://cubic-bezier.com/#.4,0,.2,1 でベジェ曲線の可視化をしてくれるらしいです。(claude code先輩が伝えてきた)

資料下部に書いてありましたね 🙇
アラート記法とかで案内しても良いかもです。

https://qiita.com/Yarakashi_Kikohshi/items/e6802e08921388d8c6e9

Comment on lines +646 to +649
## 🎨 cubic-bezier() について

`cubic-bezier()` はアニメーションのイージング(加速・減速)を制御する関数です。

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

3 次ベジェ曲線を使用してスムーズな遷移を作成します。
MDNより、↑の説明を追加してもよいかも?ベジエ曲線というワードを入れたほうが「イメージしやすいかも?」と思いました。

https://developer.mozilla.org/ja/docs/Web/CSS/Reference/Values/easing-function/cubic-bezier


## 📚 学習ステップ

### Step 1: 基本的な @keyframes アニメーション

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝
Step1では、動きを定義するだけ実際には動かない。

  • ここの授業するときの、説明の仕方は考えておくと良さそう。(というより、シミュレーションみたいなイメージ)

Comment on lines +183 to +185
.nav-menu a::after {
transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝
ホーバー時に下線を表示するCSSがstyle.cssにある。

  • ここでは、それを制御した形。

Comment on lines +190 to +210
#### 2-4. テーマ切替ボタンのホバー

```css
.theme-toggle {
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

.theme-toggle:hover {
background: var(--color-accent);
border-color: var(--color-accent);
transform: rotate(180deg);
}

.theme-toggle:hover svg {
stroke: white;
}

.theme-toggle svg {
transition: stroke 0.15s cubic-bezier(0.4, 0, 0.2, 1);
}
```

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • 冒頭でallを指定→全部の要素にtransitonがつくはず。
    • svg側はtransitonを上書きしているけど。
  • strokeは svgの線の色の指定をするときに使うらしい。
  • ※時間があったら、ここでsvg側の秒数を変える遊びをしてもいいかも?(この要素にこだわっているわけではないけど)

.theme-toggle:hover {
background: var(--color-accent);
border-color: var(--color-accent);
transform: rotate(180deg);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝
rotateはここが初登場

Comment on lines +212 to +214
**確認方法:** 右上のテーマ切替ボタンにマウスをホバーすると回転します。

### Step 3: ヒーローセクションのアニメーション

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge
ここにStep2-5の話が無さそう。

  • @media とかで詰まるかも?
    • 📝 active が押したときに動作するやつ
  • スマホ用に「開発者ツール」で縮める説明が必要なので、スキップでも良さそう。

@Shion-Serizawa
Copy link

※ 📝 には、自分が瞬間的には理解できなかったものを書き綴っています🙏

Comment on lines +220 to +229
```css
.typing-text {
overflow: hidden;
}

.typing-text .title-line {
display: block;
opacity: 0;
animation: typing-reveal 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • 詰まった所
    • overflow:hidden はアニメーションとは関係なさそう
    • forwardsが初見
    • nth-child は番号がついているので、なんとなく察した。
      • →みたいな予想を毎回してもらうと良いかも?(時間があれば)

claude解説

1. 親要素(.typing-text)
.typing-text {
  overflow: hidden;  /* はみ出た部分を隠す */
}
2. 各行の基本設定(.title-line)
.typing-text .title-line {
  display: block;     /* ブロック要素として表示 */
  opacity: 0;         /* 初期状態は透明(見えない) */
  animation: typing-reveal 0.8s cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
animation の構成:
typing-reveal: アニメーション名([animations.css:46-56](vscode-webview://0hav65pjflksd562ul60i5bn3odr6l8ekfn180ircqimktc0f2tj/2025/css-animation/animations.css#L46-L56)で定義)
0.8s: 0.8秒かけて実行
cubic-bezier(0.4, 0, 0.2, 1): イージング関数
forwards: アニメーション終了後、最終状態を維持

}

.typing-text .title-line {
display: block;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

  • display: block;がstyle.cssと重複していそうです🙏

}

.scroll-arrow {
animation: bounce 2s ease-in-out infinite;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝
ease-in-out infiniteが初見

Comment on lines +291 to +302
.btn::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 0;
height: 0;
border-radius: 50%;
background: rgba(255, 255, 255, 0.2);
transform: translate(-50%, -50%);
transition: width 0.6s, height 0.6s;
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • (親起点で)absolute
  • そのうえで位置指定(中心に配置)
  • border-radius: 50%で丸なのはわかってた。
  • transform: translate(-50%, -50%);で要素自体を真ん中に持ってくる (なるほど)
  • active::beforeと比較すると前段階の::beforeに設置する。(よく考えたら他と一緒だけど、疑似要素がついているから一瞬混乱した)

Comment on lines +10 to +11
--color-accent: #3b82f6;
--color-accent-hover: #2563eb;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

  • 6-2. フッターリンクのホバー で a:hover→.footer-links a:hover に上書きするわけですが、色が近くて違いがわかりにくいので、(デザイン性は失われるかもですが🙈)違う色をチョイスしても良さそうです🙏

#### 6-3. リンクのアンダーラインアニメーション

```css
a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • 長いCSS👀
    • aタグにこの5つのクラスがある場合は無視するってやつ。

まぁ、質問来たらでいいかな。。。

Comment on lines +254 to +271
a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo) {
/* position: relative; */
}

a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo)::after {
/* content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: currentColor;
transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); */
}

a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo):hover::after {
/* width: 100%; */
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo) {
/* position: relative; */
}
a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo)::after {
/* content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: currentColor;
transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1); */
}
a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo):hover::after {
/* width: 100%; */
}
a:not(.btn, .card-link-wrapper, .social-link, .social-link-large, .nav-logo) {
position: relative;
}
a:not(.btn, .card-link-wrapper, .social-link, .social-link-large, .nav-logo)::after {
content: '';
position: absolute;
bottom: -2px;
left: 0;
width: 0;
height: 1px;
background: currentColor;
transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
a:not(.btn, .card-link-wrapper, .social-link, .social-link-large, .nav-logo):hover::after {
width: 100%;
}

badge
短縮記法も使えそう
※safari君も動くのかは未確認

/* position: relative; */
}

a:not(.btn):not(.card-link-wrapper):not(.social-link):not(.social-link-large):not(.nav-logo)::after {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • このタイミングで「aタグ」と「a:after」が別要素なので、positonがそれぞれ違くても良いということを理解した。


### Step 7: スクロールアニメーション

`.fade-in-on-scroll``.slide-in-left-on-scroll``.slide-in-right-on-scroll``.scale-in-on-scroll` クラスは、

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge
.fade-in-on-scroll以外は、現状のHTMLで不使用な予感。

  • README.md上で案内しても良さそう。
  • もしくは、「他のアニメーションを適用してみよう!」の時間?

Comment on lines +361 to +369
/* コメントを外すと、アバター画像にマウスホバーしたときに拡大・回転します */
.avatar-large,
.author-avatar {
/* transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1); */
}

.avatar-large:hover {
/* transform: scale(1.05) rotate(5deg); */
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

  • 現状だと.author-avatar側にはアニメーションがつかなそう
  • アバター画像が、グラデーションがかかった◯なので、5degだと何もわからなそう。
    • 思い切って、180degとか?
    • ※変更時はドキュメント側に「確認方法: about.html のプロフィール画像にマウスをホバーすると、拡大して少し回転します。」という表記があることに注意。


.skill-item:nth-child(1) .skill-progress {
--progress: 95%;
/* animation-delay: 0.1s; */

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • animation-delayで0.1sずつずらす、というパワープレイ 😂

Comment on lines +453 to +473
.timeline-marker {
/* animation: scale-pulse 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); */
}

.timeline-article-marker {
/* animation: scale-pulse 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55); */
}

@keyframes scale-pulse {
/* 0% {
transform: scale(0);
}
50% {
transform: scale(1.2);
}
100% {
transform: scale(1);
} */
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

  • 0.6sだと、10-1とドンピシャで被っているので効果が見れなそう。
    • ↓あらかじめ、この位置にしておいて、リロードすると見れる。
スクリーンショット 2026-01-21 14 13 17


/* 11-1. スクロールプログレスバー */
/* コメントを外すと、ページをスクロールしたときに進捗バーが伸びます */
@supports (animation-timeline: scroll()) {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝

  • @supports (animation-timeline: scroll()) はブラウザが引数のやつを使用可能なときだけ、適応するというやつらしい。

window.categoryFilter = new CategoryFilter();

new ScrollAnimationObserver();
new ScrollProgress();

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge
11-1. スクロールプログレスバーに関して、JS側でも実装されているため、CSSアニメーションがあるか否かに関わらず、動作していそうです。


```css
@supports (animation-timeline: scroll()) {
/* 背景画像:ゆっくり動く(遠くにあるように見える) */

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

badge

  • (もとがグラデーションだからか、)背景画像に対する効果はよくわからず。。。
    • 「そこも使えるよ!」という意図にはなるので、消すほどでもなさそう。

Comment on lines +550 to +615
@supports (animation-timeline: scroll()) {
/* 背景画像:ゆっくり動く(遠くにあるように見える) */
.parallax-image {
animation: parallax-bg linear;
animation-timeline: scroll(root);
animation-range: 0 600px;
}

@keyframes parallax-bg {
to {
transform: translateY(100px);
}
}

/* 装飾円1:速く動く(手前にあるように見える) */
.parallax-circle-1 {
animation: parallax-fast linear;
animation-timeline: scroll(root);
animation-range: 0 600px;
}

@keyframes parallax-fast {
to {
transform: translateY(300px);
}
}

/* 装飾円2:中くらいの速度で動く */
.parallax-circle-2 {
animation: parallax-medium linear;
animation-timeline: scroll(root);
animation-range: 0 600px;
}

@keyframes parallax-medium {
to {
transform: translateY(200px);
}
}

/* 装飾円3:とても速く動く(最も手前にあるように見える) */
.parallax-circle-3 {
animation: parallax-very-fast linear;
animation-timeline: scroll(root);
animation-range: 0 600px;
}

@keyframes parallax-very-fast {
to {
transform: translateY(400px);
}
}

/* 四角形:回転しながら動く */
.parallax-square {
animation: parallax-rotate linear;
animation-timeline: scroll(root);
animation-range: 0 600px;
}

@keyframes parallax-rotate {
to {
transform: translateY(250px) rotate(225deg);
}
}
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝
個人的には、この部分が視覚効果として感動しました!

@seri-jig
Copy link

@takerucam
リポジトリ本体のREADMEの更新をお願いします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants