ul浮动左侧列表中的边框底部问题,​​具有打开的框功能

时间:2016-11-16 15:41:21

标签: javascript jquery html css

我之前问了一个问题:

Li float left, length dynamic : no border-bottom on the last row

感谢您的回答,但是,当我添加“打开框功能”时,边框底部出现问题。

这是代码:

$('li').click(function() {
  if (!$('div.' + $(this).index()).length) {
    for (a = $('li').length - 1; a >= 0; a--) {
      if ($('li').eq(a).offset().top == $(this).offset().top) {
        $('li').eq(a).after('<div class="' + $(this).index() + '">' + $(this).html() + '</div>');
        $('div:not(.' + $(this).index() + ')').remove();
        break;
        
        /*$('div.' + $(this).index()).slideDown(200);
        $('div:not(.' + $(this).index() + ')').slideUp(200, function() {
          $(this).remove();
        });*/
      }
    }
  } else {
    $('div.' + $(this).index()).slideUp(200, function() {
      $(this).remove();
    });
  }
})
ul {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0
}

li {
  display: block;
  width: 33%;
  height: 120px;
  float: left;
  margin: 0;
  padding: 0;
  border-bottom: #ccc 1px solid;
  box-sizing: border-box;
  background: #fee;
}

ul:after {
  content: '';
  display: block;
  clear: both;
}

/*li.no-border {
  border-bottom: 0px;
}*/

li:nth-last-child(4) ~ li:nth-child(3n+1), 
li:nth-last-child(4) ~ li:nth-child(3n+1) ~ li{
  border-bottom: 0px; 
}

div {
  background: #ccc;
  height: 150px;
  width: 100%;
  clear: both;
  display: block
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
</ul>

请帮忙。感谢。

1 个答案:

答案 0 :(得分:0)

也许你可以绘制一个border-top(或阴影)并通过负边距(or position:relative or translate() )隐藏第一行上的那些并溢出。

ul {
overflow:hidden;
}

li {
  margin:-1px 0 0;
  box-shadow:0 -1px #ccc;

}

下面的演示

$('li').click(function() {
  if (!$('div.' + $(this).index()).length) {
    for (a = $('li').length - 1; a >= 0; a--) {
      if ($('li').eq(a).offset().top == $(this).offset().top) {
        $('li').eq(a).after('<div class="' + $(this).index() + '">' + $(this).html() + '</div>');
        $('div:not(.' + $(this).index() + ')').remove();
        break;
        
        /*$('div.' + $(this).index()).slideDown(200);
        $('div:not(.' + $(this).index() + ')').slideUp(200, function() {
          $(this).remove();
        });*/
      }
    }
  } else {
    $('div.' + $(this).index()).slideUp(200, function() {
      $(this).remove();
    });
  }
})
ul {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  overflow:hidden;
}
li {
  display: block;
  width: 33%;
  height: 120px;
  float: left;
  padding: 0;     
  margin:-1px 0 0px;
  box-shadow:0 -1px #ccc;
  box-sizing: border-box;
  background: #fee;
}

ul:after {
  content: '';
  display: block;
  clear: both;
}

div {
  background: #def;
  height: 150px;
  width: 100%;
  clear: both;
  display: block
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>1</li>
  <li>2</li>
  <li>3</li>
  <li>4</li>
  <li>5</li>
  <li>6</li>
  <li>7</li>
  <li>8</li>
</ul>