【问题标题】:Why IE7 and IE8 will show the first tab's content only?为什么 IE7 和 IE8 只会显示第一个选项卡的内容?
【发布时间】:2013-10-18 17:23:24
【问题描述】:

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

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

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

你也可以看到here

我的 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;
}

提前谢谢...!!

【问题讨论】:

  • 因为它们不支持您用来显示标签的大部分 CSS3 规范。
  • 在上面添加到 FDL 的评论中,您是否使用任何垫片?您似乎正在使用 IE 较低版本不支持的 HTML5 元素。

标签: html internet-explorer css internet-explorer-8


【解决方案1】:

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

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

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

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

  4. transition 在 IE10 之前不可用。

  5. IE8 或更早版本不支持box-shadowborder-radiusrgba() 颜色。

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

这些问题中的大部分都可以通过 polyfill 脚本解决,但是既然您声明不想使用任何脚本,那么不幸的是您有点卡住了。

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

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

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

更多关于 Polyfill 的信息:

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

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

一些肯定会帮助你的 polyfill:

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

  • Modernizr -- 添加对 HTML5 元素的支持,并为使用其他 polyfill 提供特征检测框架。

  • CSS3Pie -- 添加对border-radiusbox-shadow 等的支持。

还有一大堆 polyfill 脚本 listed here。随意浏览列表并选择您认为最有用的那些。

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

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

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

【讨论】:

  • 感谢您的支持,您能否告诉我有关 polyfill 脚本的信息,如果使用它我可以做到,那么请告诉我如何..!!谢谢
  • @AnupKaranjkar - 有关 polyfill 的更多信息,请参阅我对答案的编辑。
  • @spudley 感谢 gr8 的帮助 我们可以交朋友吗...??
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-02
  • 1970-01-01
  • 1970-01-01
  • 2021-03-02
  • 2012-01-12
  • 2018-02-16
  • 1970-01-01
相关资源
最近更新 更多