旧的(和令人讨厌的)浏览器的后备,用于创造性地使用"Flex-Box"

Ege*_*can 10 html css internet-explorer css3

我不是那些提供某些标准的问题的忠实粉丝,但没有理由让解决方案可以接受,但在这种情况下,我也有一个问题:没有兼容性的JavaScript,除了Modernizr.(原因是他们放慢了页面的速度.)

我使用了新的和花哨的CSS3 flex-box来创建一个菜单,如果有一些额外的空间,它会显示一些额外的链接.你可以在这里看到(希望)工作演示.

最大的问题是:如何在不使用有点着名的FlexieJS库的情况下为(咳嗽)恼人的(/咳嗽)Internet Explorer和旧浏览器提供后备?除了设置菜单(ul)的最大百分比宽度(这实际上不起作用)之外,这只能用css2实现吗?你能否至少指出我正确的方向?谢谢!


UPDATE

我再试一次,但仍然无法自己解决.任何帮助真的很感激!非常感谢=)你可以在这里找到我的尝试.


Jas*_*ham 10

我知道这是一个老话题,但我认为它应该得到你所要求的正确答案.由于您使用的是Modernizr,我们可以默认使用inline-block,但可以检测Flexbox何时可用并覆盖(使用良好的ol'或新的渐进增强功能).要使这个工作,你需要切换#admin-links#common-links.下面是代码,它适用于IE6 +.一个演示也可以.

HTML

<div id="wrapper">
    <div id="navigation">
        <ul id="admin-links">
            <li>
                <a href="#">Important Link</a>
            </li>
            <li>
                <a href="#">Important Link</a>
            </li>
        </ul>
        <ul id="common-links">
            <li>
                <a href="#">Important Link</a>
            </li>
            <li>
                <a href="#">Important Link</a>
            </li>
            <li>
                <a class="omittable" href="#">Omittable Link</a>
            </li>
            <li>
                <a class="omittable" href="#">Omittable Link</a>
            </li>
            <li>
                <a class="omittable" href="#">Omittable Link</a>
            </li>
        </ul>
    </div>
    <div id="content">
        <p>Hello world.</p>
        <p>This is supposed to be content.
            But only thing we care is the menu (Sorry about that.)
        </p>
        <p>Page width decreases, some items magically disappear.<br />
            Which is <strong>intended</strong>.<br />
            You can do that by pulling the frame bars around.
        </p>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

#wrapper {
    background: #eee;
    width: 100%;
    min-width: 450px;
    max-width: 700px;
    margin: 0 auto;
}
#navigation {
    height: 40px;
    background: #f00;
    width: 100%;
    overflow: hidden;

}

.flexbox #navigation {
    -moz-box-align: stretch;
    -moz-box-orient: horizontal;
    -webkit-box-align: stretch;
    -webkit-box-orient: horizontal;
    -moz-box-orient: horizontal;
    -webkit-box-orient: horizontal;
    -ms-box-orient: horizontal;
    box-orient: horizontal;
    -moz-box-align: stretch;
    -webkit-box-align: stretch;
    -ms-box-align: stretch;
    box-align: stretch;
    -moz-box-direction: reverse;
    -webkit-box-direction: reverse;
    -ms-box-direction: reverse;
    box-direction: reverse;
    display: -moz-box;
    display: -webkit-box;
    display: -ms-box;
    display: box;
    float: none;
}

#navigation ul {
    overflow: hidden;
    z-index: 990;    letter-spacing: -4px;

}
#common-links {
    overflow: hidden;
}

.flexbox #common-links {
  -moz-box-flex: 1;
  -webkit-box-flex: 1;
  -ms-box-flex: 1;
  box-flex: 1;

}

#navigation li {


    display: inline-block;
    letter-spacing: normal; height: 40px;
}
#navigation li a {
    padding: 10px;
    display:inline-block;
    *display: inline;
    zoom: 1;
    background: #0c0;
    outline: solid 1px #0c0;
}

#navigation a.omittable {
    background: #0f0;
}

#admin-links {
    float: right;
}
.flexbox #admin-links {
    float: none;
}
#admin-links ul {
    white-space: nowrap;
}
Run Code Online (Sandbox Code Playgroud)