2014-09-10 2 views
1

이 메뉴에서 텍스트를 가운데 정렬해야하지만 할 수 없습니다.CSS 메뉴 텍스트 정렬

#mimenu a { 
    display: inline-block; 
    width: 130px; 
    height: 50px; 
    background-color: #3D2F2F; 
    text-align:center; 
    color:white; 
    margin-top:20px; 
    background-color:#3d2f2f; 
    -webkit-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
    -moz-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
    box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
    vertical-align:top; 
    padding-top:10%; 
    margin-right:10px; 
} 

http://jsfiddle.net/79epfyut/

+0

가 추가 마크 업을 추가 할 수 있습니까? –

+0

부모 요소에 텍스트 맞춤을 설정해야합니다. –

답변

1

당신은 당신의 포함 lidisplay: table 요소를 확인하고 앵커 display: table-cell 수 있습니다. 당신은 쉽게 middle에 앵커의 vertical-align 속성을 설정할 수있는 것

: 그것은 조금 당신의 시각적 스타일을 변경하지만

Updated Fiddle

을, 일부가 조정이 필요할 수 있습니다 ...

EDIT

패딩을 유지하려면 컨테이너에 설정하십시오. li : Fiddle with padding

+1

하지만 이제 항목 사이의 패딩이 사라졌습니다. 어떻게 돌려받을 수 있니? – j08691

+0

이 솔루션은 텍스트의 수직 정렬과 관련된 특정 문제를 다루고 있습니다 ... * 문제를 해결하고 같은 문제를 찾는 다른 사람에게 유용 할 것입니다 ... 스타일에 엉망이긴하지만 동의하지 않습니다. downvote – LcSalazar

+0

기록을 위해, 나는 당신을 downvote하지 않았다. – j08691

1

내가 시도한 다른 접근 방식을 살펴보십시오.

나는 다음과 같은 CSS 속성을 사용하고 있습니다 :

display: table; /*for main div*/ 

display: table-row; /*for ul */ 

display: table-cell; /*for li */ 

는 훨씬 명확하게하려면이 도움이 Fiddle here !

희망을.

+0

멋지게 완성되었습니다. @ 존 Gr. – lharby

0

좋습니다. 이것은 훨씬 쉬운 해결책이라고 생각합니다. 나는 당신이했던 것과 똑같은 html 레이아웃을 사용하지 않았 으면 좋겠지 만 ... 똑같은 일을한다. 게다가 순서가 맞지 않다면 실제로는 정렬되지 않은리스트 인 <ul></ul>을 사용하고, 레이아웃을 위해서는 <div></div> <span></span>, etc을 사용해야한다. . 업데이트 jsfiddle

: 어쨌든, 여기 당신이 원하는 무엇의 간단한 버전의

나는 내가 빨리 그것을 설명하기 위해 너무 많은 시간을 차지하지 않고 대답을하려고했던 작업에있어 죄송합니다 .. 아마도 도움이되지 않을 것입니다. 어쨌든, 내가 한 일에 대한 정보는 다음과 같습니다.

기본적으로 외부 div를 가져 와서 메뉴 클래스를 지정합니다. 상위 div 또는 메뉴의 메뉴에 높이와 너비를 지정하십시오. 그런 다음 각 링크를 자신의 div에 배치하십시오. 이들은 아이들 분파가 될 것입니다.

어린이를위한 CSS는 부모의 너비와 높이의 100 %를 제공합니다. 디스플레이가 인라인 블록이되도록 만들어야 라인이 서로 겹치지 않습니다. OK 지금까지 CSS 코드에서 모든 것을 이해하기는 쉽지만, 까다로운 부분은 다음과 같습니다.

링크를 세로로 정렬하려면 링크를 부모 높이의 50 %만큼 아래로 이동해야합니다. .. 최고 순위 : 50 %. 그렇다면 자신의 신장에 맞게 조정해야합니다. transform을 사용하면 이렇게 할 수 있습니다 : translateY (-50 %); 엘리먼트를 자신의 높이의 50 %만큼 위로 움직입니다.코드있어 여기 Vertically Center Elements

그리고 :

HTML :

<div id="menu"> 
<div class="child"> 
    <a href="/joomla31/">Somos</a> 
</div> 
<div class="child"> 
    <a href="/joomla31/index.php/segunda-pagina">Segunda Página</a> 
</div> 
<div class="child"> 
    <a href="#">Este es un texto largo para el menú</a> 
</div>  
</div> 

CSS :

#menu{ 
width: 100%; 
height: 100px; 
display: block; 
} 
.child{ 
margin: 1%; 
background-color:#3d2f2f; 
width: 30%; 
height: 100%; 
text-align: center; 
display: inline-block; 
} 
a{ 
background: #ffdb4c; 
position: relative; 
top: 50%; 
transform: translateY(-50%); 
} 
이것은 매우 간단한이고 당신은 내가 처음 여기에 주제에 읽은 기사에서 자세한 내용을보실 수 있습니다
+0

관련 코드 또는 jsfiddle에서 해낸 작업에 대한 설명을 응답 자체에 포함하여 jsfiddle이 작동하지 않을 때 대답이 유용하게 사용하십시오. –

+0

업데이트 된 답변보기 @ZachSaucier – QuietOmen

0

태그에 높이와 일부 속성을 지정하지 않으면 해당 값에 대해서만 li을 제공 할 수 있습니다. 참조하십시오 :

.miul 
 
{ 
 
\t font-size:10px; 
 
\t list-style:none; 
 
\t margin-left:-40px; 
 
} 
 
.miul li a 
 
{ 
 
\t text-decoration:none; 
 
} 
 

 
#sect_01 
 
{ 
 
\t width:100%; 
 
\t display:block; 
 
} 
 
/* 
 
#mimenu ul 
 
{ 
 
\t list-style:none; 
 
} 
 

 
#mimenu li 
 
{ 
 
\t display:inline-block; 
 
\t color:white; 
 
\t font-size:14px; 
 
\t margin-right:10px 
 
} 
 

 
#mimenu a 
 
{ 
 
\t color:white; 
 
\t text-decoration:none; 
 
\t padding: 25px 18px; 
 
\t display:block; 
 
\t background-color:#3d2f2f; 
 
\t -webkit-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
\t -moz-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
\t box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
} 
 
*/ 
 
/*Menu */ 
 
#mimenu ul { 
 
    list-style-type: none; 
 
    margin: 0; 
 
    padding: 0; 
 
    overflow: hidden; 
 
\t 
 
} 
 

 
#mimenu ul li { 
 
    float: left; 
 
\t color:white; 
 
\t font-size:14px; 
 
    display:table; 
 
    height: 70px; 
 
\t background-color: #3D2F2F; 
 
    margin-right:10px; 
 
\t margin-top:20px; 
 
    background-color:#3d2f2f; 
 
\t -webkit-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
\t -moz-box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
\t box-shadow: 0px 5px 5px 0px rgba(0,0,0,0.75); 
 
} 
 

 
#mimenu a { 
 
    display: block; 
 
    display:table-cell; 
 
    vertical-align: middle; 
 
    width: 130px; \t 
 
\t text-align:center; 
 
\t color:white; \t 
 
\t 
 
\t 
 
} 
 

 
#top_menu a:link { 
 
    text-decoration: none; 
 
\t color:white; 
 
} 
 

 
#top_menu a:visited { 
 
    text-decoration: none; 
 
\t color:white; 
 
} 
 

 
#top_menu a:hover { 
 
    text-decoration: none; 
 
\t color:white; 
 
} 
 

 
#top_menu a:active { 
 
    text-decoration: none; 
 
\t color:white; 
 
}
<div style="width:960px;display:block;" id="mimenu"> 
 
<ul class="nav menu miul"> 
 
<li class="item-101 current active"> 
 
<a href="/joomla31/">Somos</a> 
 
</li> 
 
<li class="item-103"> 
 
<a href="/joomla31/index.php/segunda-pagina">Segunda Página</a> 
 
</li> 
 
<li class="item-104"> 
 
<a href="#">Este es un texto largo para el menú</a> 
 
</li> 
 
</ul> 
 

 
</div>