🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

1回答

1459閲覧

aタグにズレが生じてしまいます

takawork

総合スコア95

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2021/01/08 18:40

編集2021/01/09 12:37

イメージ説明
アコーディオンメニューの中の話です。

本来ならテキストが
はい。
ダウンロードはこちらから出来ます。
と表示されるはずなのですが、
なぜかaタグ以降にズレが生じます。
一体どうすれば直るでしょうか?
一応アコーディオンの外とタイトル部分では、問題なくaタグが表示されましたので、
中で問題が生じてるようですが、検証モードでcssをいじってもズレたままでした。
お手数ですがよろしくお願いします。

<section class="question-content"> <div class="question-content-wrap"> <div class="question-content-wrap-list"> <div class="question-content-wrap-list-container"> <div class="accordion"> <dl> <dt> <h2 aria-expanded="false" aria-controls="accordion2" class="accordion-title accordionTitle js-accordionTrigger"> 詳しいPDF資料はありますか?</h2> </dt> <dd class="accordion-content accordionItem is-collapsed" id="accordion2" aria-hidden="true"> <p>はい。<br>ダウンロードは<a href="#">こちら</a>から出来ます。</p> </dd> </dl> </div> </div> </div> </div> </section>
.question-content { height: auto; padding-bottom: 30px; background-color: white; border: 1vw solid #02007F; } .question-content-wrap { max-width: 1080px; margin: 0 auto; } .question-content-wrap-ttl { text-align: center; padding: 40px 0px; } .question-content-wrap-ttl h1 { font-weight: bold; font-size: 34px; margin-bottom: 0px; } .question-content-wrap-ttl p { font-size: 22px; font-weight: bold; margin-bottom: 0px; } .accordion dd, .accordion__panel { background-color: #eee; line-height: 1.5em; } .accordion h2 { font-size: 23px; font-weight: bold; margin-bottom: -7px; -webkit-transition: 0.8s ease-in-out; transition: 0.8s ease-in-out; } .accordion p { padding: 20px; margin-bottom: 0px; font-weight: bold; } dt, dd { margin-left: 0px; } .accordion { position: relative; background-color: #eee; } .question-content-wrap-list-container { max-width: 960px; margin: 0 auto; } .accordionTitle, .accordion__Heading { background-color: #02007F; text-align: left; font-weight: 700; padding: 20px; display: -webkit-box; display: -ms-flexbox; display: flex; /* 横並び */ -webkit-box-align: center; -ms-flex-align: center; align-items: center; /* 上下中央配置 */ text-decoration: none; color: #fff; -webkit-transition: background-color 0.5s ease-in-out; transition: background-color 0.5s ease-in-out; } .accordionTitle:after, .accordion__Heading:after { content: "+"; font-size: 2.5em; line-height: 0.5em; margin-left: auto; -webkit-transition: -webkit-transform 0.3s ease-in-out; transition: -webkit-transform 0.3s ease-in-out; transition: transform 0.3s ease-in-out; transition: transform 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; } .accordionTitle:hover, .accordion__Heading:hover { color: orange; -webkit-transition: 0.8s ease-in-out; transition: 0.8s ease-in-out; } .accordionTitle:before, .accordion__Heading:before { content: "Q"; font-size: 48px; padding-right: 20px; line-height: 0.5em; -webkit-transition: -webkit-transform 0.3s ease-in-out; transition: -webkit-transform 0.3s ease-in-out; transition: transform 0.3s ease-in-out; transition: transform 0.3s ease-in-out, -webkit-transform 0.3s ease-in-out; } .accordionText { text-align: left; font-weight: 700; padding: 20px; display: -webkit-box; display: -ms-flexbox; display: flex; /* 横並び */ -webkit-box-align: center; -ms-flex-align: center; align-items: center; /* 上下中央配置 */ text-decoration: none; } .accordionText:before { content: "A"; font-size: 48px; padding-right: 20px; line-height: 0.5em; } .accordionTitleActive, .accordionTitle.is-expanded { color: orange; } .accordionTitleActive:after, .accordionTitle.is-expanded:after { -webkit-transform: rotate(-225deg); transform: rotate(-225deg); } .accordionItem { height: auto; overflow: hidden; max-height: 50em; -webkit-transition: max-height 1s; transition: max-height 1s; } @media screen and (min-width: 48em) { .accordionItem { max-height: 15em; -webkit-transition: max-height 0.5s; transition: max-height 0.5s; } } .accordionItem.is-collapsed { max-height: 0; } .no-js .accordionItem.is-collapsed { max-height: auto; } .animateIn { -webkit-animation: accordionIn 0.45s normal ease-in-out both 1; animation: accordionIn 0.45s normal ease-in-out both 1; } .animateOut { -webkit-animation: accordionOut 0.45s alternate ease-in-out both 1; animation: accordionOut 0.45s alternate ease-in-out both 1; } @-webkit-keyframes accordionIn { 0% { opacity: 0; -webkit-transform: scale(0.9) rotateX(-60deg); transform: scale(0.9) rotateX(-60deg); -webkit-transform-origin: 50% 0; transform-origin: 50% 0; } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @keyframes accordionIn { 0% { opacity: 0; -webkit-transform: scale(0.9) rotateX(-60deg); transform: scale(0.9) rotateX(-60deg); -webkit-transform-origin: 50% 0; transform-origin: 50% 0; } 100% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } } @-webkit-keyframes accordionOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0.9) rotateX(-60deg); transform: scale(0.9) rotateX(-60deg); } } @keyframes accordionOut { 0% { opacity: 1; -webkit-transform: scale(1); transform: scale(1); } 100% { opacity: 0; -webkit-transform: scale(0.9) rotateX(-60deg); transform: scale(0.9) rotateX(-60deg); } }
// よくある質問のアコーディオン (function(){ var d = document, accordionToggles = d.querySelectorAll('.js-accordionTrigger'), setAria, setAccordionAria, switchAccordion, touchSupported = ('ontouchstart' in window), pointerSupported = ('pointerdown' in window); skipClickDelay = function(e){ e.preventDefault(); e.target.click(); } setAriaAttr = function(el, ariaType, newProperty){ el.setAttribute(ariaType, newProperty); }; setAccordionAria = function(el1, el2, expanded){ switch(expanded) { case "true": setAriaAttr(el1, 'aria-expanded', 'true'); setAriaAttr(el2, 'aria-hidden', 'false'); break; case "false": setAriaAttr(el1, 'aria-expanded', 'false'); setAriaAttr(el2, 'aria-hidden', 'true'); break; default: break; } }; //function switchAccordion = function(e) { console.log("triggered"); e.preventDefault(); var thisAnswer = e.target.parentNode.nextElementSibling; var thisQuestion = e.target; if(thisAnswer.classList.contains('is-collapsed')) { setAccordionAria(thisQuestion, thisAnswer, 'true'); } else { setAccordionAria(thisQuestion, thisAnswer, 'false'); } thisQuestion.classList.toggle('is-collapsed'); thisQuestion.classList.toggle('is-expanded'); thisAnswer.classList.toggle('is-collapsed'); thisAnswer.classList.toggle('is-expanded'); thisAnswer.classList.toggle('animateIn'); }; for (var i=0,len=accordionToggles.length; i<len; i++) { if(touchSupported) { accordionToggles[i].addEventListener('touchstart', skipClickDelay, false); } if(pointerSupported){ accordionToggles[i].addEventListener('pointerdown', skipClickDelay, false); } accordionToggles[i].addEventListener('click', switchAccordion, false); } })();

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

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

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

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

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

Lhankor_Mhy

2021/01/09 01:48

accordionToggles には何が入っていますか? また、どのようにしたいのかが文章からは読み取れませんでしたので、もう少し詳しく表現してください。 A 以降のテキストを1列にしたいのですか?
takawork

2021/01/09 07:01

「accordionTogglesには何が入っていますか?」 とはどういうことでしょうか? htmlやcssにはaccordionTogglesが入ってなかったので、accordionTogglesはJSの中だけで使われてる変数なのかなと思います。 質問内容を具体的な文章と画像に修正したのでよろしくお願いします。 ちなみにこちらのものを参考にしてます。(コードは質問内容のものに修正してます。) https://codepen.io/chriswrightdesign/pen/cmanI よろしくお願いします。
Lhankor_Mhy

2021/01/09 09:51

> 「accordionTogglesには何が入っていますか?」とはどういうことでしょうか? わかりにくくてすみませんが、ご提示のコードは accordionToggles が定義されていないためエラーとなります。 ですので、実際のコードは何かが入っているのではないかな、と思います。 もし、JSと問題が関係ないのであれば、提示していただかない方が話が早いと思います。 (実際にこの件のやりとりで半日が無駄になっているわけです)
takawork

2021/01/09 10:09

なるほど、質問に載せていたJSを一部足らずに載せておりました。 お時間をお取りしてしまい大変申し訳ありませんでした。 今修正したのでお手数ですがよろしくお願いします。
takawork

2021/01/09 13:20 編集

大変失礼しました。 質問のコードだとcodepenでバグが出なかったので、サイト特有の問題かもしれないです。 よろしければバグが起きてるページをご確認頂けると助かります。 https://koukoku-unyou.com/faq/
guest

回答1

0

ベストアンサー

「質問への追記・修正の依頼」のコメントのリンク先
https://koukoku-unyou.com/faq/
を見ての回答。

レイアウトの崩れの原因は、accordionTextクラスにdisplay: flex; align-items: center;が設定されていることです。そのためaタグ移行が上下中央位置に配置されてしまってます。

HTMLの変更が可能なら、

html

1 <p class="accordionText">はい。<br>審査が通ったクライアント様のみ可能です。まずは<a href="#">ああああああああ</a>をお読みの上、お問い合わせください。</p>

のpタグの中身をspanタグで囲めばレイアウトの崩れは解消できます。

html

1 <p class="accordionText"><span>はい。<br>審査が通ったクライアント様のみ可能です。まずは<a href="#">ああああああああ</a>をお読みの上、お問い合わせください。</span></p>

投稿2021/01/10 12:20

hatena19

総合スコア34073

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

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

takawork

2021/01/10 12:41

ありがとうございます!まさかそんな方法があるとは...。 ふわっと原因はわかったのですが、なぜspanで囲むと解消されるのですか? (ロジックの部分がまだ理解出来てないです) あと同じページの質問なのですが、下記もお答え頂けると大変助かりますので、 お時間ありましたらよろしくお願いします。 https://teratail.com/questions/314958
hatena19

2021/01/10 12:57

まずは CSS FlexBox について学習しましょう。検索するといろいろ解説ページが見つかりますので分かり安そうなところを参考にしてください。例えば、 https://webdesignleaves.com/pr/css/css_basic_10.html そこで、FlexコンテナとFlexアイテムとの関係を理解してください。 Flexコンテナに align-items: center; を設定するとFlexアイテムは上下中央位置に配置されます。 p要素(Flexコンテナ)の中身のテキスト内にaタグがあると、その前後で分割されて別のFlexアイテムと認識されます。そのため、before疑似要素とaタグとその前後がそれぞれ上下中央配置されます。 p要素(Flexコンテナ)の中身のテキスト全体をspanで囲むとテキスト全体で一つのFlexアイテムとなり、before疑似要素とテキスト全体が上下中央配置されます。
takawork

2021/01/10 13:05

一つのFlexアイテム →なるほど、これで何が起きていたのか理解できました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問