質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

234閲覧

文字列を同じ位置で交互に変えていく動作を実現したい

nekko_neko

総合スコア21

CSS3

CSS(Cascading Style Sheet)の第3版です。CSS3と略されることが多いです。色やデザインを柔軟に変更することが可能になります。

SCSS

SCSSは、SassのCSSメタ言語です。Webページのスタイルを指定するCSSを効率的に記述することができます。ネストと呼ばれる入れ子構造で記述するため、CSSの全体の記述量を減らせる点が特徴です。さらに変数も利用できるため、変更や修正の際に少ない作業量で対応することもできます。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2023/06/10 15:16

cssのkeyfremesを利用して、文字が交互に変わっていくものを作りました。

html

1<div class="change"> 2 <span class="word1">空気</span><span class="word2"></span>を変える 3</div>

scss

1 2 @keyframes fade_out { 3 0% { opacity: 1; } 4 50% { opacity: 0; } 5 100% { opacity : 1;} 6 } 7 8 @keyframes fade_in { 9 0% { opacity: 0; } 10 50% { opacity: 1; } 11 100% { opacity : 0;} 12 } 13 14.change { 15 font-size: 25px; 16 17 .word1 { 18 display: inline-block; 19 position: relative ; 20 font-size: 30px; 21 animation: fade_out 10s ease-in-out infinite normal forwards ; 22 } 23 24 .word2 { 25 display: inline-block; 26 position: absolute; 27 font-size: 40px; 28 top: 50%; 29 left : 20% ; 30 text-align: center; 31 transform: translateY(-50%); 32 -webkit-transform: translateY(-50%); 33 -ms-transform: translateY(-50%); 34 animation: fade_in 10s ease-in-out infinite normal forwards ; 35 } 36 }

問題点として、word1とword2が同じ位置にならないことです。
現在word2の位置を 「left : 20%」という数値でword1の中央に重ねようとしてますが、出来ていないです。
pxで指定しても良いですが、フォントサイズも変えるかもしれないし、%だと画面のサイズが変わればどうしてもズレてしまいます。

どうやったらword1とword2が同じ位置で重ねられるでしょうか?

また、この書き方以外にも別のやり方があるとか、javascriptで実現できるとかあれば教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

兄弟要素であるword1とword2において、word2をposition: absolute;で中央に配置しようとすると、word1の幅に応じて目視で調整する必要がでてきます。

そこで、word2 を word1 の子要素にすれば、word1 を基準に配置できますので、自動で中央配置にできます。
中央配置はflexレイアウト(あるいはgridレイアウト)を使うとシンプルにできます。

フェイドアニメーションは、opacityで透明度を変更すると子要素まで影響しますので、rgbaで文字色の透明度を変更するといいでしょう。

html

1<div class="change"> 2 <span class="word1">空気<span class="word2"></span></span>を変える 3</div>

scss

1@keyframes fade_in_out { 2 0% { 3 color: rgba(0,0,0,0); 4 } 5 50% { 6 color: rgba(0,0,0,1); 7 } 8 100% { 9 color: rgba(0,0,0,0); 10 } 11} 12 13.change { 14 font-size: 25px; 15 16 .word1 { 17 display: inline-flex; 18 justify-content: center; 19 align-items: center; 20 position: relative; 21 font-size: 30px; 22 animation: fade_in_out 10s -5s ease-in-out infinite normal forwards; 23 } 24 25 .word2 { 26 font-size: 40px; 27 position: absolute; 28 animation: fade_in_out 10s 0s ease-in-out infinite normal forwards; 29 } 30}

CodePen サンプル

投稿2023/06/11 00:34

hatena19

総合スコア33715

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekko_neko

2023/06/11 00:53

ありがとうございます。 一度、word2をword1の子要素にしていたのですが、それこそ透明度の問題で諦めてました。colorでのやり方があるんですね、勉強になりました!
guest

0

例) .word2 { display: inline-block; position: absolute; top: ; // .word1 の位置関係との兼ね合い left: 0.7em; // font-size との兼ね合い font-size: 40px; // .word1 or .word2 どちらかに揃える text-align: center; animation: fade_in 10s ease-in-out infinite normal forwards; } コード

投稿2023/06/10 16:49

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nekko_neko

2023/06/10 16:55

ありがとうございます。 文字サイズの件に関してですが、出来ればword2の方を大きくしたいと考えています。それでは難しいのでしょうか?
退会済みユーザー

退会済みユーザー

2023/06/11 06:03

>大きくしたい であれば、font-size はそのままでも良いと 思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問