javascript - 翻转卡片时如何去掉正面的复选框

标签 javascript html css flip

我正在尝试制作一张翻页卡。

当我点击卡片正面的发送按钮时,我可以看到卡片的背面。

但是正面的复选框仍然可见。

当我将这些复选框转到卡片背面时,如何删除它们?

或者有没有更简单更好的翻转卡片的方法?

const form = document.querySelector('form');
const cardContent = document.querySelector('.card__content');
const card1 = document.querySelector('#card__back__one');
const cardBack = document.querySelectorAll('.card__back');
const btnBack = document.querySelectorAll('.btn__back');


function checkNumber(e) {
    e.preventDefault();
    card1.classList.add('display');

    // Flip card and empty input.
    flipCard();
    form.reset();
}

function flipCard() {
    cardContent.classList.toggle('is-flipped');
}

form.addEventListener('submit', checkNumber);

btnBack.forEach(function (btn) {
    btn.addEventListener("click", flipCardBack);
});

$(function () {
    $('.button-checkbox').each(function () {

        // Settings
        var $widget = $(this),
            $button = $widget.find('button'),
            $checkbox = $widget.find('input:checkbox'),
            color = $button.data('color'),
            settings = {
                on: {
                    icon: 'glyphicon glyphicon-check'
                },
                off: {
                    icon: 'glyphicon glyphicon-unchecked'
                }
            };

        // Event Handlers
        $button.on('click', function () {
            $checkbox.prop('checked', !$checkbox.is(':checked'));
            $checkbox.triggerHandler('change');
            updateDisplay();
        });
        $checkbox.on('change', function () {
            updateDisplay();
        });

        // Actions
        function updateDisplay() {
            var isChecked = $checkbox.is(':checked');

            // Set the button's state
            $button.data('state', (isChecked) ? "on" : "off");

            // Set the button's icon
            $button.find('.state-icon')
                .removeClass()
                .addClass('state-icon ' + settings[$button.data('state')].icon);

            // Update the button's color
            if (isChecked) {
                $button
                    .removeClass('btn-default')
                    .addClass('btn-' + color + ' active');
            } else {
                $button
                    .removeClass('btn-' + color + ' active')
                    .addClass('btn-default');
            }
        }

        // Initialization
        function init() {

            updateDisplay();

            // Inject the icon if applicable
            if ($button.find('.state-icon').length == 0) {
                $button.prepend('<i class="state-icon ' + settings[$button.data('state')].icon + '"></i> ');
            }
        }
        init();
    });
});
*,
*:before,
*:after {
    box-sizing: inherit;
}

html {
    box-sizing: border-box;
}

body {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
}

.card__container {
    width: 100%;
}

.card__content {
    position: relative;
    width: 100%;
    transform-style: preserve-3d;
    transform-origin: center right;
    transition: transform 2s;
}

.card__content.is-flipped {
    transform: translateX(-100%) rotateY(-180deg);
}

.card__face {
    position: absolute;
    width: 100%;
    background-color: #f5f5f5;
    text-align: center;
    backface-visibility: hidden;
}

.card__face>p {
    color: #484848;
    padding-bottom: 1em;
    padding-left: 4%;
    padding-right: 4%;
    text-align: center;
}

.card__back {
    transform: rotateY(180deg);
    display: none;
}

.card__back.display {
    display: block;
}

#card__back__one>p {
    color: #484848;
    padding-bottom: 1em;
    padding-left: 4%;
    padding-right: 4%;
    text-align: center;
}


/* CSS for the card__front  */

.card__front {
    padding: 20px 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<head>
   <link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
   <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
</head>
<body>
   <div class="card__container">
      <div class="card__content">
         <!--       Front of the card -->
         <div class="card__face card__front">
            <td>
               <p><img width="200" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></p>
               <p>
                  <span style="font-size:16px">.</span><br>
                  <strong style="font-size:16px">Give me feedback</strong>
               </p>
               <form>
                  <div class="container">
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">1</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">2</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">3</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">4</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">5</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">6</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">7</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">8</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">9</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">10</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">11</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <hr />
                     <span class="button" style='float: right;'>
                     <button type="submit" class="btn btn-success" data-color="success">Send</button>
                     <input type="submit" class="hidden"  />
                     </span>
                  </div>
               </form>
            </td>
         </div>
         <!--       Back of the card -->
         <div id="card__back__one" class="card__face card__back">
            <td>
               <p><img width="200" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></p>
               <p>
                  <span style="font-size:16px">Thanks for feedback.</span><br>
               </p>
            </td>
         </div>
      </div>
   </div>
</body>

感谢您的帮助。

最佳答案

检查下面的代码片段。

我添加了以下代码,并且似乎按预期工作。

.card__content.is-flipped .button-checkbox {
  visibility: hidden;
}

const form = document.querySelector('form');
const cardContent = document.querySelector('.card__content');
const card1 = document.querySelector('#card__back__one');
const cardBack = document.querySelectorAll('.card__back');
const btnBack = document.querySelectorAll('.btn__back');


function checkNumber(e) {
    e.preventDefault();
    card1.classList.add('display');

    // Flip card and empty input.
    flipCard();
    form.reset();
}

function flipCard() {
    cardContent.classList.toggle('is-flipped');
}

form.addEventListener('submit', checkNumber);

btnBack.forEach(function (btn) {
    btn.addEventListener("click", flipCardBack);
});

$(function () {
    $('.button-checkbox').each(function () {

        // Settings
        var $widget = $(this),
            $button = $widget.find('button'),
            $checkbox = $widget.find('input:checkbox'),
            color = $button.data('color'),
            settings = {
                on: {
                    icon: 'glyphicon glyphicon-check'
                },
                off: {
                    icon: 'glyphicon glyphicon-unchecked'
                }
            };

        // Event Handlers
        $button.on('click', function () {
            $checkbox.prop('checked', !$checkbox.is(':checked'));
            $checkbox.triggerHandler('change');
            updateDisplay();
        });
        $checkbox.on('change', function () {
            updateDisplay();
        });

        // Actions
        function updateDisplay() {
            var isChecked = $checkbox.is(':checked');

            // Set the button's state
            $button.data('state', (isChecked) ? "on" : "off");

            // Set the button's icon
            $button.find('.state-icon')
                .removeClass()
                .addClass('state-icon ' + settings[$button.data('state')].icon);

            // Update the button's color
            if (isChecked) {
                $button
                    .removeClass('btn-default')
                    .addClass('btn-' + color + ' active');
            } else {
                $button
                    .removeClass('btn-' + color + ' active')
                    .addClass('btn-default');
            }
        }

        // Initialization
        function init() {

            updateDisplay();

            // Inject the icon if applicable
            if ($button.find('.state-icon').length == 0) {
                $button.prepend('<i class="state-icon ' + settings[$button.data('state')].icon + '"></i> ');
            }
        }
        init();
    });
});
*,
*:before,
*:after {
    box-sizing: inherit;
}

html {
    box-sizing: border-box;
}

body {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-height: 100vh;
}

.card__container {
    width: 100%;
}

.card__content {
    position: relative;
    width: 100%;
    transform-style: preserve-3d;
    transform-origin: center right;
    transition: transform 2s;
}

.card__content.is-flipped {
    transform: translateX(-100%) rotateY(-180deg);
}

.card__content.is-flipped .button-checkbox {
  visibility: hidden;
}

.card__face {
    position: absolute;
    width: 100%;
    background-color: #f5f5f5;
    text-align: center;
    backface-visibility: hidden;
}

.card__face>p {
    color: #484848;
    padding-bottom: 1em;
    padding-left: 4%;
    padding-right: 4%;
    text-align: center;
}

.card__back {
    transform: rotateY(180deg);
    display: none;
}

.card__back.display {
    display: block;
}

#card__back__one>p {
    color: #484848;
    padding-bottom: 1em;
    padding-left: 4%;
    padding-right: 4%;
    text-align: center;
}


/* CSS for the card__front  */

.card__front {
    padding: 20px 20px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<head>
   <link href="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
   <script src="https://netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
</head>
<body>
   <div class="card__container">
      <div class="card__content">
         <!--       Front of the card -->
         <div class="card__face card__front">
            <td>
               <p><img width="200" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></p>
               <p>
                  <span style="font-size:16px">.</span><br>
                  <strong style="font-size:16px">Give me feedback</strong>
               </p>
               <form>
                  <div class="container">
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">1</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">2</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">3</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">4</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">5</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">6</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">7</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">8</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">9</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">10</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <span class="button-checkbox">
                     <button type="button" class="btn" data-color="success">11</button>
                     <input type="checkbox" class="hidden"  />
                     </span>
                     <hr />
                     <span class="button" style='float: right;'>
                     <button type="submit" class="btn btn-success" data-color="success">Send</button>
                     <input type="submit" class="hidden"  />
                     </span>
                  </div>
               </form>
            </td>
         </div>
         <!--       Back of the card -->
         <div id="card__back__one" class="card__face card__back">
            <td>
               <p><img width="200" src="https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png"></p>
               <p>
                  <span style="font-size:16px">Thanks for feedback.</span><br>
               </p>
            </td>
         </div>
      </div>
   </div>
</body>

关于javascript - 翻转卡片时如何去掉正面的复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68692846/

相关文章:

javascript - new Array(n) 创建空数组; [...new Array(n)] 创建未定义的数组。为什么?

javascript - 你将如何制作波浪动画 div css/js

javascript - 创建一个水平滚动的 Div

javascript - 放大的弹出窗口在灯箱前面显示滚动条

CSS:如何缩短选择具有多个ID的直接子代的代码

css - Div 后跟 Para 在同一行

javascript - VueJS 在其methods 属性下区分函数声明格式吗?

javascript - 更新 javascript/jquery 代码时清除浏览器网站数据

html - 只有一个部分的 CSS 渐变方向

html - IE 9 不尊重我的叠加层,只将 css 应用于包含的元素