相关疑难解决方法(0)

当flexbox项目以列模式换行时,容器不会增加其宽度

我正在研究嵌套的flexbox布局,它应该如下工作:

最外层(ul#main)是一个水平列表,当添加更多项时,它必须向右扩展.如果它变得太大,应该有一个水平滚动条.

#main {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    overflow-x: auto;
    /* ...and more... */
}
Run Code Online (Sandbox Code Playgroud)

此list(ul#main > li)的每个项目都有一个header(ul#main > li > h2)和一个内部列表(ul#main > li > ul.tasks).此内部列表是垂直的,应在需要时包装到列中.当包装到更多列时,其宽度应该增加,以便为更多项目腾出空间.此宽度增加也应适用于外部列表的包含项.

.tasks {
    flex-direction: column;
    flex-wrap: wrap;
    /* ...and more... */
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当窗口的高度太小时内部列表不会换行.我已经尝试了很多篡改所有的flex属性,试图仔细遵循CSS-Tricks的指导,但没有运气.

这个JSFiddle显示了我到目前为止所拥有的内容.

预期结果 (我想要的):

我想要的输出

实际结果 (我得到的):

我目前的输出

较旧的结果 (我在2015年得到的):

我的旧输出

UPDATE

经过一番调查,这开始看起来像一个更大的问题.所有主流浏览器的行为方式都相同,而且与我的嵌套Flexbox设计无关.更简单的flexbox列布局拒绝在项目换行时增加列表的宽度.

其他的jsfiddle清楚地表明了问题.在当前版本的Chrome,Firefox和IE11中,所有项目都正确包装; 列表的高度在row模式中增加,但其宽度在column模式下不会增加.此外,在更改column模式的高度时,根本没有立即回流元素,但存在row模式.

然而,官方规范 …

html css css3 flexbox

143
推荐指数
4
解决办法
4万
查看次数

Flexbox代码适用于除Safari之外的所有浏览器.为什么?

带有列表标签的网格列,我需要每3列以正确的顺序显示,并为每个额外的HTML列表元素启用自动宽度.

这是我的例子:

 <style>
        ul {
            margin: 0;
            padding: 0;
            display: -webkit-flex;
            display: flex;
            -webkit-flex-wrap: wrap;
            -ms-flex-wrap: wrap;
            flex-wrap: wrap;
            -webkit-flex-direction: column;
            -ms-flex-direction: column;
            flex-direction: column;
            height: 150px;
            width:auto;
        }
    
        li {
            float: left;
            display: inline-block;
            list-style: none;
            position: relative;
            height: 50px;
            width: 50px;
        }
    </style>
Run Code Online (Sandbox Code Playgroud)
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    <li>6</li>
    <li>7</li>
    <li>8</li>
    <li>9</li>
    <li>10</li>
    <li>11</li>
    <li>12</li>
    </ul>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止已经试过,除非我补充这个工作在其他浏览器绝对不错,但与Safari浏览器不兼容:display: -webkit-flex;.

我想像这样转换输出:

1 4 7 10
2 5 8 11
3 6 9 12
Run Code Online (Sandbox Code Playgroud)

重要的是我到目前为止我的Safari浏览器工作,我似乎无法解决这个问题,我会适当的任何帮助:)

测试链接:

http://jsfiddle.net/rafcastro77/3zd7yspg/59/

html css css3 flexbox

65
推荐指数
2
解决办法
7万
查看次数

具有动态内容的Flexbox响应式超级菜单

我正在创建一个大型动态导航菜单,我希望看起来像这样:

[----------- 100% PAGE WIDTH -----------] | GROUP A | GROUP C | GROUP F | GROUP G | | item | item | item | item | | item | | item | item | | | GROUP D | item | item | | GROUP B | item | item | | | item | | | | | item | GROUP E | | | | | item | | | |---------------------------------------| | | | | [------------- …

javascript css css3 flexbox

8
推荐指数
1
解决办法
1204
查看次数

Flexbox:当 flex-direction: column, flex-wrap: wrap 时错误的宽度计算

我在使用 flexbox 时遇到了问题。

我正在使用带有 的容器flex-direction: column; flex-wrap: wrap,因此我的内部项目实际上可以放置在多列中。

问题是浏览器仍然将容器的宽度计算为内部项目宽度的总和

我的容器块应该有一个较小的宽度(基于内容大小),但它实际上是巨大的。

无论如何,在使用列而不是行时,以这种方式计算容器的宽度也很不自然。

看看我的代码中的绿色块。它有一个巨大的,但它不应该有。此外,当您从容器中移除项目时,它会变小。

我期望的是具有小宽度的容器,因此它不会占用超过可用空间的一半。

在最新的 OS X 上的最新 Safari 和 Chrome 上进行了检查。

JSFiddle

.container {
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
  background: #aa0000;
  height: 100px;
}
.group {
  display: flex;
  flex-wrap: wrap;
  flex-direction: column;
  align-content: flex-start;
}
.g1 {
  background: #00aa00;
}
.g2 {
  background: #0000aa;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
  <div class="group g1">
    <div class="item">Item</div>
    <div class="item">Item</div>
    <div class="item">Item</div>
    <div class="item">Item</div>
    <div class="item">Item</div>
    <div class="item">Item</div>
    <div class="item">Item</div>
  </div> …
Run Code Online (Sandbox Code Playgroud)

html css flexbox

1
推荐指数
1
解决办法
4304
查看次数

标签 统计

css ×4

flexbox ×4

css3 ×3

html ×3

javascript ×1