0

我正在从事网站设计和开发工作,我面临以下问题,请帮助我...!!!

我有三个标签,它在 IE9、Firefox、Chrome、Safari 和 Opera 上运行良好。

我只使用 CSS3,我不想要任何脚本语言,希望在所有浏览器上都能完美运行,帮助我......

你也可以在这里看到

我的 HTML 代码:

<article class="tabs">

    <section id="tab1">
        <h2><a href="#tab1">Tab 1</a></h2>
        <p>This content appears on tab 1.</p>
    </section>

    <section id="tab2">
        <h2><a href="#tab2">Tab 2</a></h2>
        <p>This content appears on tab 2.</p>
    </section>

    <section id="tab3">
        <h2><a href="#tab3">Tab 3</a></h2>
        <p>This content appears on tab 3.</p>
    </section>

</article>

&我的CSS代码是:

article.tabs
{
    position: relative;
    display: block;
    width: 40em;
    height: 15em;
    margin: 2em auto;
}

article.tabs section
{
    position: absolute;
    display: block;
    top: 1.8em;
    left: 0;
    height: 12em;
    padding: 10px 20px;
    background-color: #ddd;
    border-radius: 5px;
    box-shadow: 0 3px 3px rgba(0,0,0,0.1);
    z-index: 0;
}

article.tabs section:first-child
{
    z-index: 1;
}

article.tabs section h2
{
    position: absolute;
    font-size: 1em;
    font-weight: normal;
    width: 120px;
    height: 1.8em;
    top: -1.8em;
    left: 10px;
    padding: 0;
    margin: 0;
    color: #999;
    background-color: #ddd;
    border-radius: 5px 5px 0 0;
}

article.tabs section:nth-child(2) h2
{
    left: 132px;
}

article.tabs section:nth-child(3) h2
{
    left: 254px;
}

article.tabs section h2 a
{
    display: block;
    width: 100%;
    line-height: 1.8em;
    text-align: center;
    text-decoration: none;
    color: inherit;
    outline: 0 none;
}

article.tabs section:target,
article.tabs section:target h2
{
    color: #333;
    background-color: #fff;
    z-index: 2;
}

article.tabs section,
article.tabs section h2
{
    -webkit-transition: all 500ms ease;
    -moz-transition: all 500ms ease;
    -ms-transition: all 500ms ease;
    -o-transition: all 500ms ease;
    transition: all 500ms ease;
}

提前致谢...!!

4

1 回答 1

3

这里的问题是您正在使用 IE7/8 不支持的浏览器功能。

  1. :first-child在 IE7 中不可用。

  2. :nth-child()在 IE7 或 IE8 中均不可用。

  3. :target在 IE7 或 IE8 中不可用。

  4. transition直到 IE10 才可用。

  5. box-shadow, IE8border-radiusrgba()更早版本不支持颜色。

  6. 最重要的是,您使用的是 HTML5 标记,例如sectionarticle,IE8 和更早版本不支持这些标记。

这些点中的大多数都可以通过 polyfill 脚本解决,但是由于您声明您不想使用任何脚本,那么不幸的是您有点卡住了。

如果您真的不想使用任何脚本(例如,使用div标签而不是sectionand article),您可以通过简单地使用旧式替代方案来解决一些问题,但您的代码的要点是使用 CSS 提供一个选项卡界面:target切换选项卡,简短的回答是这在 IE8 或更早版本中不起作用,而且我不知道任何非脚本替代方案。

所以我认为这里真正的重点是,如果你想支持 IE7/8,你必须使用一些 javascript 代码。

您可以使用 polyfill 脚本来反向移植您正在使用的 CSS/HTML5 功能,这意味着支持这些功能的较新浏览器不必使用这些脚本,但较旧的浏览器将需要它们。对于那个很抱歉。

更多关于 Polyfill 的信息:

“Polyfill 脚本”是各种 javascript 库的通用术语,这些库专门为旧版浏览器提供对新功能的支持(主要针对旧版 IE 版本)。

每个 polyfill 脚本都是为了支持特定的浏览器功能而编写的,因此对于像您这样的代码,您可能需要几个 polyfill 才能获得完整的功能奇偶性。但是,在某些情况下,对于不太重要的功能,您可能只想保留它,以便旧的 IE 版本无法获得所有功能 - 例如border-radius很好,但如果不是,它不会破坏网站支持。

一些肯定会帮助你的polyfills:

  • Selectivizr - 添加对 CSS3 选择器的支持,如:nth-child(),:target等。

  • Modernizr——增加了对 HTML5 元素的支持,并为使用其他 polyfill 提供了一个特征检测框架。

  • CSS3Pie - 添加对border-radius等的支持box-shadow

这里还列出了一大堆 polyfill 脚本。随意浏览列表并选择您认为最有用的列表。

关于所有 polyfill,要记住的一件重要事情是它们不是浏览器的官方部分。它们只是某人编写的小型 JS 库。这意味着它们不能保证 100% 工作。它们可能会为作者解决问题,但与现代浏览器中的真实功能相比,它们也可能缺少功能或功能上的差距。它们也可能会减慢速度并相互冲突(特别是如果您使用其中的几个)。

同样,您将不得不忍受这一点,因为当您想要在旧浏览器中支持现代浏览器功能时,事情的本质就是如此。向旧浏览器添加功能的方法是有限的。

最终,如果您真的需要使用现代功能,您可能需要完全停止支持一些较旧的浏览器——尤其是 IE7。

于 2013-10-18T08:52:38.353 回答