Bootstrap で Modal が表示されているときは body に .modal-open というクラスが追加されます。
なので、次のように .modal-open があるときに modal 以外を非表示にする CSS を書いておけば、modal の表示時に中身だけ印刷されるようにできます。
style.css
@media print {
.modal-open > .container,
.modal-open > footer {
display: none !important;
}
}
次のようにしても大丈夫かと思ったのですが、なぜか Chrome で印刷プレビューが表示されなくなってしまいました(FireFox や IE だと大丈夫なのですが)。
style.css
@media print {
.modal-open > *:not(.modal) {
display: none !important;
}
}
↓追記
改めて確認すると、上記のどちらの方法でも Chrome では印刷できませんでした。
どうやら可視な要素がすべて position:fixed だと印刷できなくなるようです。
次のように書けば Chrome でもモーダルの中身だけを印刷できました。
style.css
@media print {
.modal-open > * {
display: none !important;
}
.modal-open > .modal {
display: inherit !important;
position: inherit !important;
}
}
↑追記
HTML は次のように body の直下に .modal を書いておきます。
index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
<link rel="stylesheet" href="style.css">
<style>
footer {
margin: 20px;
padding: 10px;
border-top: 1px solid #cccccc;
text-align: center;
}
</style>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
<a class="navbar-brand" href="#">Example</a>
</div>
<div class="collapse navbar-collapse">
<ul class="nav navbar-nav">
<li><a href="#">Home</a></li>
<li><a href="#">Page1</a></li>
<li><a href="#">Page2</a></li>
</ul>
</div>
</div>
</nav>
<div class="container">
<h1>ページのタイトル</h1>
<p>あいうえお。あいうえお。あいうえお。あいうえお。あいうえお。</p>
<button class="btn btn-primary btn-lg hidden-print" data-toggle="modal" data-target="#modal">モーダル</button>
</div>
<footer>
<div class="container">
<p>Copyright © 2014 Unknown All rights reserved.</p>
</div>
</footer>
<!-- Modal -->
<div class="modal fade" id="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close hidden-print" data-dismiss="modal">
<span>×</span><span class="sr-only">閉じる</span>
</button>
<h4 class="modal-title">モーダルのタイトル</h4>
</div>
<div class="modal-body">
かきくけこ。かきくけこ。かきくけこ。かきくけこ。かきくけこ。
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default hidden-print" data-dismiss="modal">閉じる</button>
<p class="visible-print">Copyright © 2014 Unknown All rights reserved.</p>
</div>
</div>
</div>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
</body>
</html>