【问题标题】:Float left is not working in my footer so it is not displaying inline properly向左浮动在我的页脚中不起作用,因此无法正确显示内联
【发布时间】:2016-08-11 00:09:41
【问题描述】:

我正在我的一个页面上测试页脚,以便我可以将它放在每个页面上,但它不能正确显示。目前,页脚 div 中的 div 都堆叠在一起,而不是彼此相邻。此外,div 仅显示应该显示的图像的一部分,而不是整个图像。我也不确定如何通过屏幕尺寸滑动来适当地进行这些更改,因为 div 不会都是统一的尺寸,但应该总是占据屏幕的整个宽度。我的 CSS 是:

.page{
    height: 100%;
    width: 100%;
    text-align: center;
    }
    .bgood-footer{
        width:100%;
        height: 20%;
        position: fixed;
        bottom: 0;
    }
    .mobile-app{
        float: left;
        background-image: url('../images-source/mobile-app.png');
        background-repeat: no-repeat;
    }
    .talk{
        float: left;
        background-image: url('../images-source/talk-to-us.png');
        background-repeat: no-repeat;
    }
    .careers{
        float: left;
        background-image: url('../images-source/careers.png');
        background-repeat: no-repeat;
    }
    .press{
        float: left;
        background-image: url('../images-source/press.png');
        background-repeat: no-repeat;
    }
    .blank{
        float: left;
        background-image: url('../images-source/blank.png');
        background-repeat: no-repeat;
    }
    .fb{
        float: left;
        background-image: url('../images-source/fb.png');
        background-repeat: no-repeat;
    }
    .yt{
        float: left;
        background-image: url('../images-source/yt.png');
        background-repeat: no-repeat;
    }
    .tw{
        float: left;
        background-image: url('../images-source/tw.png');
        background-repeat: no-repeat;
    }
    .ig{
        float: left;
        background-image: url('../images-source/ig.png');
        background-repeat: no-repeat;
    }
    .ordering-loc{
        float: left;
        background-image: url('../images-source/ordering-loc.png');
        background-repeat: no-repeat;
    }

我的 HTML 是:

<div class="page">
  <div class="bgood-footer">
    <a href="/mobile-app">
      <div class="mobile-app">Mobile Application</div>
    </a>
    <a href="/talk-to-us">
      <div class="talk">Talk To Us</div>
    </a>
    <a href="/careers">
      <div class="careers">Careers</div>
    </a>
    <a href="/press">
      <div class="press">Press</div>
    </a>
    <div class="blank"></div>
    <a href="https://www.facebook.com/bgood">
      <div class="fb">FB</div>
    </a>
    <a href="https://www.youtube.com/user/unclefaris">
      <div class="yt">YT</div>
    </a>
    <a href="https://twitter.com/b_good_">
      <div class="tw">TW</div>
    </a>
    <a href="https://twitter.com/b_good_">
      <div class="ig">IG</div>
    </a>
    <div class="ordering-loc">Ordering From Location</div>
  </div>
</div>

【问题讨论】:

  • div class blank 在这里可能是个坏主意。你想达到什么目的?你想让它分开项目吗?您可以在要分隔的元素上放置一个填充?
  • 这可能是个好主意,我得到了一张图片来剪切并变成几个按钮,这是唯一没有按钮的部分,这就是我将其标记为空白的原因。

标签: html css drupal


【解决方案1】:

这是因为您没有使用 clearfix。我查看了您的代码,但重复次数太多,我不想粘贴占位符来查看它的实际外观。根据您的描述,您的部分问题在于没有正确清除而漂浮。当您浮动元素时,您必须修复父后缀,因为浮动会破坏应用于块元素的自然块堆叠顺序。

我再重复一遍……将 clearfix 添加到 PARENT。 https://css-tricks.com/snippets/css/clear-fix/

您的第二个问题是您的页脚中的所有这些部分都在显示没有指定宽度的图像。因为我不知道这些图像很难说什么,但是如果您要展示这样的画廊,我的建议是,裁剪照片,使它们的大小都相同。添加

img{
width:100%;
}

到你的CSS顶部,

最后,您可以为页脚项目应用最大宽度和宽度值,以使其保持响应。 (确保它们不超过 100%)。我的意思是,页脚的所有小部分都可以是 width:10%;所以当它们排成一行时,所有的宽度都会增加到 100%(这不考虑边距和填充,所以要小心)

如果您希望我修改代码,请添加占位符图片,或将您的图片上传到图片托管网站,以便我可以在屏幕上看到它的样子。

更新:我添加了您的占位符图像并为您的 div 添加了宽度。这是您更新后的 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 */

.page{
    height: 100%;
    width: 100%;
    text-align: center;
    }
    .bgood-footer{
        width:100%;
        height: 20%;
        position: fixed;
        margin:0 auto;
        bottom: 0;
    }
    .mobile-app{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png-app.png');
        background-repeat: no-repeat;
    }
    .talk{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.pngo-us.png');
        background-repeat: no-repeat;
        width:120px;
    }
    .careers{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.pngs.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .press{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .blank{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .fb{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .yt{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .tw{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .ig{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
      width:120px;
    }
    .ordering-loc{
        float: left;
        background-image: url('https://i.imgur.com/zzP5pae.png');
        background-repeat: no-repeat;
width:200px;
    }

【讨论】:

  • imgur.com/a/ot32I 是我的占位符图像。所有这些目前都是占位图像。我将尝试解决您的问题,我已经清理了我的 CSS,但现在随机出现了一些问题,并且一些图像现在浮动到右侧,尽管事实上不应该有功能更改。我试图改变块的宽度,但这并不能帮助它们显示它们最终还是会被切掉。
  • 我也不明白你想让我用 clearfix 做什么。什么父div?你的意思是页脚div?还是整个页面的父 div?我已在不使用 clearfix 的情况下将此站点的其他部分内联。
  • 请更新您的代码,将图片网址粘贴到应在的位置。只需点击编辑并修复它,慢慢来,罗马不是一天建成的。抱歉,您将 .clearfix 应用于浮动元素的父级。因此,在您的示例中,您的浮动元素是页脚中的元素,因此您的页脚元素需要类“clearfix”(您还需要将 sn-p 粘贴到您的 css 中)您使用之间的空格将多个类添加到 div类
  • 我刚给你做了,试试我贴的css
  • 我插入了你问的代码,它仍然是垂直堆叠的,但现在在左角显示了更多的 div,但仍然不是全部。我可能给你链接了错误的图像。我已经重新上传了它们,其中也包括了它们的最终外观。感谢您迄今为止的帮助。
【解决方案2】:

https://jsfiddle.net/bwvanwrL/

我想你想要display: inline-block

a, .blank, .ordering-loc{
  display: inline-block;
  background-repeat: no-repeat;
}

您还应该尽量不要在您的 CSS 中重复自己。这使得它难以维护。

如果您希望项目间隔更大,我建议添加padding: 0 10px;

通常,我尽量远离float,因为它与页面上的其他元素不能很好地配合。有关更多详细信息,请参阅此答案。 Are floats bad? What should be used in its place

【讨论】:

  • 那根本不起作用,图像现在完全消失了,甚至以前可以看到的部分。 div 仍然都是堆叠的,现在出现的更少。我也有其他页面,因此经常重复代码,因为像使用 a 那样简化它会破坏更多页面而不是仅这一页。
  • 另外,从我可以找到的 inline-block 将在许多版本的 IE 上中断,我需要它在所有浏览器上工作。由于跨浏览器的兼容性问题,我不反对内联我只是被教导使用浮动而不是内联块,但此时我只想要任何修复。
  • 我尝试过使用宽度,并且总宽度加起来远低于 100%,它们仍然相互堆叠。我已经对照我的代码检查了您的代码,它们在功能上应该仍然完全相同,但不是,我包括:.mobile-app、.talk、.careers、.press、.blank、.fb、.yt .tw、.ig , .orderng-loc{ 显示:内联块;背景重复:不重复; } 而不是你的,它引用了所有的 a,这会影响比我想要的更多的东西。
  • 所以对于a标签,这只是一个例子。使用它来学习而不是直接将其复制到您的源代码中。这是使用 css 选择此场景的最佳方式。至于IE,需要支持什么版本。所有现代版本都支持内联块。至于图片,我没有你的图片,所以我不能显示它们。至于大于 100% 的宽度,则需要 -4px 的 margin-right。这是一个已知的内联块问题
  • 我应用了margin-right: -4px;对所有在线的 div 并且没有变化。我被告知尽可能多的浏览器,并被告知要包括 IE 7。至于图像,它们只是带有 div 名称的细条。感谢您尝试提供帮助。
猜你喜欢
相关资源
最近更新 更多
热门标签