アンケート

アンケート(複数選択・単一選択・yes/no・ボタンを押すと下部表示)※要javascript(アンケート)

Q1ここにテキストが入ります

Q2ここにテキストが入ります

Q3ここにテキストが入ります

Q4ここにテキストが入ります

Q5ここにテキストが入ります

下記Beyondコード

JS head

    <!-- タグ設定のJavaScript headに以下をカットして貼り付けてください。
      同一widgetを複数追加する場合、複数回貼付けは不要です。 -->
    <script>
        var revealBtnFncMulti = revealBtnFncMulti || {};
        (function(_) {
            _.init = function() {
                var questionBox = Array.from(document.querySelectorAll('.js-questionRevealMulti'));
                var hiddenClass = 'is-hidden';

                questionBox.forEach(function(qb) {
                    var completeBtn = qb.querySelector('.js-send');
                    var revealArea = qb.querySelector('.js-reveal');

                    completeBtn.addEventListener('click', function() {
                        revealArea.classList.toggle(hiddenClass);
                        var targetOffsetTop = window.pageYOffset + revealArea.getBoundingClientRect().height;
                        window.scrollTo({
                            top: targetOffsetTop,
                            behavior: 'smooth',
                        });
                    });
                });
            };
        })(revealBtnFncMulti);
    </script>
    <!-- JavaScript headここまで -->

HTML

  <!-- 
      HTMLここから
    ・タグの「id」はひとつのversion内で同じ名前をひとつだけ使うことができます。このwidgetを複数使用する場合や「id」を設定する別のwidgetを併用する際は「id」の名前が重複しないよう設定が必要です。
    ・対応するinputタグの「id」とlabelタグの「for」は同じ名前を設定してください。
    ・同じグループのinputタグには同じ名前の「name」を設定してください。このwidgetを複数使用する場合や「name」を設定する別のwidgetを併用する際はグループごとに「name」の名前が重複しないよう設定が必要です。
    -->
    <div class="question-reveal-multi js-questionRevealMulti">
        <!-- 項目を増減する場合は、ここから「★ここまで★」部分をコピペ、もしくは削除してください -->
        <div class="questionArea">
            <h2 class="title"><span class="title_num">Q1</span>ここにテキストが入ります</h2>
            <div class="linkbox">
                <input id="q1-1" type="checkbox" name="q1"><label for="q1-1">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q1-2" type="checkbox" name="q1"><label for="q1-2">
                    <div class="btn _lineTwo">複数選択可能<br>複数選択可能</div>
                </label>
                <input id="q1-3" type="checkbox" name="q1"><label for="q1-3">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q1-4" type="checkbox" name="q1"><label for="q1-4">
                    <div class="btn">複数選択可能</div>
                </label>
            </div>
        </div>
        <!-- ★ここまで★ -->

        <div class="questionArea">
            <h2 class="title"><span class="title_num">Q2</span>ここにテキストが入ります</h2>
            <div class="linkbox">
                <input id="q2-1" type="radio" name="q2"><label for="q2-1">
                    <div class="btn">一つのみ選択可能</div>
                </label>
                <input id="q2-2" type="radio" name="q2"><label for="q2-2">
                    <div class="btn">一つのみ選択可能</div>
                </label>
                <input id="q2-3" type="radio" name="q2"><label for="q2-3">
                    <div class="btn">一つのみ選択可能</div>
                </label>
                <input id="q2-4" type="radio" name="q2"><label for="q2-4">
                    <div class="btn">一つのみ選択可能</div>
                </label>
            </div>
        </div>

        <div class="questionArea">
            <h2 class="title"><span class="title_num">Q3</span>ここにテキストが入ります</h2>
            <div class="linkbox yes-no">
                <input id="q3-1" type="radio" name="q3"><label for="q3-1">
                    <div class="btn">はい</div>
                </label>
                <input id="q3-2" type="radio" name="q3"><label for="q3-2">
                    <div class="btn">いいえ</div>
                </label>
            </div>
        </div>

        <div class="questionArea">
            <h2 class="title"><span class="title_num">Q4</span>ここにテキストが入ります</h2>
            <div class="linkbox">
                <input id="q4-1" type="checkbox" name="q4"><label for="q4-1">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q4-2" type="checkbox" name="q4"><label for="q4-2">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q4-3" type="checkbox" name="q4"><label for="q4-3">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q4-4" type="checkbox" name="q4"><label for="q4-4">
                    <div class="btn">複数選択可能</div>
                </label>
            </div>
        </div>

        <div class="questionArea">
            <h2 class="title"><span class="title_num">Q5</span>ここにテキストが入ります</h2>
            <div class="linkbox">
                <input id="q5-1" type="checkbox" name="q5"><label for="q5-1">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q5-2" type="checkbox" name="q5"><label for="q5-2">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q5-3" type="checkbox" name="q5"><label for="q5-3">
                    <div class="btn">複数選択可能</div>
                </label>
                <input id="q5-4" type="checkbox" name="q5"><label for="q5-4">
                    <div class="btn">複数選択可能</div>
                </label>
            </div>
        </div>

        <div class="send-btn">
            <button class="js-send" type="button">回答を完了する</button>
        </div>

        <div class="revealarea js-reveal is-hidden">
            完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。完了ボタンを押すと表示される部分。
        </div>
    </div>

CSS

/*全体の設定*/
.question-reveal-multi {
  width: 750px;
  max-width: 100%;
  font-size: 16px;
  background-color: #fff;
  margin: 0 auto 1rem;
  padding: 1rem;
  line-height: 1.5;
  box-sizing: border-box;
}



/*設問ごとのブロック*/
.question-reveal-multi .questionArea {
  margin-bottom: 96px;
}



/* タイトル */
.question-reveal-multi .title {
  font-size: 2rem;
  text-align: left;
  background: #ddd;
  margin: 0 auto;
  padding: 10px;
}



/* タイトル数字 */
.question-reveal-multi .title_num {
  font-size: 2.5rem;
  margin-right: 5px;
  color: #ccc;
}



/*チェックボックスの設定*/
.question-reveal-multi .linkbox {
  width: 90%;
  text-align: left;
  margin: 48px auto 0;
  padding: 0;
  box-sizing: border-box;
}

 .question-reveal-multi input {
  display: none;
}



/* 選択肢の設定 */
.question-reveal-multi .linkbox:not(.yes-no) input+label {
  background: #eee;
  border: 1px solid #ccc;
  padding: 10px;
  margin-bottom: 10px;
  border-radius: 10px;
  cursor: pointer;
  box-sizing: border-box;
  transition: all 0.7s;
  display: block;
}



/* チェックされた時の選択項目設定 */
.question-reveal-multi .linkbox:not(.yes-no) input[type='radio']:checked+label,
 .question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']:checked+label {
  background: #2467bf;
}



/*チェックボックス*/
.question-reveal-multi .linkbox:not(.yes-no) input+label .btn {
  padding: 0.7rem 0.5rem 0.7rem 3.5rem;
  font-weight: normal;
  text-align: left;
  font-size: 1.5rem;
  position: relative;
  display: inline-block;
  box-sizing: border-box;
  cursor: pointer;
}



/* チェックされた時の選択肢文字スタイル */
.question-reveal-multi .linkbox:not(.yes-no) input:checked+label .btn {
  color: #fff;
}



/*チェックボックスの装飾設定  - 単一選択*/
.question-reveal-multi .linkbox:not(.yes-no) input[type='radio']+label .btn::before {
  top: 50%;
  transform: translateY(-50%);
  left: 0.5rem;
  width: 2rem;
  height: 2rem;
  border: solid 2px #888888;
  background: #ffffff;
  border-radius: 50%;
  content: '';
  display: block;
  position: absolute;
  box-sizing: border-box;
}



/*チェックボックスの装飾設定  - 複数選択*/
.question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']+label .btn::before {
  top: 50%;
  transform: translateY(-50%);
  left: 0.5rem;
  width: 2rem;
  height: 2rem;
  border: solid 2px #888888;
  background: #ffffff;
  border-radius: 5px;
  content: '';
  display: block;
  position: absolute;
  box-sizing: border-box;
}

 .question-reveal-multi .linkbox:not(.yes-no) input+label .btn:focus {
  outline: none !important;
}

 .question-reveal-multi .linkbox:not(.yes-no) input[type='radio']:checked+label .btn::before,
 .question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']+label .btn::before {
  border: none;
}



/*チェックマークの設定 - 単一選択 */
.question-reveal-multi .linkbox:not(.yes-no) input[type='radio']:checked+label .btn::after {
  top: 16px;
  left: 13px;
  width: 22px;
  height: 22px;
  background: #2467bf;
  border-radius: 50%;
  content: '';
  display: block;
  position: absolute;
  animation: checkZoom 0.3s forwards;
}



/*チェックマークの設定 - 複数選択 */
.question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']:checked+label .btn::after {
  top: 30%;
  left: 1.1rem;
  width: 0.5rem;
  height: 1.2rem;
  border-right: 4px solid #2467bf;
  border-bottom: 4px solid #2467bf;
  transform: rotate(45deg) translateY(-30%);
  content: '';
  display: block;
  position: absolute;
  animation: checkZoom 0.3s forwards;
}

@keyframes checkZoom {
  0% {
    transform: scale(0.7) rotate(45deg);
  }

  100% {
    transform: scale(1) rotate(45deg);
  }
}

 .question-reveal-multi ::-moz-focus-inner {
  border-color: transparent;
}



/* yes/no形式のボタン設定 */
.question-reveal-multi .linkbox.yes-no {
  display: flex;
  width: 80%;
}



/* yes/no形式のボタン選択肢 */
.question-reveal-multi .linkbox.yes-no input+label {
  margin: 0 10px;
  padding: 10px;
  text-align: center;
  background-color: #333;
  box-shadow: 0px 5px 0 #000;
  border-radius: 10px;
  flex: 1;
  box-sizing: border-box;
  cursor: pointer;
}



/* yes/no形式のボタン選択肢 - 選択時 */
.question-reveal-multi .linkbox.yes-no input:checked+label {
  background-color: #d30c0c;
  box-shadow: 0px 5px 0 #830606;
}



/* yes/no形式のボタン文字 */
.question-reveal-multi .linkbox.yes-no input+label .btn {
  font-size: 3rem;
  color: #fff;
  font-weight: bold;
}



/*完了ボタンの設定*/
.question-reveal-multi .send-btn {
  /*外側の余白|上下|左右auto=自動|*/
  margin: 1rem auto;
}



/*完了ボタンの設定*/
.question-reveal-multi .send-btn button {
  width: 80%;
  text-align: center;
  border: none;
  font-size: 3rem;
  font-weight: bold;
  color: #fff;
  margin: 0 auto;
  padding: 20px 10px;
  background-color: #333;
  border-radius: 10px;
  box-shadow: 0 5px 0 #000;
  position: relative;
  pointer-events: auto;
  box-sizing: border-box;
  cursor: pointer;
  display: block;
}



/* 完了ボタンを押すと表示される部分 */
.revealarea {
  /*文字の大きさ*/
  font-size: 1.2rem;
  /*文字位置*/
  text-align: left;
  /*外側の余白|上|左右auto=自動|下|*/
  margin: 3rem auto 0;
  /*内側の余白*/
  padding: 0;
  box-sizing: border-box;
}

 .is-hidden {
  display: none;
}

/* スマホ(画面幅768px以下)の場合の設定  */
@media screen and (max-width: 768px) {
   .question-reveal-multi .questionArea {
    margin-bottom: 48px;
  }

   .question-reveal-multi .title {
    font-size: 1.5rem;
  }

   .question-reveal-multi .title_num {
    font-size: 2rem;
  }

   .question-reveal-multi .linkbox {
    width: 100%;
    margin: 24px auto 0;
  }

   .question-reveal-multi .linkbox:not(.yes-no) input+label .btn {
    font-size: 1.2rem;
  }

   .question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']+label .btn::before {
    width: 1.8rem;
    height: 1.8rem;
  }

   .question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']:checked+label .btn::after {
    top: 0.7rem;
    left: 1rem;
  }

   .question-reveal-multi .linkbox:not(.yes-no) input[type='radio']+label .btn::before {
    width: 28px;
    height: 28px;
  }

   .question-reveal-multi .linkbox:not(.yes-no) input[type='radio']:checked+label .btn::after {
    top: 14px;
    left: 12px;
    width: 20px;
    height: 20px;
  }

   .question-reveal-multi .linkbox.yes-no {
    width: 100%;
  }

   .question-reveal-multi .linkbox.yes-no input+label .btn {
    font-size: 2rem;
  }

  

  /*完了ボタンの設定*/
  .question-reveal-multi .send-btn button {
    /* 横幅 */
    width: 100%;
    /*文字の大きさ*/
    font-size: 2rem;
  }

}

 .question-reveal-multi .linkbox:not(.yes-no) input[type='checkbox']:checked+label .btn._lineTwo::after {
  top: 35%;
  transform: rotate(45deg) translateY(-35%);
}



/* yes/no形式のボタン選択肢 */
.question-reveal-multi .questionArea .linkbox:not(.yes-no) input+label {
  display: flex;
  align-items: center;
}

 .question-reveal-multi .questionArea:nth-child(1) .linkbox:not(.yes-no) input+label {
  height: 115px;
}



/* 選択肢をホバーしたときの設定 */
.question-reveal-multi .linkbox:not(.yes-no) input+label:hover {
  background: #000;
  color: #fff;
}

/* スマホ(画面幅768px以下)の場合の設定  */
@media screen and (max-width: 768px) {
   .question-reveal-multi .questionArea:nth-child(1) .linkbox:not(.yes-no) input+label {
    height: 90px;
  }
}