💡 제이쿼리를 이용해 리본팝업을 적용해보자!
<body>
<!-- banner -->
<div class="pop">
<a href="#">닫기</a>
</div>
<!-- content -->
<div class="wrap">
<header></header>
<main>
<img src="images/content.jpg" alt="">
</main>
<footer></footer>
</div>
</body>
body, div {
margin: 0;
padding: 0;
}
.wrap {
text-align: center;
background: url(images/bg_wrap.jpg) repeat-x;
}
.pop {
background: #a9e3f9 url(images/banner.jpg) no-repeat center;
height: 70px;
}
.pop a {
display: block;
width: 38px;
height: 38px;
background: url(images/close.jpg) no-repeat;
text-indent: -9999px;
position: absolute;
right: 16px;
top: 16px;
}
$(function(){
$(".pop a").click(function(){
$(".pop").slideUp();
});
})
: 결과를 보면 첫번째 완성 gif와 좀 다르다는 걸 알 수 있을 것이다. 지금은 중간에서 접히는 것을 볼 수 있음!!
: .animate()효과를 줘서 .wrap을 위로 -70px 움직여 보자
$(function(){
$(".pop a").click(function(){
$(".wrap").animate({top:-70});
});
})
: 반응이 없음...?
🙆♀️ 해결방법
.wrap {text-align: center; background: url(images/bg_wrap.jpg) repeat-x; position: relative;}
: .wrap
에 position: relative;
추가해준다.
🤷♀️ 또 다른 문제점!
: 화면이 넘치지도 않는데 스크롤바가 생긴다. 어차피 웹 페이지를 만들면 페이지가 길어서 스크롤바가 신경 안쓰이지만 그래도 수정해보겠다.
스크롤바가 생긴 이유는 위에 사라는 졌지만 위로 말려 올라간 팝업 길이까지 생각해서 스크롤바가 생긴 것이다.
.pop
에 position: absolute;
를 적용하고, .pop
에 absolute를 줬으니까 .wrap
에도 top:70px;
을 같이 줘야한다. top 위치를 안정해주면 .wrap
이 .pop
위치를 먹어버린다!!!position: absolute;
쓰는 순간 inline, block요소든 다 inline-block
요소로 바뀐다. inline-block
특징이 바로 안에 있는 컨텐츠 만큼 크기가 생기는 건데, 그래서 position: absolute;
, float
쓰면 width가 없어져서 width 값을 꼭 줘야한다. .wrap {
text-align: center;
background: url(images/bg_wrap.jpg) repeat-x;
position: relative;
top: 70px;
}
.pop {
background: #a9e3f9 url(images/banner.jpg) no-repeat center;
height: 70px;
position: absolute;
width: 100%;
}
<script type="text/javascript">
$(function(){
$(".pop a").click(function(){
$(".wrap").animate({top:0});
});
})
</script>
// top : 0 으로 가게 수정해준다.
다 완료된 줄 알았지만 gif를 보면 팝업이 접히면서 스크롤바가 있었다 없어져서 화면이 움찔하는 것을 볼 수 있다.
body {overflow-y: scroll;}
바디태그에 항상 스크롤이 보이게 해주면 된다.