【问题标题】:White-Space: Nowrap float issue空白:Nowrap 浮动问题
【发布时间】:2017-05-08 04:32:29
【问题描述】:

我有一个希望是简单的问题,但我只是在脑海中过于复杂了。

Here is a Fiddle to demonstrate my issue.

在上面的 Fiddle 中,您将看到一个弹出菜单设置。在顶部选项中,您将看到一个放大的第一个选项,其中浮动已损坏。这就是我的问题所在。 我需要这些元素并排浮动,而不会破坏包含它们的列表容器。

我知道white-space:nowrap 导致该容器空间中断,但是,每当我尝试删除该元素时,我似乎无法让我的浮动兑现。我确信这是我的一个简单的失误,因为我想到了围绕它的事情,但是任何在这方面的进步都是值得赞赏的,希望对某人来说很容易。

CSS:

.clearfix:after {
     visibility: hidden;
     display: block;
     font-size: 0;
     content: " ";
     clear: both;
     height: 0;
     }
.clearfix { display: inline-block; }
/* start commented backslash hack \*/
* html .clearfix { height: 1%; }
.clearfix { display: block; }
/* close commented backslash hack */

#nav{margin:0;padding:0;position:relative;float:left;}
#nav li {list-style:none;}
#nav a {
    color:#fff;
    display:block;
    line-height:2.4;
    padding:0 1em;
    text-decoration:none; 
    border-bottom:1px solid #eee;
}
      /* FLYOUT */
      .sub  {
        top:0;
        margin:0;
        padding:0;
        left:100%;
        display:none;
        min-height:100%;
        position:absolute;
        white-space:nowrap;
        border-left:2px solid #eee;
      }
      #nav li:hover .sub {
        display:block;
      }

        #nav li:hover .sub .sub {
          display:none;
        }

          #nav .sub li:hover .sub{
            display:block;
          }

      .sub a:hover {
        color:#fff;
        background:#333; 
      }
      
      .sub img { min-width:120px; float:left; }
      .sub .content { float:left; }


/*-- COLORS NOT NEEDED ON LIVE--*/
.first{background:#aaa;}
.second {background:#bbb;}
.third {background:#ccc;}
.fourth {background:#ddd;}
.fifth {background:#aaa;}
.sixth {background:#bbb;}
.seventh {background:#ccc;}
.eighth {background:#ddd;}
.nineth {background:#aaa;}
.tenth {background:#bbb;}
.all {background:#000}
<div id="nav">
    <li><a class="first" href="#">Level 1 Option</a>
      <ul class="sub first">   
          <li class="clearfix"><a href="#">
            <div class="float">
            <img src="https://placeholdit.imgix.net/~text?txtsize=20&txt=120%C3%9780&w=120&h=80" alt=""></div>
            <div class="">
              <h5>This will be a title</h5>
              <p>
                <strong>Sub-title</strong><br>
                Specs<br>
                <strong>Sub-title</strong><br>
                Specs
              </p>
            </div>
          </a>
            <ul class="sub first">   
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
            </ul>  
          </li>
          <li><a href="#">Option 2</a>
            <ul class="sub first">   
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
            </ul>  
          </li>
      </ul>
      </li>
    <li><a class="second" href="#">Level 1 Option</a>
      <ul class="sub second">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>
      </ul>
    </li>
    <li><a class="third" href="#">Level 1 Option</a>
      <ul class="sub third">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>
      </ul>
    </li>
    <li><a class="fourth" href="#">Level 1 Option</a>
      <ul class="sub fourth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="fifth" href="#">Level 1 Option</a>
      <ul class="sub fifth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="sixth" href="#">Level 1 Option</a>
      <ul class="sub sixth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="seventh" href="#">Level 1 Option</a>
      <ul class="sub seventh">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="eighth" href="#">Light Duty</a>
      <ul class="sub eighth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="ninth" href="#">Level 1 Option</a>
      <ul class="sub ninth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="tenth" href="#">Level 1 Option</a>
      <ul class="sub tenth">   
        <li><a href="#">Option 1</a></li>
        <li><a href="#">Option 2</a></li>        
      </ul>
    </li>
    <li><a class="all" href="#">View All</a>
    </li>
</div>

【问题讨论】:

  • 道歉。已更新。
  • 只需将类 clearfix 分配给已分配类 float 的相同 div,以包装您的 120x80 图像。它会将内容推送到图像下方。这能解决您的问题吗?
  • @Pegues 不,它浮动在正确的位置。我希望容器继续包装它。
  • 如果我的问题正确,请检查one
  • 这是你想要的效果吗? jsfiddle.net/grbywy3r

标签: html css flyout


【解决方案1】:

从浮动 div 中的图像中删除浮动左侧。并在那里添加一些边距。

CSS:

.sub img {
   min-width: 120px;
   /* float: left; */ //Remove this line
   margin-top: 10px;
}

【讨论】:

  • 我正要给出完全相同的修复!
  • 我希望图像漂浮在文本旁边。没有下面的文字。
  • 在这种情况下,您需要删除图像的最小宽度以便为该文本腾出合适的位置。对 div float 和 text div 使用 'display: inline-block'。并使它们宽度为 50%。 @Cutter
【解决方案2】:

看到这个fiddle

实现所需布局的一种方法是为图像容器和标题/子标题的容器设置inline-block

vertical-align: top; 是确保两个容器在其顶部边缘对齐所必需的。

为了简单起见,我保留了您现有的 float 类。 (注意这个类需要添加到标题/子标题/规范的容器中。)

.float {
   display: inline-block;
   vertical-align: top;
}

【讨论】:

    【解决方案3】:

    请检查这段代码,我想你正在寻找这个,你不需要将宽度设置为.sub 我已经添加了新的部门并添加了一些属性

    .float , .inline-block {
       display:inline-block;
       vertical-align:top;
    }
    

    .clearfix:after {
    	visibility: hidden;
    	display: block;
    	font-size: 0;
    	content: " ";
    	clear: both;
    	height: 0;
    }
    .clearfix {
    	display: inline-block;
    }
    /* start commented backslash hack \*/
    * html .clearfix {
    	height: 1%;
    }
    .clearfix {
    	display: block;
    }
    /* close commented backslash hack */
    
    #nav {
    	margin: 0;
    	padding: 0;
    	position: relative;
    	float: left;
    }
    #nav li {
    	list-style: none;
    }
    #nav a {
    	color: #fff;
    	display: block;
    	line-height: 2.4;
    	padding: 0 1em;
    	text-decoration: none;
    	border-bottom: 1px solid #eee;
    }
    /* FLYOUT */
    .sub {
    	top: 0;
    	margin: 0;
    	padding: 0;
    	left: 100%;
    	display: none;
    	min-height: 100%;
    	position: absolute;
    	white-space: nowrap;
    	border-left: 2px solid #eee;
    }
    #nav li:hover .sub {
    	display: block;
    }
    #nav li:hover .sub .sub {
    	display: none;
    }
    #nav .sub li:hover .sub {
    	display: block;
    }
    .sub a:hover {
    	color: #fff;
    	background: #333;
    }
    .sub img {
    	min-width: 120px;
    	float: left;
    }
    .sub .content {
    	float: left;
    }
    /*-- COLORS NOT NEEDED ON LIVE--*/
    .first {
    	background: #aaa;
    }
    .second {
    	background: #bbb;
    }
    .third {
    	background: #ccc;
    }
    .fourth {
    	background: #ddd;
    }
    .fifth {
    	background: #aaa;
    }
    .sixth {
    	background: #bbb;
    }
    .seventh {
    	background: #ccc;
    }
    .eighth {
    	background: #ddd;
    }
    .nineth {
    	background: #aaa;
    }
    .tenth {
    	background: #bbb;
    }
    .all {
    	background: #000
    }
    .float , .inline-block {
    	display:inline-block;
    	vertical-align:top;
    }
    <div id="nav">
      <li><a class="first" href="#">Level 1 Option</a>
        <ul class="sub first">
          <li class="clearfix"><a href="#">
            <div class="float"> <img src="https://placeholdit.imgix.net/~text?txtsize=20&txt=120%C3%9780&w=120&h=80" alt=""></div>
            <div class="inline-block"><h5>This will be a title</h5></div>
            <div class="">
              <p> <strong>Sub-title</strong><br>
                Specs<br>
                <strong>Sub-title</strong><br>
                Specs </p>
            </div>
            </a>
            <ul class="sub first">
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
              <li><a href="#">Option 1</a></li>
            </ul>
          </li>
          <li><a href="#">Option 2</a>
            <ul class="sub first">
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
              <li><a href="#">Option 2</a></li>
            </ul>
          </li>
        </ul>
      </li>
      <li><a class="second" href="#">Level 1 Option</a>
        <ul class="sub second">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="third" href="#">Level 1 Option</a>
        <ul class="sub third">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="fourth" href="#">Level 1 Option</a>
        <ul class="sub fourth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="fifth" href="#">Level 1 Option</a>
        <ul class="sub fifth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="sixth" href="#">Level 1 Option</a>
        <ul class="sub sixth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="seventh" href="#">Level 1 Option</a>
        <ul class="sub seventh">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="eighth" href="#">Light Duty</a>
        <ul class="sub eighth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="ninth" href="#">Level 1 Option</a>
        <ul class="sub ninth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="tenth" href="#">Level 1 Option</a>
        <ul class="sub tenth">
          <li><a href="#">Option 1</a></li>
          <li><a href="#">Option 2</a></li>
        </ul>
      </li>
      <li><a class="all" href="#">View All</a> </li>
    </div>

    【讨论】:

    • 感谢您的回答Jishnu。这个答案也是可以接受的,但是图瑞刚刚在上面的 cmets 中击败了你。
    • @Cutter 没问题,我的英语不太好所以
    猜你喜欢
    • 1970-01-01
    • 2019-05-16
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-21
    • 2016-11-08
    • 1970-01-01
    相关资源
    最近更新 更多