【问题标题】:How do you get a triangle hover effect on a pure css navbar?如何在纯 CSS 导航栏上获得三角形悬停效果?
【发布时间】:2019-09-25 13:42:40
【问题描述】:

我想在文本下方有一个小三角形,当用户将鼠标悬停在不同的选项卡上时,它会指向上方。这是我正在使用的一些代码。

css navbar

* {
  margin: 0;
  padding: 0;
  list-style: none;
}

body {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 11px;
  margin: 10px;
}

.tab {
  width: 100%;
  padding: 5px;
  background: #fff;
  color: #000;
  cursor: pointer;
  font-weight: bold;
  border-bottom: 1px solid black;
  position: relative;
}

.tab:hover {
  background: #a0a0a0;
}

.tab:hover span {
  display: block;
}

.tab_child {
  padding: 15px;
  background: #fff;
}

.selected {
  background: #a0a0a0;
}

.contain * {
  float: left;
  width: 100px;
}

span.triangle {
  background-image: url("http://www.inner.org/torah_and_science/mathematics/images/triangle.gif");
  background-repeat: none;
  display: none;
  height: 14px;
  width: 16px;
  position: absolute;
  top: 25px;
  left: 25%;
}
<div class="contain">
  <div id="one" class="tab selected">Link1</div>
  <div id="two" class="tab">Link2</div>
  <div id="three" class="tab">Link3</div>
  <div id="four" class="tab">Link4</div>
  <div id="five" class="tab">Link5</div>
</div>

【问题讨论】:

  • 您的哪一部分有问题?
  • 这里是如何制作一个 CSS 三角形:stackoverflow.com/questions/7073484/… - 你可以把它放在你的 tab-div 中并使用三角形的颜色(与 background = invisible 相同,在悬停时更改颜色等)
  • 我想这就是我遇到问题的部分,任何时候我在其中添加一个三角形都会搞砸一切。像这样:jsfiddle.net/88Uxw/2

标签: html css css-shapes


【解决方案1】:

我认为这可能是您正在寻找的:

Fiddle

另外,请使用语义标记:

  1. 如果您使用 HTML5 将导航包裹在 &lt;nav&gt; 标记中。
  2. 您的链接(如果它们真的是链接)应该是&lt;a&gt; 元素。
  3. 对于您拥有的链接列表,建议使用列表 (&lt;ul&gt; & &lt;li&gt;)。

body {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 11px;
}

nav ul {
  margin: 0;
  padding: 0;
  list-style: none;
}

nav li {
  float: left;
  width: 20%;
}

nav a {
  display: block;
  padding: 5px;
  border-bottom: 1px solid black;
  background: #fff;
  color: #000;
  font-weight: bold;
  position: relative;
}

nav a:hover,
.active {
  background: #bbb;
}

nav a:hover:after {
  content: "";
  display: block;
  border: 12px solid #bbb;
  border-bottom-color: #000;
  position: absolute;
  bottom: 0px;
  left: 50%;
  margin-left: -12px;
}
<nav>
  <ul>
    <li><a href="#" class="active">Link1</a></li>
    <li><a href="#">Link2</a></li>
    <li><a href="#">Link3</a></li>
    <li><a href="#">Link4</a></li>
    <li><a href="#">Link5</a></li>
  </ul>
</nav>

【讨论】:

    【解决方案2】:

    Here 是对您的jsfiddle 的修改:

    我添加了一个 &lt;span class="arrow"&gt;&lt;/span&gt; 来包含 HTML 中的三角形:

    <div class="tab_container">
        <div id="test1-header" class="accordion_headings header_highlight" >Home<span class="arrow"></span></div>
        <div id="test2-header" class="accordion_headings" >About<span class="arrow"></span></div>
        <div id="test3-header" class="accordion_headings" >Work<span class="arrow"></span></div>
        <div id="test4-header" class="accordion_headings" >Social<span class="arrow"></span></div>
        <div id="test5-header" class="accordion_headings" >Contact<span class="arrow"></span></div>
    </div>
    

    以下是对您的菜单所做的更改,这些更改减小了三角形的大小,并将鼠标悬停在每个菜单项的底部中心位置: CSS:

    /*
    .accordion_headings:hover{
        background:#00CCFF;
        width: 0;
        height: 0;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-bottom: 5px solid red;
    }
    */
    .accordion_headings{
        position:relative;
    }
    .accordion_headings .arrow{
        display:none;
    }
    .accordion_headings:hover .arrow{
        width: 0;
        height: 0;
        border-left: 5px solid transparent;
        border-right: 5px solid transparent;
        border-bottom: 5px solid red;
    
        display:block;
        position:absolute;
        bottom:0;
        left:49%;
    }
    

    【讨论】:

      【解决方案3】:

      这是一个fiddle,它使用了一个背景图像,将显示在悬停的菜单项上。它不漂亮,但进一步的 css 应该对此有所帮助。

      更新

      抱歉,我一定是看错了。这是一个有效的fiddle,带有一个指向正确方向的较小箭头。

      【讨论】:

      • 也许我错过了它,但我在 chrome 中看不到任何东西。
      • “我想在文本下方有一个小三角形,当用户将鼠标悬停在不同的选项卡上时,它会指向上方。”您的解决方案如何回答这个问题?
      • 我对“纯css导航栏”的理解是排除图片。
      • 我认为它只是没有使用任何脚本。我同意这不符合该要求。
      猜你喜欢
      • 2020-02-07
      • 1970-01-01
      • 2021-12-22
      • 2017-09-02
      • 1970-01-01
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2018-10-06
      相关资源
      最近更新 更多