你如何围绕浮动元素进行div包装?

时间:2018-04-27 02:43:14

标签: html css

我想要什么

我正在尝试为移动网站创建导航栏。我想要一个深蓝色的导航div来存放一个菜单按钮和一个搜索表单。

我得到了什么

我的包装器div只显示为一条细的深蓝色线条,导航div只存在于包装器外部。

代码

<div id="mobileNavBar">

    <div style="float:left;width:20%">
        <span class="menu-trigger"><i class="fas fa-bars menuFA fa-2x"></i> 
        </span>
    </div>

    <div style="float:right;width:80%"> 
        <?php get_search_form(); ?>
    </div>
<div style="clear:both"></div>
</div>

这是导航div的CSS

#mobileNavBar{
        background-color: #4d94ff; 
        border:1px solid #4d94ff;
        height:auto;
    }

图片

下面是我的移动网站的图片,忽略了大黑盒子,这只是我隐藏的内容。那里实际上有一个徽标和书面内容。

正如您所看到的,我的导航div是一条细的深蓝色线条,导航内容位于下方。

Mobile Site

我尝试了什么

在看了这个网站上的类似问题后,我被引导相信问题是我的元素是浮动的,因此我需要添加:

<div style="clear:both"></div>

然而,这似乎并没有产生影响。

如何才能让导航div围绕菜单和搜索栏的图像进行包装?或者更确切地说,如何让div包围浮动div?

3 个答案:

答案 0 :(得分:1)

有一个CSS hack用于清除所有内部浮动。 添加类&#34; clearfix&#34;你的div:

<div id="mobileNavBar" class="clearfix">

  <div style="float:left;width:20%">
    <span class="menu-trigger"><i class="fas fa-bars menuFA fa-2x"></i> 
    </span>
  </div>

  <div style="float:right;width:80%"> 
    <?php get_search_form(); ?>
  </div>
  <div style="clear:both"></div>
</div>

CSS代码:

.clearfix {
   overflow: auto;
}
.clearfix::after {
  content: "";
  clear: both;
  display: table;
}

因此,这将清除现有div中的所有浮点数。 您可以使用div id&#39; mobileNavBar&#39;创建样式。同样,但最好创建一个可重用的类。

请检查https://www.w3schools.com/howto/howto_css_clearfix.asp以获得更清晰的信息。

答案 1 :(得分:1)

将以下类应用于浮动元素parent。

.clear:after{
   content: ' ';
   display: table;
   clear: both
}

或者您可以在HTML中添加额外的元素

<div> 
  <div style="float: left;">Sidebar</div> 
 <div style="float: right;">Content</div> 
  <div style="clear: both;"></div><!-- Clear the float -->
 </div>

以上解决方案解决了您的问题但我的意见是您可以使用 flex 网格进行此类布局。

答案 2 :(得分:1)

花车可能很棘手。你能用flexbox吗?

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <div id="guestWrap"> <div class="formField guestName" id="guestName"> <label class="label">What is your guest's name?</label> <input type="text" class="input" name="guest1" id="guest1"> </div> </div> <div id="addGuest"> <span class="guestIncrease">Add another guest</span> </div>会使这更简单:)

的CSS:

display:flex

HTML:

#mobileNavBar {
    background-color: #4d94ff;
    border: 1px solid #4d94ff;
    display: flex;
}

enter image description here *未显示轮廓和填充的标记