如何让圆形logo的CSS box-shadow显示在导航栏下方实现整体融合效果
问题根因
<img>属于替换元素,本身不支持:before、:after伪元素,你之前给.logo(绑定在img标签上)写的伪元素样式完全不会生效,这是阴影直接消失的核心原因。- 父级导航栏
.topnav没有配置正确的定位和堆叠上下文,导致z-index层级表现不符合预期。
解决方案
你只需要给logo套一层容器,把阴影配置在容器上,调整层级即可实现导航栏和logo阴影统一的效果,修改后的代码如下:
修改后的HTML代码
<!DOCTYPE html> <html lang="en-UK"> <head> <title>WOW</title> <link rel="icon" href="icon.png"> <link rel="stylesheet" href="styles.css"> </head> <body> <nav class="topnav"> <!-- 新增logo容器 --> <div class="logo-wrap"> <img class="logo" src="icon.png"> </div> </nav> </body> </html>
修改后的CSS代码
html{ overflow-y: scroll; } body { font-family: "Arial", Helvetica, sans-serif; font-weight: bold; font-size: 20px; color: #DCDCDC; background-color: #222035; margin: 0px; } .centered { position: absolute; left: 50%; transform: translate(-50%); } /* 新增logo容器样式 */ .logo-wrap { position: relative; top: 100%; left: 50%; transform: translate(-50%, -50%); width: fit-content; height: 100%; border-radius: 100%; box-shadow: 0 2vh 5vh #000000; z-index: 1; } .logo { height: 100%; width: auto; border-radius: 100%; } .topnav { position: relative; box-shadow: 0px 2vh 5vh #000000; width: 100%; height: 15vh; background-color: #222035; } header { padding: 170px; }
效果说明
导航栏本身的阴影和logo容器的阴影参数完全一致,会自然衔接成统一的阴影效果,logo本身正常显示在导航栏中部突出位置,视觉上是一个整体对象。
内容的提问来源于stack exchange,提问作者SuitYourself
相关产品推荐
相关产品推荐

