You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在mix-blend-mode:multiply下让固定菜单文字始终为白色

解决方法

核心思路是把导航栏的背景层和文字层分离,只让背景层应用mix-blend-mode: multiply,文字层不受混合模式影响,以此保证文字始终显示白色。

修改后的完整代码如下:

body {margin:0;}

.navbar {
  overflow: hidden;
  position: fixed;
  top: 0;
  width: 100%;
  /* 移除原背景色与混合模式,设为透明 */
  background-color: transparent;
  z-index: 1;
}

/* 用伪元素单独承载背景与混合模式 */
.navbar::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #0071BC;
  mix-blend-mode: multiply;
  z-index: -1; /* 将背景层置于文字下方 */
}

.navbar a {
  float: left;
  display: block;
  color: white;
  text-align: center;
  padding: 14px 16px;
  text-decoration: none;
  font-size: 17px;
  position: relative; /* 确保文字层级高于背景层 */
}

.navbar a:hover {
  background: #ddd;
  color: black;
}

.main {
  padding: 16px;
  margin-top: 48px;
  height: 1500px; /* 用于示例滚动效果 */
  background: green;
}
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>

<div class="navbar">
  <a href="#home">Home</a>
  <a href="#news">News</a>
  <a href="#contact">Contact</a>
</div>

<div class="main">
  <h1>Fixed Top Menu</h1>
  <h2>Scroll this page to see the effect</h2>
  <h2>The navigation bar will stay at the top of the page while scrolling</h2>

  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
  <p>Some text some text some text some text..</p>
</div>

</body>
</html>

关键修改说明:

  • 移除.navbar本身的背景色和混合模式,设置背景为透明,避免文字直接参与混合
  • 通过::before伪元素创建独立的背景层,赋予原背景色和mix-blend-mode: multiply,并通过z-index: -1将其置于文字下方
  • 给.navbar a添加position: relative,确保文字层级高于伪背景层,不会被遮挡
  • 保留原有的hover交互效果不变

修改后,导航栏背景依然会与下方内容应用multiply混合模式,而文字因脱离混合层级,始终保持白色显示。

内容的提问来源于stack exchange,提问作者Samuele Bianchi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 10:48:17