html - 如何将此形状作为菜单项的边框?

标签 html css css-shapes

我正在创建一个菜单,我想在您将鼠标悬停在一个菜单项上时实现这种外观:

enter image description here

如您所见,当您悬停菜单项时(悬停的 li a),会出现这个浅蓝色形状。

有没有一种方法可以使用像 li a:hover:afterborder-bottom 这样的伪元素来实现这一点,而不必使用棘手的“隐藏图像”技术?

最佳答案

您可以使用 :after 伪元素作为边框,使用 border-radius 来创建边框形状。

ul {
  display: flex;
  list-style-type: none;
  flex-direction: column;
  align-items: center;
  padding: 0;
}
li {
  margin: 10px 0;
  position: relative;
  cursor: pointer;
}
li:after {
  content: '';
  width: 130%;
  height: 3px;
  border-radius: 50%;
  position: absolute;
  transform: translateX(-15%);
  background: #5F8AAA;
  left: 0;
  bottom: -5px;
  opacity: 0;
  transition: opacity 0.3s linear;
}
li:hover:after {
  opacity: 1;
}
<ul>
  <li>Lorem ipsum</li>
  <li>Lorem ipsum</li>
  <li>Lorem ipsum</li>
</ul>

您还可以使用 radial-gradient 来更好地控制边框的外观。

ul {
  display: flex;
  flex-direction: column;
  list-style-type: none;
  align-items: center;
  padding: 0;
}
li {
  margin: 10px 0;
  position: relative;
  cursor: pointer;
}
li:after {
  content: '';
  width: 130%;
  height: 3px;
  position: absolute;
  transform: translateX(-15%);
  background: radial-gradient(ellipse at center, rgba(111,182,232,1) 0%, rgba(111,182,232,1) 40%, rgba(211,229,242,1) 70%, rgba(255,255,255,0) 80%, rgba(255,255,255,0) 100%);
  left: 0;
  bottom: -5px;
  opacity: 0;
  transition: opacity 0.3s linear;
}
li:hover:after {
  opacity: 1;
}
<ul>
  <li>Lorem ipsum</li>
  <li>Lorem ipsum</li>
  <li>Lorem ipsum</li>
</ul>

关于html - 如何将此形状作为菜单项的边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832627/

相关文章:

javascript - 缓存 list 导致 $.getJSON 停止

css - 如何使用 CSS 填充设置 primefaces 数据表列填充

html - 使用 animate.css 创建效果预览

css - 如何在CSS中创建一个不规则的正方形?

css - 在 CSS 中创建 donut 形状

html - 斜边的形状(响应式)

javascript - 一次选中 4 个复选框并将页面重定向到新页面

html - 使用 float 的 CSS tile 布局

javascript - 将文本框的值传递到另一个页面 html

css - CSS有没有第二个字母伪元素