【问题标题】:Modal content "pages" and going back to previous page from button模态内容“页面”并从按钮返回上一页
【发布时间】:2020-11-05 12:50:20
【问题描述】:

我正在做这个小网站,而不是一个应用程序,它看起来像一个应用程序。 它有模态。在模式中,您单击将您带到下一个视图的链接。 然后您可以返回上一个“页面”或从模态标题上的后退按钮查看,也可以关闭模​​态。

我怎样才能做到以下几点:

  1. 返回按钮可转到上一个视图。如果是第一个视图,则关闭模式。
  2. 退出按钮关闭模式。
  3. 单击“下一步”按钮时,模式内容会发生变化。或者,如果没有 Next,则单击另一个按钮或链接。

这是我创建的基本 HTML 代码:

.modal{
  max-width:400px;
  margin:0 auto;
  background:#f5f5f5;
  border-radius:6px;
}
.modal-header{
  position:relative;
  padding:20px;
  background:#eee;
  display:flex;
  text-align:center;
  align-items:center;
  justify-content:center;
  border-radius:6px 6px 0 0;
}
.modal-header a{
  text-decoration:none;
  display:block;
  width:30px;
  height:30px;
  background:#aaa;
  line-height:30px;
  text-align:center;
  color:#fff;
}
.close-modal{
  margin-left:auto;
}
.modal-header h3{
  margin:0 0 0 auto;
}
.modal-content{
  padding:30px;
}
.modal-content h2{
  text-align:center;
}
.modal-content .form-block{
  margin:20px 0;
}
.modal-content .form-control{
  width:100%;
  border:0;
  background:transparent;
  border-bottom:2px solid #aaa;
  padding:5px 0;
  height:40px;
}
.modal-content .btn{
  display:block;
  text-align:center;
  background:blue;
  text-decoration:none;
  padding:10px;
  border-radius:6px;
  color:#fff;
}
<div class="modal">
  <div class="modal-header">
    <a href="#" class="goback">&lt;</a>
    <h3>Title here</h3>
    <a href="#" class="close-modal">&times;</a>
  </div>
  <div class="modal-content">
    <h2>This is content 1st block</h2>
    <form>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-1" name="field-1" required>
      </div>
      <a href="#" class="btn" id="myButton">Next</a>
    </form>
  </div>
  <div class="modal-content">
    <h2>This is content 2nd block</h2>
    <form>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-2" name="field-2" required>
      </div>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-3" name="field-3" required>
      </div>
      <a href="#" class="btn" id="myButton">Next</a>
    </form>
  </div>
</div>

【问题讨论】:

  • 我知道这些“模态内容”块应该有一些 ID 或其他东西。或者那些数据链接标签。但是,应该使用正确的链接更新返回链接,对吧。我也想用过渡效果改变“页面”。当下一页从右侧飞入时,就像在应用程序中一样。
  • 我回答了你的问题:)

标签: javascript html jquery css modal-dialog


【解决方案1】:

我做到了,告诉我它是否符合您的预期?

我所有的代码都被注释了。

$(function(){
   // hide all elements exept first one
   $('.modal-content:not(:first)').hide();
   
   // add class last and first to last and fist modal-content divs
   $('.modal-content:first').addClass('first');   
   $('.modal-content:last').addClass('last'); 
   
   // click on go back
   $('.goback').click(function() {
      // check if its not the first div modal-content
      if (!$('.modal-content:visible').is('.first')) {
        var currentModalContent = $('.modal-content:visible');
        var prevModalContent = $(currentModalContent).prev('.modal-content');
        $(currentModalContent).hide();
        $(prevModalContent).fadeIn();       
      } else {
        // its the first div so we trigger the click to close the modal
        $('.close-modal').trigger('click');
      }
   });
   
   // close the modal
   $('.close-modal').click(function() {
      $('.modal').fadeOut();
   });  
   
   // click on go next 
   $('.btn').click(function() {
      // check if its not the last div modal-content 
      if (!$('.modal-content:visible').is('.last')) {
        var currentModalContent = $(this).parents('.modal-content');
        $(currentModalContent).hide();
        $(currentModalContent).next('.modal-content').fadeIn();
      } else {
        // its the last div 
        $(this).text('Another button');
      }
   });
});
.modal{
  max-width:400px;
  margin:0 auto;
  background:#f5f5f5;
  border-radius:6px;
}
.modal-header{
  position:relative;
  padding:20px;
  background:#eee;
  display:flex;
  text-align:center;
  align-items:center;
  justify-content:center;
  border-radius:6px 6px 0 0;
}
.modal-header a{
  text-decoration:none;
  display:block;
  width:30px;
  height:30px;
  background:#aaa;
  line-height:30px;
  text-align:center;
  color:#fff;
}
.close-modal{
  margin-left:auto;
}
.modal-header h3{
  margin:0 0 0 auto;
}
.modal-content{
  padding:30px;
}
.modal-content h2{
  text-align:center;
}
.modal-content .form-block{
  margin:20px 0;
}
.modal-content .form-control{
  width:100%;
  border:0;
  background:transparent;
  border-bottom:2px solid #aaa;
  padding:5px 0;
  height:40px;
}
.modal-content .btn{
  display:block;
  text-align:center;
  background:blue;
  text-decoration:none;
  padding:10px;
  border-radius:6px;
  color:#fff;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="modal">
  <div class="modal-header">
    <a href="#" class="goback">&lt;</a>
    <h3>Title here</h3>
    <a href="#" class="close-modal">&times;</a>
  </div>
  <div class="modal-content">
    <h2>This is content 1st block</h2>
    <form>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-1" name="field-1" required>
      </div>
      <a href="#" class="btn">Next</a>
    </form>
  </div>
  <div class="modal-content">
    <h2>This is content 2nd block</h2>
    <form>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-2" name="field-2" required>
      </div>
      <div class="form-block">
        <input type="text" class="form-control" placeholder="Write here" id="field-3" name="field-3" required>
      </div>
      <a href="#" class="btn">Next</a>
    </form>
  </div>
</div>

【讨论】:

  • 谢谢。这是一个很好的解决方案!我现在已经完成了:codepen.io/R15T0/pen/LYZBryX
  • 欢迎您,您能验证我的回答并给我一个赞吗?谢谢你:)
  • "声望低于 15 人的投票将被记录,但不会更改公开显示的帖子得分。" - 我不确定投票是否有效。
猜你喜欢
  • 2016-08-09
  • 2017-06-05
  • 2014-05-03
  • 2020-05-12
  • 1970-01-01
  • 2013-04-12
  • 2018-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多