2017-05-31 6 views
2

私は中心にテキストを作成できますが、px値を使用しています。パーセンテージを使用しようとすると動作しません。私は試しましたディスプレイ:テーブル;表示:テーブルセルdisplay:flex; justify-content:center; //水平センタリング align-items:center;でも動作しませんでした。パーセンテージを使用してDIVのテキスト中心を獣医学的にも水平的にも作成するにはどうすればよいですか?

私の親divの高さは7.7%です。

注:私は私の完全なヘッダコードの下

を更新したがJSFIDDLEリンクです:

https://jsfiddle.net/Anthony_Chien/f7n77068/#&togetherjs=gR8VEaLgqR

HTML:

<div class="vav-main"> 
    <nav class="navbar navbar-default navheader"> 
     <div class="navbar-header navlogo"> 
      <span><a href ="#">DS</a></span> 
     </div> 
     <div class="navheadersec2"> 
      <div class="navheadermargin"> 
       <div class="btn-group"> 
        <button class="btn btn-default btn-md dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> 
         <span class="headerspanbox"> <div class="headerdivbox"></div> </span>Default <span class="caret"></span> 
        </button> 
        <ul class="dropdown-menu"> 
         <li><a href="#">Action</a></li> 
         <li><a href="#">Another action</a></li> 
         <li><a href="#">Something else here</a></li> 
        </ul> 
       </div> 

       <!--<div class="header-icons"> 
        <span class="icons-group"><img src="assets/images/icons/undo.png" /></span> 
        <span class="icons-label">Undo</span> 
       </div>--> 

       <span class="btn-group icons-grp"><img src="assets/images/icons/undo.png" /><br>Undo</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/redo.png" /><br>Redo</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/zoom-in.png" /><br></span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/zoom-out.png" /><br></span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/group.png" /><br>Group</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/pattern.png" /><br>Pattern</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/lock.png" /><br>Lock</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/select.png" /><br>Select</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/resize.png" /><br>Scale</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/rotate.png" /><br>Rotate</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/rotate.png" /><br>Forward</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/backward.png" /><br>Backward</span> 
       <span class="btn-group icons-grp"><img src="assets/images/icons/panel.png" /><br>Panel</span> 
      </div> 
     </div> 
     <div class="navheadersec3"> 
      <div class="navheadermargin"> 
       <div class="headersec3para"> 
        <p class="headerpara">Code</p> 
        <p class="headerpara">Some text</p> 
       </div> 
       <p class="header-price">2,550</p> 
       <span class="btn-group icons-grp info-icon"><img src="assets/images/icons/info.png" /></span> 
       <p class="header-price add-to-cart">ADD</p> 
      </div> 
     </div> 
    </nav> 
</div> 

はCSS:

.vav-main{ 
     width: 100%; 
     height: 100%; 
    } 


    .navheader{ 
     width: 100%; 
     height: 7.7%; 
     background-color: #ffffff; 
     border: solid 1px #b8b8b8; 
    } 

    .navlogo { 
     width: 5%; 
     height: 100%; 
     background-color: #ffffff; 
     position:relative; /* Add this property */ 
     transform:translate(-50% -50%); /* Add this property */ 
     top:50%; /* Add this property */ 
     left:50%; /* Add this property */ 
    } 

    .navlogo span { 
     font-family: SourceSansPro; 
     font-size: 24px; 
     font-weight: bold; 
    } 

    .navheadersec2 { 
     width: 64.76%; 
     display: inline-block; 
     border-right: solid 1px #b8b8b8; 
     height: 100%; 
    } 

    .navheadersec3{ 
     width: 30.214%; 
     display: inline-block; 
     margin-left: -4px; 
    } 

    .navheadermargin .headersec3para{ 
     width: 30.53%; 
     height: 100%; 
     float: left; 
     margin-left: 6.10%; 
    } 

    .headersec3para .headerpara:first-child{ 
     font-size: 12px; 
     margin: 0px !IMPORTANT; 
     font-weight: bold; 
    } 

    .headersec3para .headerpara{ 
     font-size: 10px; 
     margin: 0px !IMPORTANT; 
    } 

    .header-price{ 
     margin: 0px; 
     height: 100%; 
     width: 16.03%; 
     float: left; 
     text-align: center; 
     line-height: 34px; 
     font-weight: bold; 
     font-size: 18px; 
     font-family: SourceSansPro; 
    } 

    .info-icon{ 
     margin: auto; 
     text-align: center; 
     line-height: 34px; 
    } 

    .info-icon > img{ 
     width: 20px; 
     height: 20px; 
    } 

    .add-to-cart{ 
     width: 30.534%; 
     font-size: 15px; 
     color: #009cff; 
    } 

    .navheadermargin{ 
     margin-top: 10px; 
     height: 34px; 
     margin-bottom: 10px; 
    } 

    .navheadermargin .btn-group{ 
     margin-left: 1.3%; 
     height: 100%; 
     width: 13.510%; 
     float: left; 
    } 

    .navheadermargin .header-icons{ 
     float: left; 
     width: 24px; 
     height: 100%; 
    } 

    .header-icons .icons-group{ 
     height: 21px; 
    } 

    .header-icons .icons-group img{ 
     height: 20px; 
     width: 20px; 
    } 

    .header-icons .icons-label{ 
     height: 15px; 
     font-family: SourceSansPro; 
     font-size: 10px; 
    } 

    .navheadermargin .btn-group button{ 
     height: 100%; 
     width: 100%; 
    } 

    .headerspanbox{ 
     display: inline-block; 
    } 

    .headerspanbox .headerdivbox{ 
     background-color: #1fb6ff; 
     margin-right: 10px; 
     height: 14px; 
     width: 18px; 
    } 

スクリーンショットイメージ:

enter image description here

+0

我々はより簡単に読むことができるバージョンを作るためにコードスニペットを使用してください。完全なソースを投稿しないので、テストするのが非常に難しいです。 – HTCom

+0

@HTCom私のヘッダーのフルコードを更新しました。 –

+0

@HTComとjsfiddleに自分のコードを追加しました。私は要約でリンクを追加しました –

答えて

1

.navheader{ 
 
    width: 100%; 
 
    height: 100px; 
 
    background-color: #ffffff; 
 
    border: solid 1px #b8b8b8; 
 
} 
 

 
.navlogo { 
 
    width: 5%; 
 
    height: 100%; 
 
    background-color: #ffffff; 
 
} 
 
.navlogo span { 
 
    font-family: SourceSansPro; 
 
    font-size: 24px; 
 
    font-weight: bold; 
 
    display:table;height:100%;width:100px; 
 
} 
 
.navlogo span a{ 
 
\t display:table-cell;vertical-align:middle;text-align:center;margin:0; 
 
}
<div class="vav-main"> 
 
    <nav class="navbar navbar-default navheader"> 
 
    <div class="navbar-header navlogo"> 
 
     <span><a href ="#">DS</a></span> 
 
    </div> 
 
</nav> 
 
</div>

+0

それはヘッダーの高さを除いてよく見えます。7.7%です。これはあなたが含まれていません。 –

2

あなたが垂直方向と水平方向あなたのナビゲーション要素を中心に、あなたの子供にあなたのコンテナにdisplay: table;を使用して、display: table-cell;ことができます。 Ypuは必要なレイアウトに基づいてコンテナと要素をwidthに設定できます。

可能な例:あなたはflexを使用するために同じことを達成することができます

.vav-main{ 
 
    position: relative; 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 

 
.navbar{ 
 
    display: table; 
 
    width: 100%; 
 
    background-color: #ffffff; 
 
    border: solid 1px #b8b8b8; 
 
} 
 

 
.navlogo { 
 
    height: 100; 
 
    background-color: #ffffff; 
 
    width: 5%; 
 
} 
 

 
.navlogo span { 
 
    font-family: SourceSansPro; 
 
    font-size: 24px; 
 
    font-weight: bold; 
 
} 
 
    
 
.navbar-header { 
 
    display: table-cell; 
 
    padding: 3.5%; 
 
    vertical-align: middle; 
 
    text-align: center; 
 
}
<div class="vav-main"> 
 
    <nav class="navbar navbar-default"> 
 
    <div class="navbar-header navlogo"> 
 
     <span><a href ="#">DS</a></span> 
 
    </div> 
 
    <div class="navbar-header"> 
 
     ........ 
 
    </div> 
 
</nav> 
 
</div>

+0

ヘッダーの高さは7.7%です。 –

+0

私は 'padding:3.5%;'を使用しました。代わりに、あなたが望む高さに基づいて正しいパディングを設定することができます。 –

3

.vav-main{ 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 

 
.navheader{ 
 
    width: 100%; 
 
    height: 7.7%; 
 
    background-color: #ffffff; 
 
    border: solid 1px #b8b8b8; 
 
} 
 

 
.navlogo { 
 
    width: 5%; 
 
    height: 100%; 
 
    background-color: #ffffff; 
 
    position:relative; /* Add this property */ 
 
    transform:translate(-50% -50%); /* Add this property */ 
 
    top:50%; /* Add this property */ 
 
    left:50%; /* Add this property */ 
 
} 
 

 
.navlogo span { 
 
    font-family: SourceSansPro; 
 
    font-size: 24px; 
 
    font-weight: bold; 
 
} 
 
    
 
    .vav-main> .navbar { 
 
    margin-bottom: 0px; 
 
    min-height:initial; 
 
}
<div class="vav-main"> 
 
    <nav class="navbar navbar-default navheader"> 
 
    <div class="navbar-header navlogo"> 
 
     <span><a href ="#">DS....</a></span> 
 
    </div> 
 
</nav> 
 
</div>

working fiddle

.vav-main{ 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 

 
.navheader{ 
 
    width: 100%; 
 
    height: 7.7%; 
 
    background-color: #ffffff; 
 
    border: solid 1px #b8b8b8; 
 
} 
 

 
.navlogo { 
 
    height: 100%; 
 
    width:100%; 
 
    background-color: #ffffff; 
 
    display:flex; 
 
    justify-content:center; 
 
    align-items:center; 
 
    flex-flow:column nowrap; 
 
} 
 

 
.navlogo span { 
 
    font-family: SourceSansPro; 
 
    font-size: 24px; 
 
    font-weight: bold; 
 
} 
 
    
 
.navlogo span a { 
 
    align-self:center; 
 
} 
 
    .vav-main> .navbar { 
 
    margin-bottom: 0px; 
 
    min-height:initial; 
 
}
<div class="vav-main"> 
 
    <nav class="navbar navbar-default navheader"> 
 
    <div class="navbar-header navlogo"> 
 
     <span><a href ="#">DS....</a></span> 
 
    </div> 
 
</nav> 
 
</div>

+0

ヘッダーの中央にあるべきではありません。添付したスクリーンショットを確認してください。 –

+0

スクリーンショットはどこですか?詳細のためのフィドルを作ってください – LKG

+0

私はjsfiddleに自分のコードを追加しました。私は要約でリンクを追加しました –

1

以下

更新フィドルあなたは両方としてspan tagを削除し、もしそうならbootstrapを使用すると、あなたが以下のようにのようにそれを試みることができることをやっている場合がございますaとspanタグはinline elementsであるため、必要に応じて使用できます。

.nav-main { 
 
    width: 100%; 
 
    height: 100%; 
 
} 
 

 
.nav-main > .navheader { 
 
    width: 100%; 
 
    height: 7.7%; 
 
    background-color: #ffffff; 
 
} 
 

 
.navlogo { 
 
    width: 100%; 
 
    height: 100%; 
 
    background-color: #ffffff; 
 
    text-align: center; 
 
} 
 

 
.navlogo > a { 
 
    font-family: SourceSansPro; 
 
    font-size: 24px; 
 
    font-weight: bold; 
 
    display: inline-block; 
 
    margin-top: 8px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
 
<div class="nav-main"> 
 
    <nav class="navbar navbar-default navheader"> 
 
    <div class="navbar-header navlogo"> 
 
     <a href="#">DS</a> 
 
    </div> 
 
    <div> 
 
    </div> 
 
    </nav> 
 
</div>

+0

それはヘッダーの中央にあるべきではありません..私が添付したスクリーンショットを確認してください –

+0

@AnthonyChienテキストアラインメントセンターを削除しても機能しますが、 screenshotは複数のロゴがあるので、floatを追加して幅を変更することでそれらを整列させることができます。 – frnt

+0

I @ frnt margin-top:8pxを入力してください。それは問題によって間違っています。それは%pxでなければなりません。 –

0

私は、単にコードの安っぽいブロックを書き、あなたのコードに変更しないでください。これがあなたに役立つことを願っています。ご覧のとおり、石灰ブロック内のテキストは、常に縦と横の中心を揃えています。

$('#header .text').css('left', 'calc(50% - '+$('#header .text').css('width')+'/2)'); 
 
$('#header .text').css('top', 'calc(50% - '+$('#header .text').css('height')+'/2)');
#header{ 
 
    width:100%; 
 
    height:200px; 
 
    border:1px blue solid; 
 
} 
 
#box{ 
 
    width:30%; 
 
    height:80%; 
 
    background-color:lime; 
 
    text-align:center; 
 
    position:relative; 
 
} 
 
#box .text{ 
 
    border:1px red solid; 
 
    position:absolute; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<div id='header'> 
 
<div id='box'> 
 
    <div class='text'>abchghjghj</div> 
 
</div> 
 
</div>

関連する問題