2017-12-09 10 views
0

私はulを中心に私のヘッダーを取得しようとしています。別のページにはoverflow:hiddenが表示されていましたが、ウィンドウを縮小すると、2番目のスクロールバーが表示されます。私は自分のヘッダーを真ん中に置くことができません

私が何かを試すたびに、liは私のロゴに沿っていません。 また、クラス 'container' margin: autoを取得しようとしましたが、何も起こりません。

body { 
 
    font: 15px/1.5 Arial, Helvetica, sans-serif; 
 
    padding: 0; 
 
    margin: 0; 
 
    background-color: #f4f4f4; 
 
} 
 

 

 
/*Global styling */ 
 

 
.container { 
 
    width: 100%; 
 
    overflow: visible; 
 
} 
 

 
ul { 
 
    margin: 0; 
 
    padding: 0; 
 
} 
 

 

 
/*Header*/ 
 

 
header { 
 
    background: #100806; 
 
    color: #f2f2f2; 
 
    min-height: 75px; 
 
    border-bottom: #ffffff 3px solid; 
 
    text-align: center; 
 
} 
 

 
header a { 
 
    color: #ffffff; 
 
    text-decoration: none; 
 
    text-transform: uppercase; 
 
    font-size: 15px; 
 
} 
 

 
header li { 
 
    display: inline-block; 
 
    padding: 0 30px 10px 0; 
 
    float: left; 
 
} 
 

 
header .center-logo img { 
 
    width: 100px; 
 
    padding-left: 30px; 
 
    padding-right: 30px; 
 
} 
 

 
header nav span { 
 
    float: left; 
 
} 
 

 
header nav span:first-child { 
 
    padding-right: 50px; 
 
    /* half the logo width */ 
 
    padding-top: 20px; 
 
} 
 

 
header nav span:last-child { 
 
    padding-left: 50px; 
 
    padding-top: 20px; 
 
    /* half the logo width */ 
 
} 
 

 
header .highlight, 
 
header .current a { 
 
    color: #e8491d; 
 
    font-weight: bold; 
 
} 
 

 
header a:hover { 
 
    color: #666666; 
 
    font-weight: bold; 
 
}
<header> 
 
    <div class="container"> 
 
    <nav> 
 
     <ul> 
 
     <span> 
 
      <li class="current"><a href="homePage.html"> Home</a></li> 
 
      <li><a href="about.html"> Photography</a></li> 
 
     </span> 
 
     <div class="center-logo"> 
 
      <li><img src="https://placehold.it/100x50"></li> 
 
     </div> 
 
     <span> 
 
      <li><a href="services.html"> Biography</a></li> 
 
      <li><a href="contactus.html"> Contact Us</a></li> 
 
     </span> 
 
     </ul> 
 
    </nav> 
 
    </div> 
 
</header>

答えて

0

問題

  • floatルール(li

は、リストの項目で宣言floatルールを削除することを検討してください、これは、メニュー項目を水平に中央で整列させる試みを否定しますsをflex-box以外の一般的な方法を使用して計算します。

(含む要素に)修正

  • text-align: center
  • text-align: centerルール 既にがあるので display: inline-block

(ネストされた中心に要素に対して)を含有するで宣言

  • 親要素(この場合はheader)、のリスト項目は既にinline-blockの項目として宣言されています。リスト項目の要素は、floatの規則を削除した後に中央になります。

    はさらに、(ol)順不同(ul)または順序付けられたリストの

    のみ直接の子孫要素がリスト項目(li)であるべきである - これ以外の任意の元素は無効のマークアップと考えられます。

    コードスニペットデモンストレーション:ビュー "全ページ"

    概要:削除

    1. マークアップ清掃/簡素化
    2. 無効なリスト要素(直接の子孫)
    3. スタイルが改善されました(冗長なルールは省略され、垂直方向のセンタリングまた、参考のためにナビゲーション)

    body { 
     
        font: 15px/1.5 Arial, Helvetica, sans-serif; 
     
        padding: 0; 
     
        margin: 0; 
     
        background-color: #f4f4f4; 
     
    } 
     
    
     
    /*Global styling */ 
     
    
     
    .container { 
     
        width: 100%; 
     
        overflow: visible; 
     
    } 
     
    
     
    ul { 
     
        margin: 0; 
     
        padding: 0; 
     
    } 
     
    
     
    /*Header*/ 
     
    
     
    header { 
     
        background: #100806; 
     
        color: #f2f2f2; 
     
        min-height: 75px; 
     
        border-bottom: #ffffff 3px solid; 
     
        text-align: center; 
     
    } 
     
    
     
    header a { 
     
        color: #ffffff; 
     
        text-decoration: none; 
     
        text-transform: uppercase; 
     
        font-size: 15px; 
     
    } 
     
    
     
    header li { 
     
        display: inline-block; 
     
        padding: 0 30px 0 0; /* remove the bottom padding */ 
     
        /* float removed */ 
     
        vertical-align: middle; /* additional */ 
     
    } 
     
    
     
    /* Additional */ 
     
    
     
    li.logo { 
     
        padding-left: 50px; 
     
        padding-right: 50px; 
     
    } 
     
    
     
    header nav > ul { /* using the "child combinator" here (>) so that this rule doesn't apply to any dropdown or sub-menus */ 
     
        padding: 10px 0 10px 0; 
     
    } 
     
    
     
    /* 
     
    header .center-logo img { 
     
        width: 100px; 
     
        padding-left: 30px; 
     
        padding-right: 30px; 
     
    } 
     
    
     
    header nav span { 
     
        float: left; 
     
    } 
     
    
     
    header nav span:first-child { 
     
        padding-right: 50px; 
     
        padding-top: 20px; 
     
    } 
     
    
     
    header nav span:last-child { 
     
        padding-left: 50px; 
     
        padding-top: 20px; 
     
    } 
     
    */ 
     
    
     
    header .highlight, 
     
    header .current a { 
     
        color: #e8491d; 
     
        font-weight: bold; 
     
    } 
     
    
     
    header a:hover { 
     
        color: #666666; 
     
        font-weight: bold; 
     
    }
    <header> 
     
        <nav> 
     
        <ul> 
     
         <li class="current"><a href="homePage.html"> Home</a></li> 
     
         <li><a href="about.html"> Photography</a></li> 
     
         <li class="logo"><img src="https://placehold.it/100x50"></li> 
     
         <li><a href="services.html"> Biography</a></li> 
     
         <li><a href="contactus.html"> Contact Us</a></li> 
     
        </ul> 
     
        </nav> 
     
    </header> 
     
    
     
    <!-- 
     
    
     
    Change Log: 
     
    
     
    1) Invalid nested elements removed from list (span & div) 
     
    2) Superfluous ".container" containing element removed (as providing no tangible benefits) 
     
    
     
    -->

    実用的なデモンストレーション:

    1. Horizontal Alignment (Text Elements)
    2. Horizontal Alignment (Arbitrary Elements)
  • 0

    あなたはフレキシボックスを使用することができます。

    header ul { 
        display:flex 
    } 
    
    header li { 
        flex: 1 
    } 
    

    強力なツールフレックス。

    フィドルを参照してください:リストの項目に宣言https://jsfiddle.net/fo7v1253/1/

    関連する問題