予約・誘導

予約ボタン・LINE誘導・料金表・FAQなど、行動につなげるパーツ

予約CTAボタンセット

サブテキスト付きの大きな角丸ボタンで、Web予約への導線を目立たせるパーツです。

コード・使い方を見る
<div class="rc-wrap">
  <a class="rc-button" href="https://example.com/reserve" target="_blank" rel="noopener">
    <span class="rc-main">24時間WEB予約はこちら</span>
    <span class="rc-sub">みなと総合クリニック|スマホから1分で予約完了</span>
  </a>
</div>
.rc-wrap {
  --rc-bg: #2f8f9d;   /* ボタンの背景色(医院のテーマ色に変更してください) */
  --rc-color: #ffffff; /* ボタンの文字色 */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  max-width: 480px;
  margin: 0 auto;
  text-align: center;
}
.rc-button {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .35em;
  width: 100%;
  box-sizing: border-box;
  padding: 1.2em 1.4em;
  background: var(--rc-bg);
  color: var(--rc-color);
  text-decoration: none;
  border-radius: 999px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, .15);
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.rc-button:hover,
.rc-button:focus-visible {
  transform: translateY(-4px);
  box-shadow: 0 10px 22px rgba(0, 0, 0, .2);
  opacity: .94;
}
.rc-button:active {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, .18);
}
.rc-main {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: .04em;
}
.rc-sub {
  font-size: .78rem;
  font-weight: 500;
  opacity: .9;
  letter-spacing: .02em;
}
@media (max-width: 480px) {
  .rc-button { padding: 1em 1.1em; border-radius: 20px; }
  .rc-main { font-size: 1.02rem; }
  .rc-sub { font-size: .72rem; }
}

LINE・電話誘導ブロック

LINEと電話、2つの予約・相談導線を横並びで見せる誘導ブロックです。スマホでは縦に積み替わります。

コード・使い方を見る
<div class="lp-wrap">
  <a class="lp-block lp-line" href="https://line.me/R/ti/p/@example" target="_blank" rel="noopener">
    <span class="lp-icon" aria-hidden="true">
      <svg viewBox="0 0 24 24" width="28" height="28"><path fill="currentColor" d="M12 2C6.48 2 2 5.69 2 10.2c0 3.08 2.09 5.77 5.19 7.24-.23.86-.83 3.08-.95 3.56-.15.6.22.59.46.43.19-.13 3.06-2.08 4.31-2.93.32.04.65.06.99.06 5.52 0 10-3.69 10-8.36S17.52 2 12 2z"/></svg>
    </span>
    <span class="lp-text">
      <span class="lp-label">LINEで予約・相談</span>
      <span class="lp-note">友だち追加してそのままメッセージでOK</span>
    </span>
  </a>
  <a class="lp-block lp-tel" href="tel:0300000000">
    <span class="lp-icon" aria-hidden="true">
      <svg viewBox="0 0 24 24" width="28" height="28"><path fill="currentColor" d="M6.6 10.8c1.4 2.8 3.8 5.1 6.6 6.6l2.2-2.2c.3-.3.7-.4 1-.2 1.1.4 2.3.6 3.6.6.6 0 1 .4 1 1V20c0 .6-.4 1-1 1C10.9 21 3 13.1 3 3c0-.6.4-1 1-1h3.5c.6 0 1 .4 1 1 0 1.3.2 2.5.6 3.6.1.4 0 .8-.2 1.1L6.6 10.8z"/></svg>
    </span>
    <span class="lp-text">
      <span class="lp-label">お電話でのご予約</span>
      <span class="lp-number">03-0000-0000</span>
    </span>
  </a>
</div>
.lp-wrap {
  --lp-line: #06c755;   /* LINE側の背景色(LINEブランドカラー。変更非推奨) */
  --lp-tel: #2f8f9d;    /* 電話側の背景色(医院のテーマ色に変更してください) */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  max-width: 720px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.lp-block {
  display: flex;
  align-items: center;
  gap: .8rem;
  padding: 1.2em 1.3em;
  border-radius: 14px;
  text-decoration: none;
  color: #fff;
  box-shadow: 0 3px 12px rgba(0, 0, 0, .1);
  transition: transform .18s ease, box-shadow .18s ease, opacity .18s ease;
}
.lp-block:hover,
.lp-block:focus-visible {
  transform: translateY(-3px);
  box-shadow: 0 8px 18px rgba(0, 0, 0, .15);
  opacity: .95;
}
.lp-line { background: var(--lp-line); }
.lp-tel { background: var(--lp-tel); }
.lp-icon {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .22);
}
.lp-text {
  display: flex;
  flex-direction: column;
  gap: .25em;
  min-width: 0;
}
.lp-label {
  font-size: .92rem;
  font-weight: 700;
  letter-spacing: .02em;
}
.lp-note {
  font-size: .74rem;
  opacity: .92;
}
.lp-number {
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: .03em;
}
@media (max-width: 560px) {
  .lp-wrap { grid-template-columns: 1fr; }
  .lp-block { padding: 1em 1.1em; }
  .lp-number { font-size: 1.05rem; }
}

料金表(自費診療)

項目・内容・税込価格を並べた、自費診療向けのシンプルな料金テーブルです。

コード・使い方を見る
<div class="pt-wrap">
  <table class="pt-table">
    <caption>自費診療 料金表</caption>
    <thead>
      <tr><th>項目</th><th>内容</th><th>税込価格</th></tr>
    </thead>
    <tbody>
      <tr>
        <td class="pt-item">ホワイトニング(片顎)</td>
        <td>オフィスホワイトニング1回</td>
        <td class="pt-price">¥11,000</td>
      </tr>
      <tr>
        <td class="pt-item">ジルコニアクラウン</td>
        <td>被せ物1本</td>
        <td class="pt-price">¥88,000</td>
      </tr>
      <tr>
        <td class="pt-item">マウスピース矯正相談</td>
        <td>初回カウンセリング</td>
        <td class="pt-price">¥3,300</td>
      </tr>
      <tr>
        <td class="pt-item">親知らず抜歯(自費)</td>
        <td>難抜歯1本</td>
        <td class="pt-price">¥16,500</td>
      </tr>
    </tbody>
  </table>
  <p class="pt-note">※価格は税込表示です</p>
</div>
.pt-wrap {
  --pt-accent: #2f8f9d; /* 見出し・価格文字のアクセントカラー(医院のテーマ色に変更してください) */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  max-width: 640px;
  margin: 0 auto;
}
.pt-table caption {
  font-weight: 700;
  font-size: 1.1rem;
  color: var(--pt-accent);
  text-align: center;
  letter-spacing: .08em;
  padding: .6em;
}
.pt-table {
  width: 100%;
  border-collapse: collapse;
  background: #fff;
  border-radius: 10px;
  overflow: hidden;
  box-shadow: 0 2px 12px rgba(0, 0, 0, .06);
}
.pt-table th,
.pt-table td {
  padding: .75em .9em;
  border-bottom: 1px solid #e5e7eb;
  text-align: left;
  font-size: .9rem;
}
.pt-table thead th {
  background: var(--pt-accent);
  color: #fff;
  font-weight: 600;
  letter-spacing: .03em;
}
.pt-table tbody tr:last-child td {
  border-bottom: none;
}
.pt-table tbody tr:nth-child(even) {
  background: #fafafa;
}
.pt-item {
  font-weight: 700;
  color: #1f2937;
}
.pt-price {
  font-weight: 700;
  color: var(--pt-accent);
  text-align: right;
  white-space: nowrap;
}
.pt-note {
  margin: .7em 0 0;
  font-size: .78rem;
  color: #6b7280;
  text-align: right;
}
@media (max-width: 480px) {
  .pt-table th,
  .pt-table td { padding: .6em .5em; font-size: .8rem; }
  .pt-table caption { font-size: 1rem; }
}

FAQアコーディオン

クリックで開閉するよくある質問パーツです。JS不要のdetails/summaryで作られているため、確実に動作します。

コード・使い方を見る
<div class="fa-wrap">
  <h3 class="fa-title">よくあるご質問</h3>

  <details class="fa-item">
    <summary class="fa-question">
      <span class="fa-q-mark">Q</span>
      <span class="fa-q-text">予約なしでも受診できますか?</span>
      <span class="fa-icon" aria-hidden="true"></span>
    </summary>
    <div class="fa-answer">
      <p>当日の空き状況によっては受診いただけますが、お待ちいただく時間が長くなる場合がございます。事前のWeb予約またはお電話でのご予約がスムーズです。</p>
    </div>
  </details>

  <details class="fa-item">
    <summary class="fa-question">
      <span class="fa-q-mark">Q</span>
      <span class="fa-q-text">保険証を忘れた場合はどうすればいいですか?</span>
      <span class="fa-icon" aria-hidden="true"></span>
    </summary>
    <div class="fa-answer">
      <p>その日は自費診療(全額負担)でのお会計となります。後日保険証をご持参いただければ、差額を返金いたします。</p>
    </div>
  </details>

  <details class="fa-item">
    <summary class="fa-question">
      <span class="fa-q-mark">Q</span>
      <span class="fa-q-text">駐車場はありますか?</span>
      <span class="fa-icon" aria-hidden="true"></span>
    </summary>
    <div class="fa-answer">
      <p>提携駐車場を2台分ご用意しております。受付にて駐車券をお渡ししますので、ご利用の際はスタッフにお申し付けください。</p>
    </div>
  </details>

  <details class="fa-item">
    <summary class="fa-question">
      <span class="fa-q-mark">Q</span>
      <span class="fa-q-text">子供と一緒でも通院できますか?</span>
      <span class="fa-icon" aria-hidden="true"></span>
    </summary>
    <div class="fa-answer">
      <p>キッズスペースをご用意していますので、お子様と一緒に安心してご来院いただけます。ご不明な点はお気軽にスタッフへお尋ねください。</p>
    </div>
  </details>
</div>
.fa-wrap {
  --fa-accent: #2f8f9d; /* アクセントカラー(Qマーク・アイコンに使用、医院のテーマ色に変更してください) */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  max-width: 680px;
  margin: 0 auto;
}
.fa-title {
  margin: 0 0 1rem;
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--fa-accent);
  text-align: center;
  letter-spacing: .08em;
}
.fa-item {
  background: #fff;
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  margin-bottom: .7rem;
  box-shadow: 0 2px 10px rgba(0, 0, 0, .05);
  overflow: hidden;
}
.fa-item:last-child { margin-bottom: 0; }
.fa-question {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: 1em 1.2em;
  cursor: pointer;
  list-style: none;
  font-weight: 600;
  color: #1f2937;
  transition: background-color .15s ease;
}
.fa-question::-webkit-details-marker { display: none; }
.fa-question:hover { background: #f9fafb; }
.fa-q-mark {
  flex: none;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--fa-accent);
  color: #fff;
  font-size: .8rem;
  font-weight: 700;
}
.fa-q-text {
  flex: 1;
  font-size: .94rem;
  line-height: 1.5;
}
.fa-icon {
  flex: none;
  position: relative;
  width: 20px;
  height: 20px;
}
.fa-icon::before,
.fa-icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  background: var(--fa-accent);
  transform: translate(-50%, -50%);
  transition: opacity .15s ease;
}
.fa-icon::before {
  width: 14px;
  height: 2px;
}
.fa-icon::after {
  width: 2px;
  height: 14px;
}
.fa-item[open] .fa-icon::after {
  opacity: 0;
}
.fa-answer {
  padding: 0 1.2em 1.1em 3.5em;
}
.fa-answer p {
  margin: 0;
  font-size: .86rem;
  line-height: 1.8;
  color: #4b5563;
}
@media (max-width: 480px) {
  .fa-question { padding: .9em 1em; gap: .55rem; }
  .fa-q-text { font-size: .88rem; }
  .fa-answer { padding: 0 1em 1em 2.7em; }
}

スマホ追従フッターCTA

スマホ幅で画面下部に固定表示される、電話・WEB予約・LINEの3ボタンバーです。少しスクロールすると自然にフェイン表示され、PC幅では表示されません。

コード・使い方を見る
<div class="fc-wrap">
  <div class="fc-bar">
    <a class="fc-btn fc-tel" href="tel:0300000000">
      <span class="fc-icon" aria-hidden="true">📞</span>
      <span class="fc-label">電話で予約</span>
    </a>
    <a class="fc-btn fc-web" href="https://example.com/reserve" target="_blank" rel="noopener">
      <span class="fc-icon" aria-hidden="true">🖥️</span>
      <span class="fc-label">WEB予約</span>
    </a>
    <a class="fc-btn fc-line" href="https://line.me/R/ti/p/@example" target="_blank" rel="noopener">
      <span class="fc-icon" aria-hidden="true">💬</span>
      <span class="fc-label">LINE相談</span>
    </a>
  </div>
</div>
.fc-wrap {
  --fc-bg: #ffffff;   /* バー全体の背景色 */
  --fc-color: #2f8f9d; /* アイコン・文字の色(医院のテーマ色に変更してください) */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
}
.fc-wrap * { box-sizing: border-box; }

.fc-bar {
  display: none; /* PC幅では非表示。スマホ幅のみメディアクエリで表示 */
}

@media (max-width: 768px) {
  .fc-bar {
    display: flex;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9998;
    background: var(--fc-bg);
    box-shadow: 0 -2px 14px rgba(0, 0, 0, .12);
    padding: .4em .3em;
    padding-bottom: calc(.4em + env(safe-area-inset-bottom, 0px));
    opacity: 0;
    transform: translateY(12px);
    transition: opacity .25s ease, transform .25s ease;
    pointer-events: none;
  }
  .fc-bar.fc-visible {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
  }
  .fc-btn {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .15em;
    margin: 0 .25em;
    padding: .5em .2em;
    border-radius: 10px;
    text-decoration: none;
    color: var(--fc-color);
    font-size: .72rem;
    font-weight: 700;
    line-height: 1.3;
    background: #f3f4f6;
    transition: background-color .15s ease, opacity .15s ease;
  }
  .fc-btn:active { opacity: .8; }
  .fc-btn.fc-web {
    background: var(--fc-color);
    color: #fff;
  }
  .fc-icon {
    font-size: 1.15rem;
    line-height: 1;
  }
  .fc-label { white-space: nowrap; }
}

@media (max-width: 375px) {
  .fc-btn { font-size: .66rem; padding: .45em .15em; }
  .fc-icon { font-size: 1.05rem; }
}

@media (prefers-reduced-motion: reduce) {
  .fc-bar {
    transition: none;
  }
}
(function () {
  var SHOW_AFTER_PX = 120;
  var reduceMotion = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;

  function FloatingCta(root) {
    this.bar = root.querySelector('.fc-bar');
    if (!this.bar) return;

    if (reduceMotion) {
      this.bar.classList.add('fc-visible');
      return;
    }

    this.onScroll = this.onScroll.bind(this);
    window.addEventListener('scroll', this.onScroll, { passive: true });
    this.onScroll();
  }

  FloatingCta.prototype.onScroll = function () {
    if (window.scrollY > SHOW_AFTER_PX) {
      this.bar.classList.add('fc-visible');
    } else {
      this.bar.classList.remove('fc-visible');
    }
  };

  document.querySelectorAll('.fc-wrap').forEach(function (root) {
    new FloatingCta(root);
  });
})();

お問い合わせフォーム

お名前・メール・電話・お問い合わせ内容を入力できる、見た目のみの静的お問い合わせフォームです。

コード・使い方を見る
<div class="cf-wrap">
  <h3 class="cf-title">お問い合わせ</h3>
  <p class="cf-lead">ご不明な点やご相談は、下記フォームよりお気軽にお問い合わせください。</p>
  <form class="cf-form" action="">
    <label class="cf-field">
      <span class="cf-label">お名前<span class="cf-required">必須</span></span>
      <input class="cf-input" type="text" name="name" placeholder="山田 太郎" required>
    </label>
    <label class="cf-field">
      <span class="cf-label">メールアドレス<span class="cf-required">必須</span></span>
      <input class="cf-input" type="email" name="email" placeholder="example@mail.com" required>
    </label>
    <label class="cf-field">
      <span class="cf-label">電話番号<span class="cf-optional">任意</span></span>
      <input class="cf-input" type="tel" name="tel" placeholder="03-0000-0000">
    </label>
    <label class="cf-field">
      <span class="cf-label">お問い合わせ内容<span class="cf-required">必須</span></span>
      <textarea class="cf-textarea" name="message" rows="5" placeholder="お問い合わせ内容をご記入ください" required></textarea>
    </label>
    <p class="cf-note">みなと総合クリニック(東京都港区0-0-0/電話 03-0000-0000)</p>
    <button class="cf-submit" type="submit">送信する</button>
  </form>
</div>
.cf-wrap {
  --cf-accent: #2f8f9d; /* ボタン・フォーカス枠の色(医院のテーマ色に変更してください) */
  font-family: "Noto Sans JP", "Hiragino Kaku Gothic ProN", sans-serif;
  max-width: 560px;
  margin: 0 auto;
  box-sizing: border-box;
}
.cf-wrap * { box-sizing: border-box; }
.cf-title {
  margin: 0 0 .5em;
  text-align: center;
  font-size: 1.2rem;
  font-weight: 700;
  color: #2d3339;
  letter-spacing: .06em;
}
.cf-lead {
  margin: 0 0 1.6em;
  text-align: center;
  font-size: .88rem;
  line-height: 1.8;
  color: #6b7280;
}
.cf-form {
  background: #fff;
  border: 1px solid #eef0f2;
  border-radius: 14px;
  padding: 1.8em 1.6em;
  box-shadow: 0 2px 12px rgba(0, 0, 0, .05);
}
.cf-field {
  display: block;
  margin-bottom: 1.2em;
}
.cf-field:last-of-type {
  margin-bottom: 1.4em;
}
.cf-label {
  display: flex;
  align-items: center;
  gap: .5em;
  margin-bottom: .5em;
  font-size: .88rem;
  font-weight: 700;
  color: #2d3339;
}
.cf-required,
.cf-optional {
  font-size: .68rem;
  font-weight: 700;
  padding: .15em .5em;
  border-radius: 4px;
  line-height: 1.5;
}
.cf-required {
  color: #fff;
  background: #e0685f;
}
.cf-optional {
  color: #6b7280;
  background: #f3f4f6;
}
.cf-input,
.cf-textarea {
  display: block;
  width: 100%;
  padding: .75em .9em;
  font-size: .92rem;
  font-family: inherit;
  color: #2d3339;
  background: #fafafa;
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  transition: border-color .15s ease, box-shadow .15s ease, background-color .15s ease;
}
.cf-input::placeholder,
.cf-textarea::placeholder {
  color: #b0b6bd;
}
.cf-textarea {
  min-height: 7.5em;
  line-height: 1.7;
  resize: vertical;
}
.cf-input:focus,
.cf-textarea:focus {
  outline: none;
  background: #fff;
  border-color: var(--cf-accent);
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--cf-accent) 20%, transparent);
}
.cf-note {
  margin: 0 0 1.4em;
  font-size: .76rem;
  line-height: 1.7;
  color: #9aa1a9;
  text-align: center;
}
.cf-submit {
  display: block;
  width: 100%;
  padding: .9em 1em;
  font-size: .95rem;
  font-weight: 700;
  font-family: inherit;
  color: #fff;
  background: var(--cf-accent);
  border: none;
  border-radius: 8px;
  cursor: pointer;
  letter-spacing: .05em;
  transition: opacity .15s ease, transform .15s ease;
}
.cf-submit:hover {
  opacity: .9;
}
.cf-submit:active {
  transform: translateY(1px);
}
.cf-submit:focus-visible {
  outline: 2px solid var(--cf-accent);
  outline-offset: 2px;
}

@media (max-width: 480px) {
  .cf-form { padding: 1.4em 1.1em; }
  .cf-title { font-size: 1.1rem; }
}

@media (prefers-reduced-motion: reduce) {
  .cf-input,
  .cf-textarea,
  .cf-submit {
    transition: none;
  }
}