2012-03-30 9 views
0

私はdivのなぜ幅の変更(jQueryの)

<div class="top_region" id="region"> 
    <span class="logged_email"> 
    <?= $string; ?> 
    </span> 
    <div class="top_arrow" style="cursor: pointer;" id="top_arrow_reg"> 
    <?= img('css/img/top_arrow.png'); ?> 
    </div> 
    <ul class="top_submenu" style="cursor: default;" id="top_submenu_reg"> 
     <li> 
     <a href="<?= base_url() ?>region/bishkek">bishkek</a> 
     </li> 
     <li> 
     <a href="<?= base_url() ?>region/osh">osh</a> 
     </li> 
    </ul> 
    </div> 

を持っている目的は、ULタグはdiv要素と同じ幅を持っている必要があるということですが、問題はときということです私はページをリロードすると、ULはdivより少し幅がありますが、LIリンクをクリックすると通常のdiv width == ul幅になりますが、なぜそれが起こるのか分かりません?? ?

私は誰かがこの瞬間を??説明することができます

$("#top_arrow").toggle(function(){ 

      $("#top_submenu").slideDown(500); 


    }, function(){ 

     $("#top_submenu").slideUp(500); 

    }) 

var width = $(".top_region").width(); 
$(".top_submenu").width(width); 

jQueryの

を使用していて、どのようにそれを修正するために?

CSS正確な理由だ

div.top_region 
{ 
    display: inline-block; 
    margin-right: 40px; 
    margin-left: 20px; 
} 
div.top_region ul.top_submenu 
{ 
    /*width: 100px;*/ 
    /*left: -105px;*/ 
    margin: 0; 
    padding: 0; 
} 
span.logged_email 
{ 
    background: #333335; 
    color: #dbdcde; 
    font-size: 10pt; 
    padding: 5px; 
    padding-top: 2px; 
    padding-bottom: 4px; 
    padding-left: 30px; 
    padding-right: 30px; 
    font-weight: bold; 
    border-radius: 3px 0 0 3px; 
    -webkit-border-radius: 3px 0 0 3px; 
    -moz-border-radius: 3px 0 0 3px; 
} 
div.top_arrow 
{ 
    display: inline-block; 
    margin-left: 1px; 
    position: relative; 
    behavior: url('border-radius.htc'); 
    width: 20px; 
} 
div.top_arrow img 
{ 
    border-radius: 0 3px 3px 0; 
    -webkit-border-radius: 0 3px 3px 0; 
    -moz-border-radius: 0 3px 3px 0; 
    behavior: url('border-radius.htc'); 
    margin-top: 1px; 
} 
ul.top_submenu 
{ 
    position: absolute; 
    display: none; 
    background: #303030; 
    font-size: 8pt; 
    display: none; 
    /*width: 180px;*/ 
    list-style: none; 
    text-align: left; 
    padding: 0; 
    margin: 0; 
    /*left: -170px;*/ 
    padding-left: 5px; 
    padding-right: 5px; 
    height: 70px; 
    color: white; 
} 
ul.top_submenu li 
{ 
    border-bottom: 1px solid #969696; 
    padding-left: 3px; 
} 
ul.top_submenu li:last-child 
{ 
    border-bottom: none; 
} 
ul.top_submenu li a 
{ 
    text-decoration: none; 
    color: white; 
} 
+1

まだ曖昧です。あなたはこれのためのCSSがありますか? HTMLでは '.top_region'や' .top_submenu'も表示されません。関連するコードをすべて投稿できますか? – Joseph

+0

がコード –

答えて

0

var width = $(".top_region").width(); 
$(".top_submenu").width(width);​ 

それらの幅が等しいです。 はそれを作る:

var width = $(".top_region").width(); 
$(".top_submenu").width(width-2);​ 

アップデートを: あなたのコードに多少の誤差があります。私のフィドルを見てください: http://jsfiddle.net/LwGJX/7/

+0

を追加しましたが、スパン内の値が変更されて幅が変更されているため動作しませんが、問題はCtrl + rを押してUL幅が親divよりも大きいためですしかし、私はリンクをクリックすると、通常の –

+0

を得ることができます。最初はスパンがありませんでした。ページロード時に上記のコードを実行すると、まだブラウザに出力する前にPHPによって形成されたスパンとして動作します。そうでなければ詳細を提供しますか? – Elen

+0

私はちょうどコードを変更しました、それが助けてくれることを願っています –

関連する問題