모달이 있고 그 모달 내에 큰 숨겨진 콘텐츠를 표시하는 드롭 다운이 있습니다.
이제 첫 번째 모달 위에 쌓인 다음 모달을 열고 닫으면 아래 모달 스크롤이 비활성화됩니다.
내가 직면 한 문제를 복제하는 단계를 포함하여 전체 예제를 만들었습니다. 여기에서 볼 수 있습니다 .
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css" rel="stylesheet">
<title></title>
<style>
</style>
</head>
<body>
<input type="button" data-toggle="modal" data-target="#modal_1" class="btn btn-lg btn-primary" value="Open Modal 1" >
<div class="modal fade" id="modal_1">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">First Modal</h4>
</div>
<div class="modal-body">
<form class="form">
<div class="form-group">
<label>1) Open This First: </label>
<input type="button" data-toggle="modal" data-target="#modal_2" class="btn btn-primary" value="Open Modal 2" >
</div>
<div class="form-group">
<label>2) Change this once you have opened the modal above.</label>
<select id="change" class="form-control">
<option value="small">Show Small Content</option>
<option value="large">Show Large Content</option>
</select>
</div>
<div id="large" class='content-div'>
<label>Large Textarea Content.. Try and scroll to the bottom..</label>
<textarea rows="30" class="form-control"></textarea>
</div>
<div id="small" class='content-div'>
<label> Example Text Box</label>
<input type="text" class="form-control">
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_2">
<div class="modal-dialog modal-sm">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title">Second Modal</h4>
</div>
<div class="modal-body">
<hp>This is the stacked modal.. Close this modal, then chenge the dropdown menu, you cannot scroll... </h5>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
</body>
<script src="http://code.jquery.com/jquery-1.11.0.min.js" type="text/javascript"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js" type="text/javascript"></script>
<script>
$(document).ready(function() {
$(".content-div").hide();
$("#change").change(function() {
$(".content-div").hide();
$("#" + $(this).val()).show();
});
});
</script>
</html>
동작 동작을 보여주는 Bootply는 다음과 같습니다.
답변
이것은 또한 해결책입니다
.modal {
overflow-y:auto;
}
http://www.bootply.com/LZBqdq2jl5
자동으로 잘 작동합니다. 🙂 이것은 실제로 화면 크기보다 높게 실행되는 모달을 수정합니다.
답변
모달을 닫으면 태그 modal-open
에서를 제거하기 때문 <body>
입니다. 부트 스트랩은 같은 페이지에서 여러 모달을 지원하지 않습니다 (적어도 BS3까지).
작동하게하는 한 가지 방법 hidden.bs.modal
은 모달을 닫을 때 BS에 의해 트리거 된 이벤트 를 사용한 다음 modal-open
, 바디에 클래스 를 강제하기 위해 다른 모달이 열려 있는지 확인하는 것입니다 .
// Hack to enable multiple modals by making sure the .modal-open class
// is set to the <body> when there is at least one modal open left
$('body').on('hidden.bs.modal', function () {
if($('.modal.in').length > 0)
{
$('body').addClass('modal-open');
}
});
답변
나는 당신을위한 해결책을 찾았습니다. 왜 작동하지 않는지 잘 모르겠지만 CSS의 한 줄 코드만으로 문제를 해결할 수 있습니다. 두 번째 모달을 닫은 후 첫 번째 모달이 overflow-y:hidden
어떻게 든 얻습니다 . auto
실제로 설정하더라도 .
이것을 다시 작성하고 CSS에서 자신의 선언을 설정해야합니다.
#modal_1 {
overflow-y:scroll;
}
여기에 작동하는 데모가 있습니다.
편집 : 잘못된 링크, 죄송합니다.
답변
$(document).ready(function () {
$('.modal').on("hidden.bs.modal", function (e) { //fire on closing modal box
if ($('.modal:visible').length) { // check whether parent modal is opend after child modal close
$('body').addClass('modal-open'); // if open mean length is 1 then add a bootstrap css class to body of the page
}
});
});
//this code segment will activate parent modal dialog
//after child modal box close then scroll problem will automatically fixed
답변
따라 https://github.com/nakupanda/bootstrap3-dialog/issues/70 추가
.modal { overflow: auto !important; }
당신의 CSS에
답변
부트 스트랩 4의 경우 추가해야했습니다!
.modal {
overflow-y: auto !important;
}
그렇지 않으면 작동하지 않고 적용되지 않습니다.
답변
우선, 부트 스트랩은 다중 개방 모달을 지원하지 않습니다. 여기 참조 : Bootstrap Modal 문서
다중 개방 모달은 지원되지 않습니다. 다른 모달이 여전히 보이는 동안에는 모달을 열지 마십시오. 한 번에 둘 이상의 모달을 표시하려면 사용자 정의 코드가 필요합니다.
그러나 필요한 경우 기본 부트 스트랩 스타일 시트 뒤에 포함되는 한 사용자 정의 스타일 시트에이 CSS를 추가 할 수 있습니다 .
.modal {
overflow-y:auto;
}