#html #css
#HTML #css
Вопрос:
Я долго искал другое решение для создания всплывающей подсказки из title=""
атрибута при :hover
выборе.
Я надеюсь найти способ использовать title=""
атрибут и динамически изменять свое content:""
свойство.
* {
-webkit-font-smoothing: antialiased;
font-family: "Trebuchet MS", Helvetica, sans-serif;
}
div {
width: 300px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
}
button {
cursor: pointer;
position: relative;
display: inline-block;
background: rgb(25, 181, 206);
color: #fff;
padding: 5px 15px;
border: none;
font-size: 1em;
}
button::after {
content: "I'm a css tooltip!"; /* <= dynamically title content */
z-index: -999;
position: absolute;
top: 110%;
left: 0;
width: 90%;
padding: 5px 5%;
font-size: 70%;
text-align: center;
color: #fff;
background: rgb(21, 151, 171);
opacity: 0;
-webkit-transform: rotateX(180deg) rotateY(20deg) rotateZ(20deg);
-moz-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-o-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-ms-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-webkit-transform-origin: 100% 0%;
transform-origin: 100% 0%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-webkit-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-moz-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-ms-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-o-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
}
button:hover::after {
opacity: 1;
box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.15);
-webkit-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-moz-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-o-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-ms-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
}
<div>
<button title="I'm a css tooltip1!">button</button>
<button title="I'm a css tooltip2!">button</button>
<button title="I'm a css tooltip3!">button</button>
</div>
Есть способ сделать это?
Ответ №1:
Используйте data-
атрибут, если вам нужны пользовательские атрибуты, и без data-
, если вам нужны нестандартные атрибуты (например, заголовок)
* {
-webkit-font-smoothing: antialiased;
font-family: "Trebuchet MS", Helvetica, sans-serif;
}
div {
width: 300px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%);
-moz-transform: translate(-50%, -50%);
-ms-transform: translate(-50%, -50%);
-o-transform: translate(-50%, -50%);
}
button {
cursor: pointer;
position: relative;
display: inline-block;
background: rgb(25, 181, 206);
color: #fff;
padding: 5px 15px;
border: none;
font-size: 1em;
}
button::after {
content: attr(data-title); /* <= dynamically title content */
z-index: -999;
position: absolute;
top: 110%;
left: 0;
width: 90%;
padding: 5px 5%;
font-size: 70%;
text-align: center;
color: #fff;
background: rgb(21, 151, 171);
opacity: 0;
-webkit-transform: rotateX(180deg) rotateY(20deg) rotateZ(20deg);
-moz-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-o-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-ms-transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
transform: rotateX(180deg) rotateY(0deg) rotateZ(0deg);
-webkit-transform-origin: 100% 0%;
transform-origin: 100% 0%;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-webkit-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-moz-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-ms-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
-o-transition: cubic-bezier(0.3, 0.05, 0.4, 1.7) .55s;
}
button:hover::after {
opacity: 1;
box-shadow: 0px 2px 3px 0px rgba(0,0,0,0.15);
-webkit-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-moz-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-o-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
-ms-transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
transform: rotateX(0deg) rotateY(0deg) rotateZ(0deg);
}
<div>
<button data-title="I'm a css tooltip1!">button</button>
<button data-title="I'm a css tooltip2!">button</button>
<button data-title="I'm a css tooltip3!">button</button>
</div>
Комментарии:
1. Интересно! могу ли я изменить ‘data-title’ на ‘title’? мне это нужно для доступности. и еще один вопрос, как насчет поддержки браузера?
2. Вам не нужно
data-
. Просто используйтеtitle
.3. @ZeevKatz Да, вы можете. Я включаю
data
в свой ответ в качестве примера, чтобы вы могли включить любой пользовательский атрибут сdata-
префиксом.
Ответ №2:
Я думаю, что есть хороший пример всплывающих подсказок: bootstrap
пример:
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button>