javascript - 如何使用 html、css、javascript 获取隐藏内容以显示在光标上?

标签 javascript html css

有很多这样的话: 测试1 测试2 测试3 测试4 测试5 测试6 测试7 测试8 测试9 测试10 测试11 ...

每个单词都与多个例句相关联。我希望在光标移到单词上之前隐藏它们。这是我的代码。

演示:https://jsfiddle.net/kyubyong/umxf19vo/

HTML:

<a><b>test1</b></a>
<div class="divs">
    <li>This is the first example</li>
    <li>This is the second example</li>
    <li>This is the third example</li>
</div>
<a><b>test2</b></a>
<div class="divs">
    <li>This is the first example</li>
    <li>This is the second example</li>
    <li>This is the third example</li>
</div>

CSS

a:hover
{
    background-color: lightgray;
}

.divs 
{
  display: none;
}

a:hover + .divs 
{
    display: block;
    position: absolute;
    background-color: lightgray;
    width: 100%;
    padding: 5px;
}

问题是当原始行不止一行时,例句 block 覆盖了底行的单词。我希望它们下降,这样例句就不会覆盖它们。

最佳答案

由于您使用的是 Javascript、HTML 和 CSS 标记,我假设您不介意使用 Javascript 来解决问题。你的问题发生的原因是因为你正在使用 position: absolute在你的 <div>的。这意味着该位置将以相对于其祖先元素的绝对方式定位。

您可以做的是先放置所有标题,然后放置所有列表,然后使用 javasript 选择要显示/隐藏的适当元素。您可以在下面找到如何使用 jQuery 执行此操作的示例。

$('div').hover(function() {
  $($(this).attr("target")).toggle();
}, function() {
  $($(this).attr("target")).toggle();
});
div {
  display: inline;
  background: lightgray;
}
div:hover {
  background: darkgray;
}
.hidden {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div target="#test">Test</div>
<div target="#animals">Animals</div>
<div target="#fruits">Fruits</div>
<div target="#vegetables">Vegetables</div>
<div target="#cars">Cars</div>
<div target="#countries">Countries</div>
<div target="#continents">Continents</div>
<div target="#sports">Sports</div>

<div id="test" class="hidden">
  <ul>
    <li>Test 1</li>
    <li>Test 2</li>
    <li>Test 3</li>
  </ul>
</div>
<div id="animals" class="hidden">
  <ul>
    <li>Lion</li>
    <li>Tiger</li>
    <li>Gazzele</li>
  </ul>
</div>
<div id="fruits" class="hidden">
  <ul>
    <li>Apple</li>
    <li>Banana</li>
    <li>Orange</li>
  </ul>
</div>
<div id="vegetables" class="hidden">
  <ul>
    <li>Potatoe</li>
    <li>Tomatoe</li>
    <li>Lettuce</li>
  </ul>
</div>
<div id="cars" class="hidden">
  <ul>
    <li>Ferrari</li>
    <li>Porsche</li>
    <li>Audi</li>
  </ul>
</div>
<div id="countries" class="hidden">
  <ul>
    <li>United States</li>
    <li>Canada</li>
    <li>Mexico</li>
  </ul>
</div>
<div id="continents" class="hidden">
  <ul>
    <li>America</li>
    <li>Europe</li>
    <li>Africa</li>
  </ul>
</div>
<div id="sports" class="hidden">
  <ul>
    <li>Tennis</li>
    <li>Football</li>
    <li>Basketball</li>
  </ul>
</div>

关于javascript - 如何使用 html、css、javascript 获取隐藏内容以显示在光标上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31421252/

相关文章:

javascript - Sencha Touch - 导航 View 内的 NestedList

javascript - 获取具有选择器值的属性

javascript - 控制 Javascript 选择器

html - HTML 中的分页符

javascript - angularjs 进度条动态宽度

javascript - 在后台操作 'temporary dom'

javascript - 使用 Jquery 添加行 - 需要增加输入名称和 onkeyup 事件调用者

javascript - 不需要CSS的轻量级对话框插件

javascript - 禁用按 Tab 按钮进入 Web 表单中的下一个输入字段

javascript - Nashorn loadWithNewGlobal 功能细节