html - 在具有填充而不是边距的元素上使用框阴影

标签 html css

带有框阴影的菜单。我需要给它一个 30px 的 padding top 而不是 margin-top ,这样当父菜单悬停时,子菜单出现并在光标向下移动到两者之间的空间时保持出现。如果我给它 margin-top 30px 那么 box-shadow 工作正常,但是当将光标向下移动远离父项时子菜单消失

这是它的样子的图片

enter image description here

如您所见,子菜单顶部有填充,但框阴影会受到填充的影响。

有什么方法可以让框阴影到达第一个白名单项的顶部边缘,而不是将其向下推并在保持填充的同时创建透明区域?

这是最基本的代码:

HTML:

<ul>
    <li>text</li>
    <li>text</li>
    <li class="menu-item-has-children">text
        <ul class="submenu">
            <li>text</li>
            <li>text</li>
        </ul>
    </li>
</ul>

CSS:

 li {
     position: relative;
 }

 .menu-item-has-children:hover .submenu {
     display: none;
 }

 .menu-item-has-children:hover .submenu {
      display: block;
      padding-top: 30px;
      position: absolute;
      box-shadow: 0px 1px 15px 0px rgba(0, 0, 0, 0.15);
 }

有人知道如何解决这个问题吗?

谢谢

最佳答案

我意识到我在这方面来晚了,但我遇到了类似的问题,并在寻找解决方案时找到了这篇文章。我想我会继续并添加一个可能对将来某人有用的答案。使用 filter:drop-shadow 代替 box-shadow。这会忽略框模型,只会影响下拉元素本身。

像这样的东西应该对你有用:

 .menu-item-has-children:hover .submenu {
     display: block;
     padding-top: 30px;
     position: absolute;
     filter: drop-shadow(0px 1px 15px rgba(0, 0, 0, .15));
 }

关于html - 在具有填充而不是边距的元素上使用框阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44426998/

相关文章:

javascript - Gwt 按钮需要双击才能加载 div 中的所有数据

javascript - 单击特定网站中的链接( anchor 标记)后显示数据

javascript - 如何在 jQuery 中访问父项的子项

html - 如何使用 CSS 将工作菜单放在 PNG 图像后面?

html - 如何在保持绝对位置的同时使图像向左浮动?

javascript - 弹出图片html

html - 如何将相同尺寸的卡片对齐到中心?

html - Thymeleaf:在此上下文中只允许返回数字或 bool 值的变量表达式

javascript - 克隆一个 div 但它的格式不像主 div

CSS 在 IE 中不工作