Baza Wiedzy
css3

Tooltip w prostym i efektownym wykonaniu

Tooltip w prostym i efektownym wykonaniu 

Minimalizacja interfejsu może być łatwiejsza niż się wydaje.

Starając się zminimalizować interfejs, często stosuje się ikony w systemach i aplikacjach. Niestety, gdy narzędzie jest udostępnione nowej grupie użytkowników, niezbędne są wyjaśnienia co dana ikona oznacza. Aktualnie HTML wspiera atrybut title, który może dostarczyć dodatkowych informacji o elemencie, którego dotyczy, jednak nie zachwycają one wyglądem ani tym, że tekst zwija się dopiero, gdy dosięgnie krawędzi okna.

W tym artykule pokażę, jak wykorzystać niestandardowe atrybuty w elementach HTML, by wyświetlić ładny tooltip. Można utworzyć z niego moduł CSS, który będzie można zaimportować do każdego projektu.

Sztuczka polega na tym, by umiejętnie skorzystać z pseudo selektorów CSS ::before oraz ::after. W tym celu do elementu, z którego tooltip ma się wyłaniać, należy dodać atrybut t-tip o wartości wyświetlanej wskazówki oraz atrybut t-tip-pos, który będzie odpowiadać za pozycję wyświetlanego okna.


<button t-tip="Udostępnij na Pinterest" t-tip-pos="left"> 
    <img width="50" src="..." /> 
<button>

Selektor ::before będzie odpowiadać za rożek wyświetlający skąd dany tooltip pochodzi.

Selektor ::after będzie ramką z tekstem zawierającym treść.


[t-tip]::after { 
    content: attr(t-tip); 
    position: absolute; 
    left: 50%; 
    top: -6px; 
    transform: translateX(-50%) translateY(-100%); 
    background: rgba(0, 0, 0, 0.7); 
    text-align: center; 
    color: #fff; 
    font-size: 12px; 
    min-width: 80px; 
    border-radius: 5px; 
    pointer-events: none; 
    padding: 5px; 
    z-index: 99; 
    opacity: 0; 
} 

[t-tip]::before { 
    content: ""; 
    position: absolute; 
    top: -6px; 
    left: 50%; 
    transform: translateX(-50%); 
    border-width: 4px 6px 0 6px; 
    border-style: solid; 
    border-color: rgba(0, 0, 0, 0.7) transparent; 
    z-index: 99; 
    opacity: 0; 
} 

Aby nadać odpowiednią pozycję w widoku okienku tooltipa należy do atrybutu t-tip-pos poprzypisywać odpowiednie właściwości.


[t-tip-pos='top']::after {    
    left: 50%;
}
[t-tip-pos='top']::before {
    left: 50%;
} 

[t-tip-pos='right']::after {
    left: 100%;
    top: 50%;
    margin-left: 9px;
    transform: translateX(0%) translateY(-50%);
}
[t-tip-pos='right']::before {
    left: 100%;
    top: 50%;
    margin-left: 1px;
    transform: translatey(-50%) rotate(90deg);
} 

[t-tip-pos='left']::after {
    left: 0%;
    top: 50%;
    margin-left: -8px;
    transform: translateX(-100%) translateY(-50%);
}
[t-tip-pos='left']::before {
    left: 0%;
    top: 50%;
    margin-left: -12px;
    transform: translatey(-50%) rotate(-90deg);
} 

[t-tip-pos='bottom']::after {
    top: 100%;
    margin-top: 9px;
    transform: translateX(-50%) translateY(0%);
}
[t-tip-pos='bottom']::before {
    top: 100%;
    margin-top: 9px;
    transform: translateX(-50%) translatey(-100%) rotate(-180deg);
} 

[t-tip]:hover::after,
[t-tip]:hover::before {
    opacity: 1;
}

Ważne jest, by element z atrybutem t-tip posiadał cechę position: relative. W innym przypadku pozycjonowanie nie będzie działać jak należy.


[t-tip] { 
    position: relative; 
    display: inline-block; 
} 

Leave a comment