2016-08-26 3 views
1

나는 단어의 길이의 50 %이고 단어가 가운데에 올리려는 밑줄을 만들려고합니다.내용의 너비에 맞게 사용자 정의 밑줄

의사 선택기의 너비는 a을 선택 했음에도 불구하고 a의 너비가 아닌 nav의 너비를 사용합니다.

left 속성을 설정할 때 a 왼쪽이 아닌 nav의 왼쪽이 정적입니다. 나는 그 물건을 잡아 당길 때 상대적이어야합니다.

nav a:hover::before{ 
    position: absolute; 
    left: calc(50% - 10%); 
    bottom: 0; 
    width: 20%; 
    height: 1px; 
    background: #7b0700; 
    content: ""; 
} 

과 CodePen

http://codepen.io/WallyNally/pen/dXxrgj

어떤 제안 : 여기

는 관련 코드? 감사합니다.

+0

밑줄 50 %의 폭으로

, 나는 그렇게 할 것? 나는 각 링크의 밑줄을 긋고있을 때 밑줄을 긋게된다. – zer00ne

답변

4

거의 다 왔어!

된 부분 : DOM 일부 요소까지 그 광고 위치없이

nav a { 
    position: relative; 
} 

(절대 위치와 상대 고정 또는 본체에없는 경우). 코드에서

nav a:hover::before { 
    position: absolute; 
    bottom: 0; 
    height: 1px; 
    background: #7b0700; 
    content: ""; 

    /* instead of width: */ 
    left: 25%; 
    right: 25%; 

}

포크 : 당신이 무엇을 원하는 않았다 정확히를 http://codepen.io/anon/pen/BzXKrB

+0

'width' 속성을 사용하지 않고 50 % 너비의 솔루션을 좋아합니다. 또 다른 방법은 CSS3 ['transform'] (http://www.w3schools.com/cssref/css3_pr_transform.asp) 특성을 사용하는 것입니다. I.E. '너비 : 50 %; transform : translate (translate) (50 %, 50 %); –

+0

'width : 100 %'를 사용하면 스크롤바가 나타날 때 까다로운 행동을하기 때문에 가능한 한 항상 왼쪽을 사용합니다. 더 많은 상황에서 더 안전하기 때문에 그것은 나를위한 일반적인 규칙입니다. 그러나 거기에 도달하는 방법은 여러 가지가 있으며, 모두 개별적인 경우에 달려 있습니다. – Seb

+0

귀하의 솔루션이 여러 웹 브라우저에서 호환되지 않는 것으로 보입니다. CSS3 특정 속성없이 뭔가 할 수 있다면 아마 더 나은 옵션이 될 것입니다. 좋은 해결책! –