我花了兩天時間試圖解決這個問題,但我意識到我不能獨自做到這一點。我試圖將我的工具提示相對于父級居中。這是我的代碼=>
let collection = document.querySelectorAll("[data-text]");
collection.forEach((ele, ind) => {
var element = document.createElement("p");
element.className = "tooltip-text";
element.innerText = ele.dataset.text;
element.dataset.name = "_" ele.id ind;
document.getElementById(ele.id).appendChild(element);
document.querySelector('#' ele.id).addEventListener('mouseover', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'visible';
}, false);
document.querySelector('#' ele.id).addEventListener('mouseleave', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'hidden';
}, false);
});
.container {
display: flex;
background: #ccc;
justify-content: center;
align-items: center;
height: 95vh;
}
.c-content{
width: 100%;
max-width: 800px;
position: relative;
overflow: hidden;
border-radius: 4px;
}
.toprightcontrols {
margin: 0 1.2% 0 0;
display: flex;
position: absolute;
justify-content: flex-end;
top: 0;
right: 0;
width: 150px;
padding-top: 0;
flex-wrap: nowrap;
}
.btnClass {
padding: 10px;
background: none;
border: 0;
outline: 0;
cursor: pointer;
align-self: center;
justify-self: right;
}
.btnClass:before {
content: url('https://img001.prntscr.com/file/img001/nLMdieVITRSq82yZdqlWOw.png');
}
p.tooltip-text {
color: black;
display: block;
visibility: hidden;
width: fit-content;
position: absolute;
border-radius: 2px;
z-index: 1;
background: white;
pointer-events: none;
padding: 6px 8px 20.2px 8px;
font-size: 1rem;
animation: fadein 0.2s ease-in;
animation-fill-mode: forwards;
}
p.tooltip-text:before {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -8px;
border: 8px solid transparent;
border-bottom: 8px solid white;
}
<div class="container">
<div id="c-content">
<div class="toprightcontrols">
<span name="btn1" id="btn1" class="btnClass" data-text="Hello there"></span>
<span name="xxxxx" id="xxxxx" class="btnClass" data-text="Tooltip"></span>
<span name="something" id="something" class="btnClass" data-text="Click me"></span>
<span name="randomid" id="randomid" class="btnClass" data-text="I'm a text"></span>
</div>
</div>
</div>
預期的結果必須是這樣的 =>

你能幫助我嗎?我嘗試使用 float, text-align, justify-content, margin: 0 auto,我看到的一切都集中但沒有任何效果
謝謝你。
uj5u.com熱心網友回復:
將需要作為中心參考的元素設為相對元素。在您的情況下,您想要對齊到.btnClass. 這樣,類就可以包裝其內容。
.btnClass {
position: relative;
}
之后,您可以將工具提示居中。將 left position 定義為50%,并使用transformwith translateX(-50%),這樣變換屬性將元素本身的 -50% 移動,這已經是 50% 向左,所以結果是完美對齊。
.tooltip-text {
left: 50%;
transform: translateX(-50%);
}
最后結果:
let collection = document.querySelectorAll("[data-text]");
collection.forEach((ele, ind) => {
var element = document.createElement("p");
element.className = "tooltip-text";
element.innerText = ele.dataset.text;
element.dataset.name = "_" ele.id ind;
document.getElementById(ele.id).appendChild(element);
document.querySelector('#' ele.id).addEventListener('mouseover', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'visible';
}, false);
document.querySelector('#' ele.id).addEventListener('mouseleave', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'hidden';
}, false);
});
.btnClass {
position: relative;
}
.tooltip-text {
left: 50%;
transform: translateX(-50%);
}
.container {
display: flex;
background: #ccc;
justify-content: center;
align-items: center;
height: 95vh;
}
.c-content{
width: 100%;
max-width: 800px;
position: relative;
overflow: hidden;
border-radius: 4px;
}
.toprightcontrols {
margin: 0 1.2% 0 0;
display: flex;
position: absolute;
justify-content: flex-end;
top: 0;
right: 0;
width: 150px;
padding-top: 0;
flex-wrap: nowrap;
}
.btnClass {
padding: 10px;
background: none;
border: 0;
outline: 0;
cursor: pointer;
align-self: center;
justify-self: right;
}
.btnClass:before {
content: url('https://img001.prntscr.com/file/img001/nLMdieVITRSq82yZdqlWOw.png');
}
p.tooltip-text {
color: black;
display: block;
visibility: hidden;
width: fit-content;
position: absolute;
border-radius: 2px;
z-index: 1;
background: white;
pointer-events: none;
padding: 6px 8px 20.2px 8px;
font-size: 1rem;
animation: fadein 0.2s ease-in;
animation-fill-mode: forwards;
}
p.tooltip-text:before {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -8px;
border: 8px solid transparent;
border-bottom: 8px solid white;
}
<div class="container">
<div id="c-content">
<div class="toprightcontrols">
<span name="btn1" id="btn1" class="btnClass" data-text="Hello there"></span>
<span name="xxxxx" id="xxxxx" class="btnClass" data-text="Tooltip"></span>
<span name="something" id="something" class="btnClass" data-text="Click me"></span>
<span name="randomid" id="randomid" class="btnClass" data-text="I'm a text"></span>
</div>
</div>
</div>
uj5u.com熱心網友回復:
看來我找到了解決方案。我補充說:
.btnClass {
display: flex;
justify-content: center;
align-items: center;
}
把每件事都放在中心,然后是這個:
p.tooltip-text {
top:30px;
}
垂直偏移它。
let collection = document.querySelectorAll("[data-text]");
collection.forEach((ele, ind) => {
var element = document.createElement("p");
element.className = "tooltip-text";
element.innerText = ele.dataset.text;
element.dataset.name = "_" ele.id ind;
document.getElementById(ele.id).appendChild(element);
document.querySelector('#' ele.id).addEventListener('mouseover', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'visible';
}, false);
document.querySelector('#' ele.id).addEventListener('mouseleave', () => {
document.querySelector('[data-name="' element.dataset.name '"]').style.visibility = 'hidden';
}, false);
});
.container {
display: flex;
background: #ccc;
justify-content: center;
align-items: center;
height: 95vh;
}
.c-content{
width: 100%;
max-width: 800px;
position: relative;
overflow: hidden;
border-radius: 4px;
}
.toprightcontrols {
margin: 0 1.2% 0 0;
display: flex;
position: absolute;
justify-content: flex-end;
top: 0;
right: 0;
width: 150px;
padding-top: 0;
flex-wrap: nowrap;
}
.btnClass {
padding: 10px;
background: none;
border: 0;
outline: 0;
cursor: pointer;
align-self: center;
justify-self: right;
display: flex;
justify-content: center;
align-items: center;
}
.btnClass:before {
content: url('https://img001.prntscr.com/file/img001/nLMdieVITRSq82yZdqlWOw.png');
}
p.tooltip-text {
color: black;
display: block;
visibility: hidden;
width: fit-content;
position: absolute;
top:30px;
border-radius: 2px;
z-index: 1;
background: white;
pointer-events: none;
padding: 6px 8px 20.2px 8px;
font-size: 1rem;
animation: fadein 0.2s ease-in;
animation-fill-mode: forwards;
}
p.tooltip-text:before {
content: "";
position: absolute;
bottom: 100%;
left: 50%;
margin-left: -8px;
border: 8px solid transparent;
border-bottom: 8px solid white;
}
<div class="container">
<div id="c-content">
<div class="toprightcontrols">
<span name="btn1" id="btn1" class="btnClass" data-text="Hello there"></span>
<span name="xxxxx" id="xxxxx" class="btnClass" data-text="Tooltip"></span>
<span name="something" id="something" class="btnClass" data-text="Click me"></span>
<span name="randomid" id="randomid" class="btnClass" data-text="I'm a text"></span>
</div>
</div>
</div>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526147.html
上一篇:如何用CSS創建斜線?
