2013-09-24 4 views
2

사용자 정의 CSS 툴팁이 표시되면 다른 내용을 푸시 다운합니다. ... 나는 그것을 잘 작동하게하기 위해 position: absolute를 추가 할 필요가 있음을 알고 있지만 어디서 알아낼 수 없습니다CSS/HTML : 내용을 아래로 밀어 넣는 툴팁

HTML :

<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 
<p>Fluff</p> 

    <div class="outer"> 

    <a class="tippy" href=""> 
     ICON<img src="" class="icon"/> 
    </a> 

    <div class="tooltip"> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
     STUFF<br/> 
    </div> 

    </div><!-- Container --> 

<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 
<p>FluffFluffFluffFluffFluffFluffFluffFluffFluff</p> 

CSS :

.outer { 
    width: 350px; 
} 

.tippy { 
    text-decoration: none; 
} 

a.tippy:hover + div { 
    display:block; 
    float: right; 
} 

.tooltip { 
    margin-left: 5px; 
    margin-top: -15px; 
    padding: 10px; 
    width: 265px; 
    height: 110px; 
    background-color: #ccc; 
    position: relative; 
    border: 2px solid #333; 
    display: none; 
} 
.tooltip:after, .tooltip:before { 
    border: solid transparent; 
    content:' '; 
    height: 0; 
    right: 100%; 
    position: absolute; 
    width: 0; 
} 
.tooltip:after { 
    border-width: 11px; 
    border-right-color: #ccc; 
    top: 13px; 
} 
.tooltip:before { 
    border-width: 14px; 
    border-right-color: #333; 
    top: 10px; 
} 

Fiddle:

+0

코드에서 jsFiddle을 보지 않고 툴팁과 내용을 구분할 수 없습니다. –

+0

"데모"를 "툴팁"으로 바꿉니다. – Keven

답변

1

당신은 01,235,363에 position:relative을 변경해야 .tooltip CSS 블록에있는

이 변경으로 인해 툴팁의 위치를 ​​지정하려면 CSS를 수정해야합니다.

.outer { 
    width: 350px; 
    position:relative; 
} 
.tooltip { 
    left: 55px; 
    top: -15px; 
    padding: 10px; 
    width: 265px; 
    height: 110px; 
    background-color: #ccc; 
    position: absolute; 
    border: 2px solid #333; 
    display: none; 
} 

그리고 마지막으로 a jsFiddle 보여주는 : 당신이 position:relative을 가지고 .outer을 수정하는 경우

이 (변경된 블록 만 표시) .tooltip

left:55px; 
top:-15px; 

같은 결과 CSS를 설정하는 것만 큼 간단합니다 행동 중입니다.

+0

정말 대단합니다. 나는 사실 이것에 가깝게 다가왔다. 그러나 '왼쪽'과 '위쪽'대신 'margin : -43px 0 5px 50px;'를 사용했습니다. '왼쪽'과 '최고'가 더 좋은 이유는 무엇입니까? 나는 또한 'position : relative;'를 외부 div에 포함하지 않았고 여전히 작동했습니다. 이유가 뭐야? – Keven

+0

여백은 요소의 현재 위치를 기준으로하므로 절대 위치, 상대 위치 또는 다른 위치에 상관없이 여백 값은 해당 값에 의해 상쇄되며 원하는대로 처리 할 수 ​​있습니다. 그것은 꼭 필요한 경우가 아니라면 절대적으로 위치 된 요소를 'top'과'left'와 같은 절대 값으로 설정하는 의미 론적 의미를 갖습니다. 결국 두 가지 방법을 알기 때문에 원하는 결과를 얻는 방법은 당신에게 달려 있습니다. –

관련 문제