使用 mix-blend-mode 制作 CSS 文本:仅区别不透明黑/白

2023-12-15

我正在尝试对网站上的文本应用效果,其中字体颜色会根据屏幕上的文本位置而变化。您可以看到文本分为黑色和白色,当我更改浏览器窗口大小时,白色和黑色区域会增加或减少,具体取决于背景的位置 - 在本例中是黑色 div 和图片。

This should be the final result: enter image description here

But I'm getting this: enter image description here

正如你所看到的,在字体与白色背景相遇的地方,颜色变成黑色,这很好,但是当字体穿过女士图像时,字体变得有点透明,显示后面的图像。在这种情况下,即使字体与背景图像交叉,字体仍应为黑色。

我使用 CSS 上的 mix-blend-mode 实现了这种效果,但我找不到文本与背景图像相遇的解决方案。

你们有任何其他解决方案或关于如何改进这个问题的想法吗? 我在网上找不到任何东西。

这是组件代码:

import { NavLink } from "react-router-dom";
import arrowRight from "./../../../assets/icon-arrow-right.svg";
import heroImg from "./../../../assets/desktop/[email protected]";

export function HomeTop() {
  return (
    <section className={style.homeTopContainer}>
      <h1>
        Modern <br /> Art Gallery
      </h1>
        <div className={style.blackBg}></div>
        <img
          src={heroImg}
          alt="a man and a woman standing in front of a paint hanging on a white wall"
          className={style.heroImg}
        />
      <div className={style.topTextBtn}>
        <p>
          The arts in the collection of the Modern Art Gallery all started from
          a spark of inspiration. Will these pieces inspire you? Visit us and
          find out.
        </p>
        <NavLink
          to="/location"
          style={{ textDecoration: "none" }}
          className={style.locationBtn}
        >
          <button className={style.btn1}>Our Location</button>
          <button className={style.btn2}>
            <img src={arrowRight} alt="arrow right icon" />
          </button>
        </NavLink>
      </div>
    </section>
  );
}

这是应用于 H1 的 CSS:

.homeTopContainer h1 {
  position: absolute;
  width: 284px;
  left: 14.4%;
  top: 20%;
  font-weight: 900;
  font-size: 9.6rem;
  color: var(--color4-white);
  line-height: 8.8rem;
  text-transform: uppercase;
  white-space: nowrap;
  mix-blend-mode:difference;
}

这是网站,如果您想查看的话:现代艺术画廊.

如果您想使用代码,这也是类似的情况:https://jsfiddle.net/4nwbprg8/


我怀疑是否可以通过使用 mix-blend-mode: Difference 来实现您想要的效果。它的工作方式不同,因为它遇到背景颜色并计算它们,然后你得到颜色的结果。您可以尝试使用“//codepen.io/ashraftoobler/pen/VeoVPL”

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 mix-blend-mode 制作 CSS 文本:仅区别不透明黑/白 的相关文章

  • 图像右边缘淡入/模糊 CSS

    我有一个简单的 CSS 相关问题 如何获得如图所示的右端模糊 淡入淡出 两种方法 让我们这样做 1 使用盒子阴影 浏览器兼容性 IE 9 为盒子阴影 http caniuse com feat css boxshadow 放置适当box s
  • Cocoa webview UserAgent“webkit-legacy”问题

    我解决了这个问题 请看下面所选的答案 我一直在努力寻找导致 OSX Cocoa 应用程序的 WebView 与 Safari 表现不同的原因 事实证明 用户代理是不同的 有点明显 并且我正在访问的网站不知道如何处理它 令人惊讶的是 它是ht
  • 如何使用 CSS 使表格中的分隔线/边框消失?

    我有一个简单的 HTML 表格 我希望分隔线 边框 消失 所需的最终结果是一个除了实际文本之外不可见的表格 我尝试将 border 属性设置为 0 但没有帮助 我应该使用什么正确的 CSS 属性 table tr td th border
  • 当您点击外部时,Bootstrap 3 Mobile 导航不会崩溃

    当我单击 触摸菜单外部时 我的 Bootstrap 3 移动菜单确实会折叠 我可以想出一个解决问题的方法 document on touchstart click html not nav function navbar collapse
  • 具有列顺序的响应式多列列表

    我正在尝试创建一个有序的多列列表 但正在努力解决 CSS 网格布局规则 期望的结果应该是响应式的 在小屏幕上有 2 个网格列 在较大的屏幕上最多有 4 个网格列 同时保持列顺序 而不是像这样排序 1 2 3 4 5 6 7 8 9 10 1
  • 为什么边框会增加元素的宽度?

    我有一个div如下 其指定宽度为 300px 边框宽度为 2px 为什么2px边框会导致宽度div是304px 如果我希望它有边框但宽度仍为 300 像素怎么办 test width 300px height auto border 2px
  • 两列宽度可变且它们之间的间隙固定

    我需要动态设置两列的样式 它们各自的宽度应为 50 但它们之间的固定间隙为 10px 当我折叠菜单时 列应加宽至可用空间 并且间隙应保持 10 像素 因此 列不能采用固定宽度 我试过这个 container background red w
  • 文本溢出上的点样式:省略号

    是否可以对点进行样式设置text overflow ellipsis 一个例子是将省略号加粗 如 Lorem Ips 灵感来自这个答案 https stackoverflow com a 21861334 3244925 这是一种设置省略号
  • jQuery:根据鼠标位置移动的全屏“背景”图像[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试实现一个根据鼠标位置移动的全屏背景 例如 如果您将鼠标移动到左上角 视口将显示图像的左上角以
  • CSS 粘性页脚实现之间的区别?

    我发现了 CSS 粘性页脚的 2 种不同实现 Ryan Fait 粘页脚 http ryanfait com sticky footer http ryanfait com sticky footer 史蒂夫 哈彻粘页脚 http www
  • 使用 HTML 和 CSS 创建横向和纵向布局

    我有一个要求 我需要编写一个 HTML CSS 它应该显示横向和纵向 具体取决于 iPad 的方向 最初我想使用 HTML 和 CSS 编写这个 然后将其用于 iPad发展 我的问题是实现这一目标的最佳方法是什么 拥有两个不同的 html
  • 如何在 Angular 应用程序中动态更改 CSS 类名称?

    我有两个 CSS 类名 如下所示 icon heart color bdbdbd icon heart red color a6b7d4 我的 HTML 包含一个心形图标 div class icon heart div
  • Bootstrap:列表内联项目符号?

    有人知道如何在 Bootstrap 3 中水平列表中的元素之间添加项目符号 分隔符吗 ul class list inline li Author Michal li li Modified 17 08 2014 li li Comment
  • 裁剪响应式全宽图像

    我必须剪辑跨越整个宽度的图像 以下事情对我不起作用 剪辑 这需要绝对位置 因此块元素不会堆叠在下面 背景位置 缩放时无法正确剪辑 放大时剪辑的部分会增加 反之亦然 包装器 包装器高度取决于浏览器宽度 因此其值应该是动态的 我使用了 seti
  • iPhone 4 上不稳定的 CSS3 动画

    我有一个非常简单的 或者至少我认为是 动画 我所做的只是 webkit background size 的动画 bubble position relative width 397px height 326px background url
  • 如何使div垂直滚动[重复]

    这个问题在这里已经有答案了 我用图片元素列表做了一个水平滚动 但是当我垂直滚动它时我失败了 我的水平滚动条代码是 div class pic container div class pic row div style width 100 a
  • 如何在 CSS 中选择纯 HTML 文本?

    你们有人知道如何在 CSS 中选择纯 HTML 文本吗 我有以下结构 div p class caption caption1 p div class tabs div class moving bg div p class text ta
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • 如何选择一个元素但排除其子元素

    我明白 div hover not class 作品 但是 如何实现 LI 元素的 悬停 效果 但排除鼠标悬停在LI内的某个 DIV 上时的悬停效果 E G li Hello div Bye div li 我想获得 li 的悬停效果 li
  • JQuery 设置动态最大宽度

    我不太擅长 jQuery 因此完整的代码解决方案将是理想的选择 该函数将 获取浏览器屏幕的 70 宽度 将该宽度转换为其相应的 px 值 设置最大宽度 mainContainer使用从转换 计算中获得的值 这是我要设置的容器的 CSS 样式

随机推荐