본문 바로가기

Study/ETC

[개발이슈]bxSlider height 0 이슈

bxSlider height 0 이슈

이번 포스팅은 내가 개발을 하면서 겪었던 이슈에 대해 소개할 것 이다.

jsFiddle 오류가 있는 것 같아 아래 소스를 첨부 시켜 놓았다. 소스코드 바로가기

codePen 으로 변경하였다.

 

문제

bxSlider 라는 슬라이더 라이브러리를 쓰던 중 특정 슬라이더의 height 가 0으로 설정되는 것을 확인하였다.

 

See the Pen dayGBX by PAPICO (@joseongryun) on CodePen.

원인

$(selector).bxSlider({}); 로 생성한 슬라이더는 display:none;을 하면 height가 0이 된다.

 

해결 방법

탭을 변경할때 마다 해당 slider 를 다시 reload 해서 그려야 한다.

slider.reloadSlider(); 를 통해 bxSilder를 리로드 시킬수 있다.

 

See the Pen XOWdmr by PAPICO (@joseongryun) on CodePen.

 

소스코드

  • bxslider.html
<!DOCTYPE html> <html lang="en">  <head>     <meta charset="UTF-8">     <meta name="viewport" content="width=device-width, initial-scale=1.0">     <title>bxslider</title>     <link rel="stylesheet" href="./dist/jquery.bxslider.css">     <script src="./dist/jquery-3.3.1.js"></script>     <script src="./dist/jquery.bxslider.min.js"></script>     <style>         .tab {             list-style: none;             padding: 0;         }          .tab>li {             display: inline-block;         }          .tab .tab_li {             font-size: 20px;             text-decoration: none;             color: #fff;             background: #525252;             padding: 5px 15px;             cursor: pointer;             box-sizing: border-box;         }          .tab .tab_li.on {             background: #f0f0f0;             border: 1px solid #525252;             color: #525252;         }          .tab_div {             width: 400px;             display: none;         }          .tab_div.on {             display: block;         }          .bslider li {             width: 400px;             overflow: hidden         }          .bslider li img {             width: 100%;             height: auto;         }     </style>     <script>         $(document).ready(function () {             var slider1 = $("#cat_slider").bxSlider({                 mode: 'horizontal'             });             var slider2 = $("#dog_slider").bxSlider({                 mode: 'horizontal'             });              $(".tab_li").on("click", function (e) {                 e.preventDefault();                 $(".tab_div").removeClass("on");                 $(".tab_li").removeClass("on");                 $(e.target).addClass("on");                 if ($(e.target).attr("id") === "dogtab") {                     $("#dog_div").addClass("on");                     slider2.reloadSlider({});                 } else {                     $("#cat_div").addClass("on");                     slider1.reloadSlider({});                 }             })         })     </script> </head>  <body>     <ul class="tab">         <li><a href="#" class="tab_li on" id="cattab">cat</a></li>         <li><a href="#" class="tab_li" id="dogtab">dog</a></li>     </ul>     <div class="tab_div on" id="cat_div">         <ul class="bslider" id="cat_slider">             <li><img src="https://images.pexels.com/photos/979247/pexels-photo-979247.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>             <li><img src="https://images.pexels.com/photos/96938/pexels-photo-96938.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>             <li><img src="https://images.pexels.com/photos/1056251/pexels-photo-1056251.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>         </ul>     </div>     <div class="tab_div" id="dog_div">         <ul class="bslider" id="dog_slider">             <li><img src="https://images.pexels.com/photos/1108099/pexels-photo-1108099.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>             <li><img src="https://images.pexels.com/photos/460823/pexels-photo-460823.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>             <li><img src="https://images.pexels.com/photos/1663421/pexels-photo-1663421.jpeg?auto=compress&cs=tinysrgb&dpr=2&w=500"                     alt=""></li>         </ul>     </div> </body>  </html>