提交表单后保持打开的CSS模型

时间:2017-10-19 作者:Randomer11

使用一个简单的CSS模式弹出窗口来显示一个表单(重力表单),它按预期工作,但我想让用户体验更好。

当前按下模式按钮时

<label class="button success tiny" for="modal-1">Email this user</label>
弹出模态窗口,并在模态框中显示触点形式。然而,在提交表格后,表格会显示一条消息,如“您的提交已收到,我们将很快联系”。

由于提交表单后,模式关闭,因此无法看到。这意味着用户必须再次按下模式按钮,以确保他们已提交查询。

这是与上面的model(型号)按钮一起使用的模式代码:

  <input class="modal-state" id="modal-1" type="checkbox" />
    <div class="modal">
      <label class="modal__bg" for="modal-1"></label>
      <div class="modal__inner">
        <label class="modal__close" for="modal-1"></label>
        <h2>Modal Inside Title</h2>
        <p><?php echo do_shortcode(\'[gravityform id="80" title="false" description="false"]\'); ?>
    </p>
      </div>
    </div>
以及当前使用的CSS:

/* [Object] Modal
 * =============================== */
.modal {
  opacity: 0;
  visibility: hidden;
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  text-align: left;
  background: rgba(0,0,0, .9);
  transition: opacity .25s ease;
}

.modal__bg {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  cursor: pointer;
}

.modal-state {
  display: none;
}

.modal-state:checked + .modal {
  opacity: 1;
  visibility: visible;
}

.modal-state:checked + .modal .modal__inner {
  top: 0;
}

.modal__inner {
  transition: top .25s ease;
  position: absolute;
  top: -20%;
  right: 0;
  bottom: 0;
  left: 0;
  width: 50%;
  margin: auto;
  overflow: auto;
  background: #fff;
  border-radius: 5px;
  padding: 1em 2em;
  height: 50%;
}

.modal__close {
  position: absolute;
  right: 1em;
  top: 1em;
  width: 1.1em;
  height: 1.1em;
  cursor: pointer;
}

.modal__close:after,
.modal__close:before {
  content: \'\';
  position: absolute;
  width: 2px;
  height: 1.5em;
  background: #ccc;
  display: block;
  transform: rotate(45deg);
  left: 50%;
  margin: -3px 0 0 -1px;
  top: 0;
}

.modal__close:hover:after,
.modal__close:hover:before {
  background: #aaa;
}

.modal__close:before {
  transform: rotate(-45deg);
}

@media screen and (max-width: 768px) {

  .modal__inner {
    width: 90%;
    height: 90%;
    box-sizing: border-box;
  }
}
我想知道是否有一个功能,我可以添加,这将保持在表单提交后打开模式。

1 个回复
最合适的回答,由SO网友:WebElaine 整理而成

PHP和JS的组合可以做到这一点。

让您的页面侦听gform_submit 默认情况下,重力形状在所有形状上都包含一个隐藏字段。

if(!empty($_POST[\'gform_submit\'])) {
    // now here comes your javascript
}
对于JS,请将模态状态设置为选中状态。这样,在页面加载时,如果表单已经提交,JS将触发CSS,使模式可见。

<script type="text/javascript">
    jQuery(document).ready(function(){
        jQuery("#modal-1").prop("checked", true);
    });
</script>
您也可以在vanilla JS中完成,但我假设如果您使用modals之类的工具,那么您可能有jQuery可用。

不确定您的用例是什么,但明智的做法是检查您的解决方案对屏幕阅读器、键盘用户等的可访问性。

结束

相关推荐

在子主题中优先加载文件css

我正在尝试向子主题添加其他文件css。我有自己的风格。css文件在子主题中,但它是默认加载的,所以我不需要在头部添加它。现在我想为响应式设计添加其他css文件,但我无法设置优先级。它们首先加载到head中,因此会被其他文件覆盖。这是我的附加函数代码。php,加载media-1100。头部css:wp_enqueue_style( \'media-1100\', get_stylesheet_directory_uri() . \'/css/media-1100.css\'); 所以我想要medi