【问题标题】:Keep distance between 2 out of 3 elements equal when scaling window (responsive)缩放窗口时保持 3 个元素中的 2 个之间的距离相等(响应式)
【发布时间】:2014-09-11 22:11:33
【问题描述】:

有 2 个 img div 相互重叠,旁边还有一个 div 中的流体标题徽标 (.svg)。

HTML:

<header class="site-header" role="banner" itemscope="itemscope" itemtype="http://schema.org/WPHeader"><div class="wrap"><div id="menu_container"><img src="http://95.85.63.245/wp-content/uploads/dynamik-gen/theme/images/Hamburger_optimized.svg" alt="menu"  class="menu-btn" /><div class="menu_spacer"></div><img src="http://95.85.63.245/wp-content/uploads/dynamik-gen/theme/images/searchicon.png" alt="zoek"  class="search_icon" /></div>


<div class="title-area"><h1 class="site-title" itemprop="headline"><a href="http://95.85.63.245/"></a></h1></div><div class="vr_menu_logo"><a href="/"><img src="http://95.85.63.245/wp-content/uploads/dynamik-gen/theme/images/logo_VR_font.svg"></a></div>
</div></header>

CSS:

.vr_menu_logo{
  max-width:95%; 
  float:left;
  margin-right:20px;
  }

#menu_container {
  max-width: 5%;
  float: right;
  }

  .menu-btn{
 cursor: pointer;
 max-height: 30px;
 max-width: 30px;
 margin-top:2em;
}

.menu_spacer{height:4em;}

.search_icon{
  cursor: pointer;
  max-height: 24px;
  max-width: 24px;
  }


.site-header .wrap {
  width: 1260px;
  }
.site-header .wrap {
  margin: 0 auto;
  padding: 0;
  float: none;
  overflow: hidden;
}

目标: 缩放浏览器窗口将使小汉堡和搜索图标分别与徽标的顶部和底部保持水平。实际上,这 3 个单独的项目应该作为一个标志。

在此处查看 cssdesk:http://www.cssdesk.com/JDyYQ

我希望一个最大高度的间隔 div 可以解决问题,或者 display:table-cell; 但我无法让它工作,有人有想法吗? (javascript也可以是一个选项,但我认为CSS必须是可能的......)

【问题讨论】:

    标签: javascript jquery html css responsive-design


    【解决方案1】:

    这里是一个使用flexbox 的示例 - 请注意,这两个div 完全相同,只是有一个不同的height。这应该可以帮助您获得您想要实现的目标。显然,请检查您需要提供哪种浏览器支持,因为 flexbox 是一项相对较新的技术。

    http://jsfiddle.net/zn50mmnu/

    html:

    <div class="flexy f1">
        <span class="menu">M</span>
        <span class="search">S</span>
    </div>
    <div class="flexy f2">
        <span class="menu">M</span>
        <span class="search">S</span>
    </div>
    

    css:

    .flexy {
        float: right;
        clear: both;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        border: 2px solid red;
        margin: 10px;
    }
    
    .f1 {
        height: 50px;
    }
    
    .f2 {
        height: 90px;
    }
    
    .menu {
        background: red;
        width: 1em;
    }
    
    .search {
        background: blue;
        width: 1em;
    }
    

    【讨论】:

    • flexbox 还没有足够广泛的浏览器支持来使用imo
    • 喜欢 IE8 和 9? caniuse.com/#search=flexbox - 如果要支持它们,您可以随时使用它们。虽然覆盖率确实不是 100%,但 Flexbox 现在可以在所有现代浏览器中运行(IE9 不是其中之一)
    • 确实是的,但是添加回退并不能解决他在浏览器 IE 8 和 9 上的问题,而且当您是 Windows 用户并使用 Safari 时,您将使用 Safari 5,这也不是使用 flexbox 正常工作。我认为 flexbox,只有在你可以告诉用户使用不同的浏览器时才应该在 Intranet 中使用。
    • 谢谢卢卡。我要试试 flexbox。我同意使用旧浏览器的人运气不好。然后他们应该升级到 chrome、FF 或其他。
    • 我有点惊讶,顺便说一句,传统的 CSS 是不可能的。真的没有办法让一个带有大 div(徽标)的容器贴在左边,而两个较小的 div(菜单 + 搜索)贴在容器的右上和右下吗?
    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 2020-02-06
    相关资源
    最近更新 更多