用特殊行为使二级UL占100%

Make second level UL take 100% with special behaviour

本文关键字:二级 UL 100%      更新时间:2023-09-26

我正试图使自定义树视图通过我的网站上的不同类别购物。你可以看到我想在小提琴上做什么。我需要第二级UL在不移动行中其他li的情况下占用当前行下的所有空间。

我的代码

HTML:

<ul Class="CategoriesContainer">
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>
<li Class="CategoryButton">
    <div class="UpperHalf">
        <span class="helper"></span>
        <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png"/>
    </div>    
    <div class="LowerHalf">
        <span class="CategoryText">Shoes</span>
    </div>  
    <ul Class="TreeContainer">
        <li>Man shoes</li>
        <li>Woman shoes</li>
    </ul>
</li>

CSS:

.CategoriesContainer{
width:90%;
display:Block;
list-style:none;
}
.CategoryButton{
    height:130px;
    width:130px;
    display:inline-block;
    margin-left:5px;
    margin-top:5px;
    background-color:lightgray;
     text-align:center;
    cursor:pointer;
    list-style-type:none;
}
.helper {
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
.UpperHalf {
    display:block;
    height:50%;
    width:100%;
}
.LowerHalf {
    display:block;
    height:50%;
    width:100%;
}
.CategoryImage
{
   height:40px;
   width:40px;
    vertical-align:middle;
}
.CategoryText {
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}
.TreeContainer {
    width:100%;
    display:none;
}
.Toggled
{
   left:0;
   top:0;
   padding:0; 
   margin:0; 
   white-space:nowrap;
   display:block;
   background-color:green;
}
Javascript

$(".CategoryButton").click(function () {
var Container = $(this).find(".TreeContainer")[0];
if ($(Container).hasClass("Toggled"))
{
    $(Container).removeClass("Toggled");
}   
else
{
    $(Container).addClass("Toggled");
}
});

编辑这是我正在做的事情的一个模型。

你可以添加:

.CategoryButton{
    min-height: 130px;  
    vertical-align:top;
}

现在的问题是,你的子类别不会显示,因为你已经给了容器一个固定的高度(130px),而2 divs里面得到所有的高度(每个50%的高度),所以没有你的子类别的空间。它将被显示(溢出是可见的),但不会移动下面的元素,因为容器的高度总是130px。

你可以解决这个改变高度为min-height:130px;和高度是一个固定的数量添加height:65px的元素里面。这样,当显示子类别时,容器高度将发生变化:

JSFIDDLE

您可以将float: left添加到ul元素中,也可以添加一些margin-bottom以正确显示它们:

$(".CategoryButton").click(function() {
  var Container = $(this).find(".TreeContainer")[0];
  if ($(Container).hasClass("Toggled")) {
    $(Container).removeClass("Toggled");
  } else {
    $(Container).addClass("Toggled");
  }
});
.CategoriesContainer {
  width: 90%;
  display: Block;
  list-style: none;
}
.CategoryButton {
  height: 130px;
  width: 130px;
  display: inline-block;
  margin-left: 5px;
  margin-top: 5px;
  background-color: lightgray;
  text-align: center;
  cursor: pointer;
  list-style-type: none;
  margin-bottom: 40px;/*add margin-bottom*/
}
.helper {
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
.UpperHalf {
  display: block;
  height: 50%;
  width: 100%;
}
.LowerHalf {
  display: block;
  height: 50%;
  width: 100%;
}
.CategoryImage {
  height: 40px;
  width: 40px;
  vertical-align: middle;
}
.CategoryText {
  display: inline-block;
  height: 100%;
  vertical-align: middle;
}
.TreeContainer {
  width: 100%;
  display: none;
}
.Toggled {
  left: 0;
  top: 0;
  padding: 0;
  margin: 0;
  white-space: nowrap;
  display: block;
  background-color: green;
  float: left;/*add float left*/
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul Class="CategoriesContainer">
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
  <li Class="CategoryButton">
    <div class="UpperHalf">
      <span class="helper"></span>
      <img class="CategoryImage" src="http://cdn.1001freedownloads.com/icon/thumb/390973/shoes-icon.png" />
    </div>
    <div class="LowerHalf">
      <span class="CategoryText">Shoes</span>
    </div>
    <ul Class="TreeContainer">
      <li>Man shoes</li>
      <li>Woman shoes</li>
    </ul>
  </li>
</ul>