์ธ์คํ์์ ์๋จ โ
์์ด์ฝ์ ๋๋ฅด๋ฉด ์ด๋ฏธ์งํ์ผ์ ๋์ด์ ๊ฒ์๋ฌผ์ ์
๋ก๋๋ฅผ ์ํฌ ์ ์๋ ์ฐฝ์ด ๋ฌ๋ค.
์ด ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๋ ค๊ณ ํ๋ค.
๊ทธ๋ผ ์ฐ์ , ๋ชจ๋ฌ์ฐฝ์ ๋ํด์ ์์์ผ ํ๋ค.
์๋ก์ด ๋ธ๋ผ์ฐ์ ์ฐฝ์ด ๋จ๋ ๊ฒ์ด ์๋, ์ง๊ธ ๋ณด๊ณ ์๋ ํ๋ฉด ๋ฐ๋ก ์์ ์์ผ๋ก ํ์ด๋์ค๋ ์ฐฝ ์ ๋ชจ๋ฌ์ฐฝ์ด๋ผ ํ๋ค.
์ธ์คํ์ ๊ฒ์๋ฌผ ์ ๋ก๋ ์ฐฝ๋ ์ด๋ฐ ๋ชจ๋ฌ์ฐฝ์ ํด๋นํ๋ค.
๋ชจ๋ฌ์ ๋ง๋ค์ด ์ฃผ๊ธฐ ์ํด ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํด์ฃผ๋๋ก ํ๊ฒ ๋ค.
- templates/instagram/main.html
CSS
.modal_overlay {
width: 100%;
height: 100%;
position: absolute;
left: 0;
top: 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: rgba(0, 0, 0, 0.8);
backdrop-filter: blur(1.5px);
-webkit-backdrop-filter: blur(1.5px);
}
.modal_window {
background: white;
backdrop-filter: blur(13.5px);
-webkit-backdrop-filter: blur(13.5px);
border-radius: 10px;
border: 1px solid rgba(255, 255, 255, 0.18);
width: 800px;
height: 600px;
position: relative;
padding: 10px;
}
HTML
<div id ="first-modal" class="modal_overlay">
<div class="modal_window">
</div>
</div>
์ ์ฝ๋๋ฅผ <style>
๊ณผ <body>
๋ถ๋ถ์ ์ถ๊ฐํด์ฃผ๋ฉด ์๋์ ๊ฐ์ด ๋ชจ๋ฌ์ฐฝ์ด ์๊ธด๋ค.
์ด๋ ๋ชจ๋ฌ์ฐฝ์ด ๊ฐ๋ ค์ ธ ์๋ค๊ฐ ๋ ์ผ๋๋ค.
CSS
์ฝ๋ ์ค .modal_overlay
์ display
๊ฐ flex
์ผ ๊ฒฝ์ฐ ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด๊ณ , none
์ผ ๊ฒฝ์ฐ ๋ชจ๋ฌ์ฐฝ์ด ๋ณด์ด์ง ์๋๋ค.
.modal_overlay {
...
display: flex;
...
}
๋ฐ๋ผ์ ์ฌ์ฉ์๊ฐ โ
๋ฒํผ์ ๋๋ฅด๊ธฐ ์ ์๋ display: none
์ผ๋ก ์ค์ ํด๋์๋ค๊ฐ, โ
๋ฒํผ์ ๋๋ฅด๋ ์๊ฐ display: flex
๋ก ๋ฐ๊ฟ์ฃผ๋ฉด ๋ ๊ฒ์ด๋ค.
๋ํ ๋ชจ๋ฌ์ฐฝ์ด ๋ ์๋ ๊ฒฝ์ฐ์ ์คํฌ๋กค์ด ์ฌ๋ผ์ง๋๋ก ํด์ผํ๋ค.
๋์ ์ธ ์์ง์์ ๋ง๋ค์ด ์ฃผ๊ธฐ ์ํด์ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ฃผ๋๋ก ํ๊ฒ ๋ค.
์ด๋ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ฃผ๋ ค๋ฉด ์ํฌํธ๋ฅผ ๋ฐ๋์ ํด์ค์ผ ํ๋ค!
<!-- Jquery -->
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
์ฐ์ ์ฌ์ฉ์๊ฐ ๋ฒํผ์ ๋๋ ๋์ง ์๋๋ ๋์ง ์๊ธฐ ์ํด์๋ id=""
๊ฐ์ด ํ์ํ๋ค.
<span id="nav-bar-add-box" class="material-icons-outlined">add_box</span>
์ ํด์ค id
๊ฐ์ ๊ฐ์ง๊ณ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ฌ์ฉ์๊ฐ ์ด๋ค ์ก์
์ ์ทจํ์ ๋ ๊ทธ๊ฒ์ ์์ํ๋ ๋์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด๋ผ ์ ์๋ค.
์ง๊ธ์ ์ฌ์ฉ์๊ฐ ์๋จ์ โ
๋ฒํผ์ ๋๋ ์ ๋ ๋ชจ๋ฌ์ฐฝ์ด ๋ํ๋๋๋ก ์ ์ด์ฟผ๋ฆฌ๋ฅผ ์์ฑํด์ฃผ๋๋ก ํ๊ฒ ๋ค.
<script>
$('#nav-bar-add-box').click(function(){
$('#first-modal').css({
display : 'flex'
})
});
</script>
๋ชจ๋ฌ์ฐฝ์ด ๋์์ก์ ๋ ์คํฌ๋กค์ ์์ ์ฃผ๋ ์ ์ด์ฟผ๋ฆฌ๋ฅผ ํ๋๋ ์ถ๊ฐํด์ค๋ค.
jquery
$('#nav-bar-add-box').click(function(){
$('#first-modal').css({
display : 'flex'
});
$(document.body).css({
overflow : 'hidden'
});
});
์คํฌ๋กค๋ฐ๋ ์ ์ฒด ๋ฐ๋ํ๋ฉด์์ ์ฌ๋ผ์ ธ์ผํ๊ธฐ ๋๋ฌธ๋ฐ ์ ์ด์ฟผ๋ฆฌ์ ์ ํ์๋ฅผ document.body
๋ก ์ง์ ํด์ฃผ์๋ค.
overflow: 'hidden'
์ ํตํด ๋ชจ๋ฌ์ฐฝ์ด ํด๋ฆญ๋์์ ๋ ์คํฌ๋กค๋ฐ๊ฐ ์จ๊ฒจ์ง๋ค.
๋ชจ๋ฌ์ฐฝ์ ๋์ ์ผ๋ฉด ์ด์ ๋ชจ๋ฌ์ฐฝ ๋ซ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณผ ๊ฒ์ด๋ค.
์ฐ์ ๋ชจ๋ฌ์ฐฝ์ ๋ซ๊ธฐ ์์ด์ฝ์ ๋ง๋ค์ด์ฃผ๋๋ก ํ๊ฒ ๋ค.
CSS
.modal-title {
display: flex;
flex-direction: row;
justify-content: space-between;
font-weight: bold;
font-size: 17px;
/* border-bottom: solid 1px rgb(202, 202, 202); */
}
.modal-title-side {
width: 40px;
text-align: center;
}
HTML
<!-- ๋ชจ๋ฌ์ฐฝ -->
<div class="modal-overlay">
<div class="modal-window">
<div class="modal-title">
<div class="modal-title-side"></div>
<div>์ ๊ฒ์๋ฌผ ๋ง๋ค๊ธฐ</div>
<div class="modal-title-side">
<span id ="modal-close" class="material-icons-outlined">
close
</span>
</div>
</div>
</div>
</div>
์ฝ๋๋ฅผ ์์ฑํด์ค ๋ค ์๋ฒ๋ฅผ ํ์ธํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ๋ค
jquery
$('#modal-close').click(function(){
$('.modal-overlay').css({
display : 'none'
});
});
์ค์ ์ด๋ฏธ์ง ํ์ผ์ ๋๋๊ทธ ํด์ ๋๋กญํ๋ฉด ํ์ผ์ด ์ ๋ก๋ ๋๋ ๊ธฐ๋ฅ์ ๊ตฌํํด๋ณด๋๋ก ํ๊ฒ ๋ค.
์ฐ์ ์ด๋ฏธ์ง๋ฅผ ๋์ด๋ค ๋๋ ๋ ์ด์์์ ๋ง๋ค์ด ์ฃผ๋๋ก ํ๊ฒ ๋ค.
css
.modal-img-space {
width: 625px;
height: 635px;
margin-top: 10px;
text-align: center;
}
html
<div id ="first-modal" class="modal-overlay">
<div class="modal-window">
<div class="modal-title">
<div class="modal-title-side"></div>
<div>์ ๊ฒ์๋ฌผ ๋ง๋ค๊ธฐ</div>
<div class="modal-title-side">
<span id ="modal-close" class="material-icons-outlined">
close
</span>
</div>
</div>
<div class="modal-img-space">
<span> ์ฌ์ง์ ์ฌ๊ธฐ์ ๋์ด๋ค ๋์ผ์ธ์. </span>
</div>
</div>
</div>
๋ ์ด์์์ ์ก์์ค ๋ค ๋๋๊ทธ์ค๋๋กญ ๊ธฐ๋ฅ์ ์ ์ด์ฟผ๋ฆฌ๋ก ์์ฑํด์ค๋ค.
jquery
$('.modal-img-space')
.on("dragover", dragOver)
.on("dragleave", dragOver)
.on("drop", uploadFiles);
function dragOver(e){
e.stopPropagation();
e.preventDefault();
if (e.type == "dragover") {
$(e.target).css({
"background-color": "black",
"outline-offset": "-20px"
});
} else {
$(e.target).css({
"background-color": "white",
"outline-offset": "-10px"
});
}
}
function uploadFiles(e){
e.stopPropagation();
e.preventDefault();
e.dataTransfer = e.originalEvent.dataTransfer;
var files = e.dataTransfer.files;
if (files.length > 1) {
alert('ํ๋๋ง ์ฌ๋ ค๋ผ.');
return;
}
if (files[0].type.match(/image.*/)) {
$(e.target).css({
"background-image": "url(" + window.URL.createObjectURL(files[0]) + ")",
"outline": "none",
"background-size": "100% 100%"});
}else{
alert('์ด๋ฏธ์ง๊ฐ ์๋๋๋ค.');
return;
}
}
์ค์ ๋ก ์๋ฒ์์ ์ฌ์งํ์ผ์ ๋๋๊ทธํด์ ๋์ผ๋ฉด ์ฌ์ง์ด ์ ๋ค์ด์ค๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
์ง๊ธ๊น์ง ๋ง๋ค์ด์ค ์ฒซ๋ฒ์งธ ๋ชจ๋ฌ์ ์ฌ์ง ํ์ผ์ด ์ ๋ก๋ ๋์์ ๋, ํผ๋์ ๋ด์ฉ์ ์ ์ ์ ์๋ ๋๋ฒ์งธ ๋ชจ๋ฌ๋ก ํ๋ฉด ๋ณํ์ ํด์ค์ผํ๋ค.
๋ฐ๋ผ์ ๋๋ฒ์งธ ๋ชจ๋ฌ์ ๋ง๋ค์ด์ฃผ๊ณ , ์ฒซ๋ฒ์งธ ๋ชจ๋ฌ์์ ์ฌ์ง์ด ์ ๋ก๋ ๋๋ ์๊ฐ ๋๋ฒ์งธ ๋ชจ๋ฌ์ ๋์์ค ์ ์๋๋ก ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๋๋ก ํ๊ฒ ๋ค.