2

タブとタブコンテンツのアニメーションを作成しました。タブをクリックすると、対応するタブコンテンツが下に表示され、他のコンテンツは非表示になり、簡単に機能します。私が抱えている問題は、IE78での境界半径のレンダリングにあります。これらのcss3プロパティによって影響を受ける可能性のあるcssにはcssPIE.htcを使用しています。これは、jQueryで操作されていないページ上の静的コンテンツに対して機能しますが、タブなどの動的コンテンツの場合、コンテンツのcssには-pie-watch-ancestors:n属性が必要だと思います。そうしても、まだ結果はありません。以下は私のコード(CSS、HTML、jQuery)とchromeとIE8の違いのスクリーンショットです。どんな助けでも素晴らしいでしょう。

更新:タブのコンテンツをページの外に残し、アクティブなコンテンツを左に戻すことでこれを修正できる可能性があります:0、常に表示され、再レンダリングされないようにします。**その間に、ここにフィドルがあります、ナッツに行きます:タブフィドル

Chromeのスクリーンショット クロムは動作します

IE8の壊れたスクリーンショットお気づき すなわち吹く かもしれませんが、境界線、背景、背景画像(小さな色付きのボックス)はありません。

タブコンテンツと提携しているCSS

    .tabContent {
    position:absolute;
    display:none;
    background-color:White;
    background-image: url(/includes/images/home_phase2/colored_boxes_small.png);
    background-repeat: no-repeat;
    background-position: 98% 90%;
    border-left:1px solid #772981;
    border-right:1px solid #772981;
    border-bottom:1px solid #772981;
    width:945px;
    margin-top:1px;
    margin-left:-1px;
    z-index:9999;

    -webkit-border-top-left-radius: 0;
    -moz-border-radius-topleft: 0;
    border-top-left-radius: 0;
    behavior: url("/includes/css/PIE.htc");
    -pie-watch-ancestors: true;
}

    .roundedCorners {
    border-radius:7px;
    -webkit-border-radius: 7px;
    -moz-border-radius: 7px;
    behavior: url("/includes/css/PIE.htc");
}

jQuery(document.loadが必要)

$('.tabContent').click(function (event) {
    event.stopPropagation();
});

tabLnk.each(function () {
    $(this).attr("href", "javascript: void(0)")
});

tabLnk.click(function (event) {

    event.stopPropagation();
    var $this = $(this);
    var hideActive = $('.active').parent().index();

    if ($this.hasClass('active')) {
        $this.removeClass('active');
        $('.tabContent_wrapper .tabContent:eq(' + hideActive + ')').hide();
    } else {
        $('.tabLnk').removeClass('active');
        $this.addClass('active');
        var showActive = $('.active').parent().index();
        $('.tabContent_wrapper').show();
        var activeContent = $('.tabContent_wrapper .tabContent:eq(' + showActive + ')');
        activeContent.show();
        activeContent.siblings().hide();
    }

    if ($('.tab_wrapper li a').slice(1, 3).hasClass('active')) {
        $('.tabContent').slice(1, 3).addClass('borderTopLeftTabContent');
    }
});
4

2 に答える 2

3

追加してみてください

position: relative

.roundCorners {}

面白そうに聞こえますが、同じ問題があり、役立つかもしれません。

編集:

同じことが当てはまる場合があります:

.tabContent {}
于 2012-12-07T20:22:25.653 に答える
2

OK、長い試みの後、私はなんとかそれをすることができました。最後に、の角を丸めて解決しましたtabContent_wrapper

これが私が短い要約としてしたことです:

  1. すべてのtabContentdivからroundedCornersを削除し、に追加しましたtabContent_wrapper
  2. clearfixすべてのdivにクラスを追加し、CSSコードでクラスをtabContent定義しますclearfix
  3. PIE.htcに追加roundedCorners
  4. roundedCornersCSS3PIEコーナーのためにいくつかのパディングを追加しました...
  5. 追加された位置:相対; z-index:10;roundedCorners
  6. コメントアウトtabContent'sposition:absolute;
  7. 隠しました。コンテンツが表示されていないときに見苦しいパディングtabContent_wrapperがあるためです。2px
  8. の前のコメント記号を削除しました$('.tabContent_wrapper').show();。今必要です。アクティブなタブをもう一度クリックした$('.tabContent_wrapper').hide();ときに入力します(醜い空のコンテンツが境界線で表示されないようにします)

完全なコードは次のとおりです( http://jsbeautifier.org/でポストフォーマットされています)。

<!DOCTYPE html>
<html>  
  <head>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <meta charset=utf-8 />
    <title>Tabs...</title>
    <style>
      .roundedCorners {
        padding:2px;
        border-radius:7px;
        -webkit-border-radius: 7px;
        -moz-border-radius: 7px;
        /* New stuffs */
        behavior: url(PIE.htc);
        position:relative;
        z-index:10;
      }
      .tabHome_wrapper {
        margin-bottom:-1px;
      }
      .tab_wrapper {
        position:relative;
        height:25px;
        margin-left:-1px;
      }
      .tab_wrapper ul li {
        display:inline-block;
        padding-right:20px;
        overflow:hidden;
        width:132px;
        height:25px;
      }
      .tab_wrapper ul > li:first-child a {
        -webkit-border-bottom-left-radius: 7px;
        -moz-border-radius-bottomleft: 7px;
        border-radius: 0 0 0 7px;
      }
      .tabLnk {
        position:absolute;
        background-image:url('http://i.imgur.com/PkR4W.png');
        background-position: -132px 1px;
        background-repeat:no-repeat;
        width:132px;
        height:25px;
        margin-top:1px;
        z-index:9999;
        font-size: 15px;
        text-align: center;
        line-height: 25px;
        color: White !important;
        text-decoration: none;
      }
      .borderTopLeftTabContent {
        border-radius: 7px 7px 7px 7px !important;
      }
      .tabLnk.active {
        width:130px;
        background-position:-1px 1px;
        -webkit-border-bottom-left-radius: 0px !important;
        -moz-border-radius-bottomleft: 0px !important;
        border-bottom-left-radius: 0px !important;
        color: #833889 !important;
      }
      .tabLnk:hover, .tabLnk:focus {
        text-decoration: none;
      }
      .tabLnk:visited {
        color: White;
      }
      .hideContent {
        left:-99999px;
      }
      .tabContent_wrapper {
        /* new stuffs */
        width:945px;
        margin-top:1px;
        margin-left:-1px;
        border:1px solid #772981;
        /*
        border-top:0px;
        */

        /* hide it first because of the 2 pixel roundedCorner padding */
        display:none;
      }

      .tabContent {
        /*
        position:absolute;
        */

        display:none;
        background-color:White;
        background-image: url('http://i.imgur.com/yyhGR.png');
        background-repeat: no-repeat;
        background-position: 98% 90%;

        /* moved to tabContent_wrapper, this z-index is not needed now */
        /* 
          border-left:1px solid #772981;
          border-right:1px solid #772981;
          border-bottom:1px solid #772981;
          width:945px;
          margin-top:1px;
          margin-left:-1px;
          z-index:9999;
        */

        -webkit-border-top-left-radius: 0;
        -moz-border-radius-topleft: 0;
        border-top-left-radius: 0;
      }

      .tabContent_img {
        float: left;
        width:290px;
        height:155px;
        padding: 20px 20px 10px 15px;
      }

      .tabContent_description {
        padding: 32px 140px 20px 0px;
        width:450px;
        float:right;
        font-size: 14px;
        color: gray;
      }

      .tabContent_description p:first-child {
        padding-bottom: 10px;
      }

      .lblTabTxt {
        color: white;
        padding-left: 3px;
        top: 5px;
        position: relative;
      }

      .lblTabTxt:hover {
        text-decoration: none;
      }

      /* Pete... clearfix from Drupal */
      /**
       * Markup free clearing.
       *
       * @see http://perishablepress.com/press/2009/12/06/new-clearfix-hack
       */
      .clearfix:after {
        content:".";
        display: block;
        height: 0;
        clear: both;
        visibility: hidden;
      }
      /* IE6 */
      * html .clearfix {
        height: 1%;
      }
      /* IE7 */
      *:first-child + html .clearfix {
        min-height: 1%;
      }
    </style>

    <script type="text/javascript">
      $(document).ready(function () {

        var tabLnk = $('.tabLnk');

        $('.tabContent').click(function (event) {
          event.stopPropagation();
        });

        tabLnk.each(function () {
          $(this).attr("href", "javascript: void(0)")
        });

        tabLnk.click(function (event) {

          event.stopPropagation();
          var $this = $(this);
          var hideActive = $('.active').parent().index();

          if ($this.hasClass('active')) {
            $this.removeClass('active');
            $('.tabContent_wrapper .tabContent:eq(' + hideActive + ')').hide();
            // hide tabContent_wrapper too (when empty, it would look ugly because of the 2px padding)
            $('.tabContent_wrapper').hide();
          } else {
            $('.tabLnk').removeClass('active');
            $this.addClass('active');
            var showActive = $('.active').parent().index();
            $('.tabContent_wrapper').show();
            var activeContent = $('.tabContent_wrapper .tabContent:eq(' + showActive + ')');
            activeContent.show();
            activeContent.siblings().hide();
          }

          if ($('.tab_wrapper li a').slice(1, 3).hasClass('active')) {
            $('.tabContent').slice(1, 3).addClass('borderTopLeftTabContent');
          }
        });

      });
    </script>
  </head>

  <body>
    <div id="ctl00_cphBody_pnltabWrapper" class="tabHome_wrapper">
      <div id="tabArea" class="tab_wrapper">
        <ul>
          <li> <a class="tabLnk" href="javascript: void(0)">
                Administrators
                </a>

          </li>
          <li> <a class="tabLnk" href="javascript: void(0)">
                Teachers
                </a>
          </li>
          <li> <a class="tabLnk" href="javascript: void(0)">
                Technologists
                </a>
          </li>
        </ul>
      </div>
      <div id="tabContentArea" class="tabContent_wrapper roundedCorners">
        <div class="tabContent clearfix" style="display: none;">
          <div class="tabContent_img">
            <img src="http://i.imgur.com/zJJmn.png" alt="tabContent_img example" width="283"
            height="152">
          </div>
          <div class="tabContent_description">
            <p> <strong><span style="COLOR: #4b0082">Administrators</span> </strong></p>
            <p>a aliquet dolor gravida. Sed auctor imperdiet lacus vel vulputate.venenatis
              mauris, a dignissim elit fringilla ac. Quisque malesuada dapibus venenatis.
              Aliquam volutpat ante id diam auctor eu volutpat massa sem et augue. Vestibulum
              tortor lacus, venenatis sed ultricies ac, porta et ligula. Duis consectetur
              Mauris fringilla massa ac sem tristique consectetur. Aliquam varius, lacus
              vel sollicitudin congue, elit erat luctus mauris, Lorem ipsum dolor sit
              amet, consectetur adipiscing elit. Quisque posuere nunc lacinia diam ornare
              a ullamcorper nulla egestas.</p>
          </div>
        </div>
        <div class="tabContent borderTopLeftTabContent clearfix" style="display: none;">
          <div class="tabContent_img">
            <img src="http://i.imgur.com/zJJmn.png" alt="tabContent_img example" width="283"
            height="152">
          </div>
          <div class="tabContent_description">
            <p><strong><span style="COLOR: #4b0082">Teachers</span></strong></p>
            <p>CONTENT&nbsp;CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT CONTENT
              CONTENT CONTENT CONTENT CONTENT</p>
          </div>
        </div>
        <div class="tabContent borderTopLeftTabContent clearfix" style="display: none;">
          <div class="tabContent_img">
            <img src="http://i.imgur.com/zJJmn.png" alt="tabContent_img example" width="283"
            height="152">
          </div>
          <div class="tabContent_description">
            <p> <strong><span style="COLOR: #4b0082">Technologists </span></strong></p>
            <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut malesuada,
              nulla eu viverra iaculis, nibh ipsum rhoncus risus, sit amet porta sapien
              elit id turpis. Donec eu nibh diam. Ut placerat vulputate ligula, ut mattis
              odio adipiscing id. Nullam vel arcu est. Praesent vitae porta metus. Cras
              auctor sem non nisi aliquet ultricies. Suspendisse potenti. Curabitur gravida
              eleifend aliquam. Fusce consequat cursus eros sit amet hendrerit. Curabitur
              quam nibh, auctor id dictum non, dapibus sit amet libero.</p>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>

いくつかのスクリーンショット:

  1. デフォルトでは、タブは開かれていません。 タブが開かれていません
  2. 最初に開いたタブ: 最初のタブが開きました
  3. 2番目のタブが開きました: 2番目のタブが開きました
  4. 開いた3番目のタブ: 3番目のタブが開きました

もちろん、アクティブなタブの下に境界線が表示されないように、上部の境界線を操作する必要があります。
これが役に立ったかどうか教えてください。

于 2012-12-08T00:53:19.783 に答える