swiper 多列布局中左侧内容溢出怎么解决?

使用swiper时有没有遇到过,如果是多列布局,左侧会溢出,导致左侧容器中的内容下沉。如下图我使用的是display:table做了一个两列的布局,请无视container的大小,因为图片宽度设定的是640px,外面的table设定的是100%,所以才会这样。
图片描述
HTML结构

<div class="table">
    <div class="left">
        <ul>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
            <li>这是测试文本</li>
        </ul>
     </div>
    <div class="container">
          <div id="full_feature" class="swipslider">
            <ul class="sw-slides">
             <li class="sw-slide">
                <img src="img/img-1.jpg" alt="Summer beach concept">
              </li>
              <li class="sw-slide">
                <img src="img/img-2.jpg" alt="Lang from Yie Ar Kung Fu">
              </li>       
             </ul>
          </div>      
      </div>
</div>

CSS样式

    .table{
        display:table;
        border:solid #ddd 1px;
        border-collapse:collapse;
        position:relative;
        width:100%;
    }
    .left{
        display:table-cell;
        border:solid #ddd 1px;
        position:relative;
        width:40%;
    }
    .container{
        display:table-cell;
        border:solid #ddd 1px;
        margin: 0 auto;
        max-width: 640px;
        position:relative;
    }
    .swipslider {
        position: relative;
        overflow: hidden;
        display: block;
        padding-top: 10%;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none; 
    }
    .swipslider ul.sw-slides {
        width: 100%;
        height: 100%;
        display: block;
        position: absolute;
        bottom: 0; 
        padding: 0;
        list-style: none;
        white-space: nowrap;
        font-size: 0;
        -webkit-transform: translateX(0);
        transform: translateX(0);
    }
    .swipslider li.sw-slide {
        width: 100%;
        height: 100%;
        position: relative; 
        margin: auto;
        display: inline-block;
    }
    
    .swipslider .sw-slide > img {
        position: absolute;
        top: 50%;
        left: 50%;
        -webkit-transform: translate(-50%, -50%);
        transform: translate(-50%, -50%);
        max-height: 100%;
        max-width: 100%;
        margin-left: auto;
        margin-right: auto;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none; 
    }
    .sw-next,.sw-prev {
        height: 50px;
        width: 50px;
        text-align: center;
        vertical-align: middle;
        position: absolute;
        line-height: 50px;
        font-size: 30px;
        color:#404040;
        font-weight:bold;
        top: 40%;
        border-radius:5px 0 0 5px;
        background-color: rgba(255, 255, 255, 0);
        text-decoration: none;
        transition: all .2s ease-out;
        cursor: pointer;
        -webkit-user-select: none;
        -moz-user-select: none;
        -ms-user-select: none;
        user-select: none; 
    }
    .sw-next:hover,.sw-prev:hover {
        background-color: rgba(255, 255, 255, 0.74); 
        color:#333;
    }
    
    .sw-prev {
        right: 0; 
    }
    
    .sw-bullet {
        position: absolute; 
        /*position:relative;*/
        bottom: 15%;
        list-style: none;
        display: block;
        width: 100%;
        text-align: center;
        padding: 0;
        margin: 0;
    }
    .sw-bullet li {
        width: 25px;
        height: 3px;
        background-color: rgba(160, 160, 160, 0.53);
        display: inline-block;
        cursor: pointer;
        transition: all .2s ease-out; 
    }
    .sw-bullet li:hover {
        background-color: rgba(255, 255, 255, 0.74); 
    }
    .sw-bullet li.active {
        background-color: rgba(255, 255, 255, 0.5);
        box-shadow: 0 0 2px rgba(160, 160, 160, 0.53); 
  }
    .sw-bullet li:not(:last-child) {
        margin-right: 5px; 
  }

试着把container设置为overflow:hidden 没用,而ul.sw-slides又不能设置overlow。
主要问题就是包裹li的ul的尺寸超出了,正好是一个图片的宽度。
图片描述

阅读 4.3k
1 个回答

在你的.left下加一个属性vertical-align: top; 你可以仔细看看这篇文章的前半部分。。和你的问题简直神似
传送门

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏