2016-09-12 16 views
0

インラインブロックの子要素を水平方向に中央に配置する必要があります。問題は、子サブメニューが可変幅で、親よりも幅が広いことです。私の初期の解決策は子要素left-を-50pxの右に設定することでしたが、これは可変幅ではなく、静的に親よりも100px広く設定します。絶対配置の子要素を中心に

.main-menu { 
 
    text-align: left; 
 
    margin: 0; 
 
    padding: 0; 
 
    font-size: 0px; 
 
    font-size: 0rem; 
 
} 
 
.main-menu li { 
 
    font-size: 18px; 
 
    font-size: 1.8rem; 
 
    line-height: 1em; 
 
    list-style-type: none; 
 
    text-align: center; 
 
    display: inline-block; 
 
    zoom: 1; 
 
    padding: 0 25px; 
 
    position: relative; 
 
} 
 
li > a { 
 
    display: inline-block; 
 
    zoom: 1; 
 
    padding: 21px 0 19px; 
 
    font-family: "Open Sans", sans-serif; 
 
    font-weight: 400; 
 
    color: #282828; 
 
    font-size: 16px; 
 
    font-size: 1.6rem; 
 
    line-height: 1.2em; 
 
    text-decoration: none; 
 
    -webkit-transition: all .25s ease-in-out, background-image 0s, background-position 0s; 
 
    transition: all .25s ease-in-out, background-image 0s, background-position 0s; 
 
} 
 
.sub-menu { 
 
    position: absolute; 
 
    top: 100%; 
 
    left: -50px; 
 
    right: -50px; 
 
    max-width: 250px; 
 
    margin-left: auto; 
 
    margin-right: auto; 
 
    margin-bottom: 0; 
 
    min-width: 150px; 
 
    background-color: white; 
 
    text-align: left; 
 
    padding: 17px 0; 
 
    box-shadow: 0 2px 5px #dcdcdc inset; 
 
    border-top: 18px solid #ffdd00; 
 
    }
<ul class="main-menu clearfix"><li id="menu-item-657" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children first menu-item-657"> 
 
<li id="menu-item-657" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-has-children first menu-item-657"><a href="link">Solutions</a> 
 
<ul class="sub-menu"> 
 
\t <li id="menu-item-220469" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-220469"><a href="link">Solutions</a></li> 
 
\t <li id="menu-item-18009" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-18009"><a href="link">How It Works</a></li> 
 
\t <li id="menu-item-10344" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-10344"><a href="link">Why Use It</a></li> 
 
\t <li id="menu-item-3375" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-3375"><a href="link">Products</a></li> 
 
</ul> 
 
</li> 
 
</ul>

+0

'テキスト整列:代わりに'サブmenu'あなたのために働くために 'left'のcenter'? – kukkuz

答えて

1

は、私は通常、このような状況で何をすべきかです:

.parent { 
 
    /*....your existing css...*/ 
 
    position: relative; 
 
} 
 
.sub-menu { 
 
    display: block; 
 
    left: 50%; 
 
    text-align: center; 
 
    position: absolute; 
 
    transform: translateX(-50%); 
 
}
<div class="parent"> 
 
    <div class="sub-menu"> 
 
    Centered 
 
    </div> 
 
</div>

+0

素晴らしい、治療を受けました:)ありがとう! –

0

私は先週、この問題に遭遇したと、このような何かが私の問題を修正:私の場合は

li > a { 
    ....your existing css... 
    position: relative; 
} 
.sub-menu { 
    display: block; 
    left: 0; 
    right: 0; 
    text-align: center; 
    position: absolute; 
    margin-left: -100%; 
    margin-right: -100%; 
} 

.sub-menuli > aより広いだったが、私は.sub-menuにしたかったですli > aの下に中央に配置します。それはあなたが持っている問題ですか?ここで

+0

ちょっと - 答えに時間をとってくれてありがとう、ええ、それは私が持っている問題ですが、残念ながら上記の仕事はありません、これは、ボトムメニューは実際には動的な幅ではなく、小さなサブメニューはあまりにも幅広くなります。( –

関連する問題