【问题标题】:Resizing div to width of contained images将 div 调整为包含图像的宽度
【发布时间】:2017-10-23 13:37:31
【问题描述】:

所以我正在创建一个从左到右滚动的画廊。我想要做的是让保存图像的 div 调整为图像的组合宽度,这样你就不能滚动到最终图像变成虚无。目前我有一个固定的宽度。用 inline-block 替换它不起作用(可能是因为 .country_holder 的 70% 宽度正在强制阻止行为?)这是我当前的代码:

    <ul>
    <li class="country_holder" id="c_scotland">
      <div class ="g_title" id="g_scotland"><h6>Scotland</h6></div>
      <div class="gallery_holder">
        <ul>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-1.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-2.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-3.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-4.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-5.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-6.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-7.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-8.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-9.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-10.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-11.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-12.jpg" height="150"></li>
          <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-13.jpg" height="150"></li>
         </ul>
      </div>
    </li>
    </ul>

CSS:

.country_holder {
  position:relative;
  margin-top:2rem;
  margin-bottom:2rem;
  width:70%;
  left:18.5%;
  display:block;
  overflow-y:scroll;
  overflow-x:hidden;
  overflow:-moz-scrollbars-horizontal;
  border:1px solid black;
}

.gallery_holder{
  width:4000px;
  height:150px;
  position:relative;
  background-color:none;
}

li.gallery_img{
  padding-right:2px;
  float:left;
  display:inline-block;
  vertical-align:top;
  height:150px;
}

【问题讨论】:

    标签: css resize


    【解决方案1】:

    纯 CSS 解决方案:

    .country_holder {
      position: relative;
      margin-top: 2rem;
      margin-bottom: 2rem;
      left: 18.5%;
      width: 70%;
      display: block;
      overflow-y: hidden;
      overflow-x: scroll;
      overflow: -moz-scrollbars-horizontal;
      border: 1px solid black;
    }
    
    .gallery_holder {
      white-space: nowrap;
      height: 150px;
      position: relative;
      background-color: none;
    }
    
    li.gallery_img {
      padding-right: 2px;
      display: inline-block;
      white-space:nowrap;
      vertical-align: top;
      height: 150px;
    }
    <ul>
      <li class="country_holder" id="c_scotland">
        <div class="g_title" id="g_scotland">
          <h6>Scotland</h6>
        </div>
        <div class="gallery_holder">
          <ul>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-1.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-2.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-3.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-4.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-5.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-6.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-7.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-8.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-9.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-10.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-11.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-12.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-13.jpg" height="150"></li>
          </ul>
        </div>
      </li>
    </ul>

    或者您可能只想滚动图片,而不是标题:

    .country_holder {
      position: relative;
      margin-top: 2rem;
      margin-bottom: 2rem;
      left: 18.5%;
      width: 70%;
      display: block;
      border: 1px solid black;
    }
    
    .gallery_holder {
      width: 100%;
      overflow-x: scroll;
      overflow-y: hidden;
    }
    
    .gallery_holder ul {
      white-space: nowrap;
      height: 150px;
      position: relative;
      background-color: none;
    }
    
    li.gallery_img {
      padding-right: 2px;
      display: inline-block;
      white-space:nowrap;
      vertical-align: top;
      height: 150px;
    }
    <ul>
      <li class="country_holder" id="c_scotland">
        <div class="g_title" id="g_scotland">
          <h6>Scotland</h6>
        </div>
        <div class="gallery_holder">
          <ul>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-1.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-2.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-3.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-4.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-5.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-6.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-7.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-8.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-9.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-10.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-11.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-12.jpg" height="150"></li>
            <li class="gallery_img"><img src="Assets/Images/Gallery/ScotlandGallery-13.jpg" height="150"></li>
          </ul>
        </div>
      </li>
    </ul>

    【讨论】:

    • @Scott 很高兴为您提供帮助,请阅读 when someone answers 以了解当有人回答您的问题时您应该怎么做 :)
    • 再次感谢 - 没有意识到这一点!
    【解决方案2】:

    请试试这个:

    var gallery_holder_width = 0;
    jQuery('.gallery_holder ul li.gallery_img').each(function(i, el) {
      gallery_holder_width += jQuery(el).width() + 2 /* padding-right */;
    });
    jQuery('.gallery_holder').width(gallery_holder_width);
    .country_holder {
      position:relative;
      margin-top:2rem;
      margin-bottom:2rem;
      width:70%;
      left:18.5%;
      display:block;
      overflow-y:scroll;
      overflow-x:hidden;
      overflow:-moz-scrollbars-horizontal;
      border:1px solid black;
    }
    
    .gallery_holder{
      width:4000px;
      height:150px;
      position:relative;
      background-color:none;
    }
    .gallery_holder ul{
      padding: 0
    }
    .gallery_holder ul li.gallery_img{
      box-shadow: 0 0 5px rgba(0,0,0,0.2) inset; /* added just for display */
      padding-right:2px;
      float:left;
      display:inline-block;
      vertical-align:top;
      height:150px;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <ul>
        <li class="country_holder" id="c_scotland">
          <div class ="g_title" id="g_scotland"><h6>Scotland</h6></div>
          <div class="gallery_holder">
            <ul>
              <li class="gallery_img" style="width: 50px"></li>
              <li class="gallery_img" style="width: 150px"></li>
              <li class="gallery_img" style="width: 100px"></li>
              <li class="gallery_img" style="width: 80px"></li>
              <li class="gallery_img" style="width: 120px"></li>
              <li class="gallery_img" style="width: 200px"></li>
              <li class="gallery_img" style="width: 50px"></li>
              <li class="gallery_img" style="width: 30px"></li>
              <li class="gallery_img" style="width: 40px"></li>
              <li class="gallery_img" style="width: 50px"></li>
              <li class="gallery_img" style="width: 90px"></li>
              <li class="gallery_img" style="width: 140px"></li>
              <li class="gallery_img" style="width: 70px"></li>
             </ul>
          </div>
        </li>
        </ul>

    【讨论】:

    • 感谢您的回复 - 这看起来很棒,但我将使用 CSS 版本运行。万事如意!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-21
    相关资源
    最近更新 更多