我正在制作一个按钮悬停效果,当你悬停时,单个角色会翻转起来.这几乎是完美的,但不知何故,它消除了单词之间的空格,所以按钮现在显示的是‘Thisisat ext’,而不是‘This is a Text’,我try 了很多方法,但似乎找不到正确的解决方案:

演示:

https://codepen.io/pixelarchitect/pen/mdQXjgx

SCSS:

.btn-text {
transform: translateY(var(--y)) translateZ(0);
transition: transform 0.3s ease;

  div {
  display: flex;
  overflow: hidden;
  text-shadow: 0 1rem 0 white;

    span {
    display: block;
    backface-visibility: hidden;
    transition: transform 0.25s ease;
    transform: translateY(var(--m)) translateZ(0);

      @for $i from 1 through 12 {
        &:nth-child(#{$i}) {
          transition-delay: $i * 0.05s;
        }
      }
    }
  }

  &:hover {
    span {
      --m: calc(1rem * -1);
    }
  }

}

JS:

document.querySelectorAll('.btn-text').forEach(button => {
const words = button.textContent.trim().split(' ');
button.innerHTML = '<div>' + words.map(word => '<span>' + word.split('').join('</span><span>') + '</span>').join(' ') + '</div>';
});

推荐答案

S,在你的<span />英尺基础上再加white-space: pre

...
span {
      white-space: pre;
      ...

在JS中保留空白:

document.querySelectorAll(".btn-text").forEach((button) => {
  const words = button.textContent.trim().split("");
  button.innerHTML =
    "<div>" + words.map((word) => `<span>${word}</span>`).join("") + "</div>";
});

working demo (codepen)

Javascript相关问答推荐

获取表格的左滚动位置

ReactJS中的material UI自动完成类别

node TS:JWT令牌签名以验证客户端和后台问题之间的身份验证

Javascript,部分重排序数组

无法在nextjs应用程序中通过id从mongoDB删除'

Redux查询多个数据库Api reducerPath&

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

空的结果抓取网站与Fetch和Cheerio

分层树视图

单个HTML中的多个HTML文件

Reaction组件在本应被设置隐藏时仍显示

以编程方式聚焦的链接将被聚焦,但样式不适用

在JS中动态创建对象,并将其追加到HTML表中

我想使用GAS和HTML将从Electron 表格中获得的信息插入到文本字段的初始值中

FileReader()不能处理Firefox和GiB文件

JavaScript&;Reaction-如何避免在不使用字典/对象的情况下出现地狱?

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';

ComponentWillReceiveProps仍在React 18.2.0中工作

如何向内部有文本输入字段的HTML表添加行?

使用python,我如何判断一个html复选框是否被隐藏,以及它是否被S选中?