flex-container.min-width:flex-items.min-width?

Posted

技术标签:

【中文标题】flex-container.min-width:flex-items.min-width?【英文标题】:flex-container.min-width: flex-items.min-width? 【发布时间】:2018-02-26 09:35:36 【问题描述】:

如果我调整窗口的大小小于最小宽度弹性项目的总和(此处为 653 像素),则会出现一个滚动条,但弹性框采用窗口的当前大小并且弹性项目不会获得红色背景,我想知道如何在不输入特定值的情况下为 flexbox 容器设置最小宽度

 #topbanner  min-width: 653px; 

我不想缩小弹性项目,而是通过 css 方法来实现:

flexbox.min-width = (flex_items_min_width += flex-item[n].min-width)

<div id="main">
<div id="topbanner">
    <div id="topbanner_content">
        <div id="topbanner_icon">
            <a href="#">
                <img src="" id="icon"/>
            </a>
        </div>
        <div id="topbanner_searchbar">
            <form method="get" action="">
                <input id="topbanner_searchbar_input" type="text" name="text" placeholder="Search..."/>
                <input type="submit" hidden />
            </form>
        </div>
        <div id="main_button_unlogged">
            <a href="#">Login</a>
            <a href="#">Register</a>
        </div>
    </div>
</div>

https://codepen.io/papawa/pen/oGjMaK/

【问题讨论】:

对不起;我对你真正在寻找什么感到有点困惑。您是说希望在缩小宽度时将“登录”和“注册”下拉到搜索栏的下方,而不是从页面右侧推开?跨度> codepen.io/anon/pen/GMpXNm 更新帖子,对不起我的英语和解释 【参考方案1】:

flexbox 采用窗口的当前大小,而 flex-items 不采用 获得红色背景,... ...我怎样才能为 flex 容器制作 min-width 无需输入特定值

要解决您将main 设为内联元素的问题,因此它会随内容增长,然后使其表现 为一个块(至少占用其父级的全宽),请给出它min-width: 100%

#main

    display:inline-flex;        /*  changed  */
    min-width: 100%;            /*  added  */
    ...

Updated codepen

堆栈sn-p

*

    box-sizing: border-box;


body

    margin:0;
    padding: 0;
    background-color: green;


#main

    display:inline-flex;
    min-width: 100%;
    flex-flow:column;
    margin: 0;
    padding: 0;


/* TOPBANNER */
#topbanner

    flex: 1 1 auto;
    margin: 0;
    padding: 20px;
    background-color: red;


#topbanner_content

    display: flex;
    align-items: center;


#topbanner_icon

    background-color: black;
    flex: 0 0 auto;
    height: 120px;
    width: 120px;


#topbanner_searchbar

    flex: 1 1 0;
    display: flex;


#topbanner form

    margin: 0;
    flex: 1 1 0;
    display: flex;


#topbanner_searchbar_input

    height: 40px;
    
    padding-left: 40px;
    
    flex: 1 1 auto;
    
    border-style: none;
    border-radius: 5px;
    
    font-size: 20px;
    font-family: sans-serif;
    color: grey;

/* UNLOGGED */
#main_button_unlogged

    flex: 0 0 auto;
    
    width: 230px;
    display:flex;


#main_button_unlogged a

    flex: 1 1 0;
    
    display: flex;
    
    align-items: center;
    justify-content: center;
    
    margin: 0px 2px;
    
    height: 40px;
    
    border: solid 1px;
    border-radius: 5px;
    
    color: ghostwhite;
    transition: color .15s ease-in-out;
    
    text-decoration: none;
    
    cursor: pointer;
<div id="main">
  <div id="topbanner">
    <div id="topbanner_content">
      <div id="topbanner_icon">
        <a href="#">
          <img src="" id="icon" />
        </a>
      </div>
      <div id="topbanner_searchbar">
        <form method="get" action="">
          <input id="topbanner_searchbar_input" type="text" name="text" placeholder="Search..." />
          <input type="submit" hidden />
        </form>
      </div>
      <div id="main_button_unlogged">
        <a href="#">Login</a>
        <a href="#">Register</a>
      </div>
    </div>
  </div>
</div>

【讨论】:

以上是关于flex-container.min-width:flex-items.min-width?的主要内容,如果未能解决你的问题,请参考以下文章