- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试像这个 CodePen 一样狂欢使用 React Hooks。
我目前的结果在这个沙盒中:Click..!
我面临的问题是:
CodePen
示例中那样制作字母出现并形成文本并散射回来的 CSS 动画效果。description={data.desc}
中的描述部分。我是否必须再次拆分或使用任何简单的方法将标题和描述拆分在一起。我的知识滞后于此。我的代码如下:
import React from "react";
export default function SlideCard(props) {
const { id, idx, title } = props;
function mainText() {
return (
<div style={{ border: "2px solid gold" }}>
<h1>{title}</h1>
</div>
);
}
//console.log(id);
function scatter() {
return (
<div>
{title.split("").map((item, index) => {
const style = {
position: "absolute",
top: Math.floor(Math.random() * 200) + "px",
left: Math.floor(Math.random() * 400) + "px",
zIndex: "initial",
color: "#AAA",
overflow: "hidden",
transition: "left 2s, top 2s, color 2s"
};
return (
<div key={index}>
<div className="scatter" style={style}>
{item}
</div>
</div>
);
})}
</div>
);
}
return (
<div>
<div>{idx === id && mainText()}</div>
{idx !== id && scatter()}
</div>
);
}
最佳答案
他正在维护每个页面数据的两个相同副本。一种是 .position-data
类,另一种是 .mutable
类。 .position-data
是隐藏的,仅用于获取坐标以将 .mutable
字母组合在一起。
这是 CodePen
示例的简化版本:
$(document).ready(function() {
assemble();
});
function scatter() {
for (var i = 0; i < 3; i++) {
var randLeft = Math.floor(Math.random() * $(window).width());
var randTop = Math.floor(Math.random() * $(window).height());
//randomly position .mutable elements
$(".mutable > span:eq(" + i + ")").animate({
left: randLeft,
top: randTop,
color: "#0005"
}, 2000, "easeInBack");
}
}
function assemble() {
for (var i = 0; i < 3; i++) {
$(".mutable > span:eq(" + i + ")").animate({
//get center position from .position data marked elements
left: $(".position-data > span:eq(" + i + ")").offset().left + "px",
top: $(".position-data > span:eq(" + i + ")").offset().top + "px",
color: "#000"
}, 2000, 'easeOutBounce');
}
}
span {
font-size: 30px;
}
.position-data {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 0.4;
color: green;
}
.mutable span {
position: absolute;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<div class="position-data">
<span>a</span>
<span>b</span>
<span>c</span>
</div>
<div class="mutable shadowed">
<span>a</span>
<span>b</span>
<span>c</span>
</div>
<button onclick="scatter()">Scatter</button>
<button onclick="assemble()">Assemble</button>
I want to position the actively displaying Text container to the centre of the carousal.
主动显示的文本容器用 .mutable
类标记,该类具有以下 css:
.mutable {
position: absolute;
overflow: hidden;
display: inline-block;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
所以他们都有文档正文的全尺寸。在 codepen 中使用 javascript 函数 arrangeCurrentPage()
设置坐标,使它们看起来居中。
I don't know how to make that transition effect of the letters coming and forming the text and scattering back as in the CodePen example.
引用上面的简化代码。使用按钮分别查看效果。所有字母元素都放在类为 .mutable
的 div 中。所有字母都是 position: absolute;
所以它们可以自由移动到任何地方。在 javascript 函数 scatter()
中,我只是将 top
和 left
属性分配给随机坐标。有了动画效果,它们会顺利散开。在codepen中他使用css transition transition: left 2s, top 2s, color 2s; 实现动画效果
要将它们带回来,只需使用 css 选择器 nth-child .position-data > span:eq(n)
来获取字符的相应坐标。引用 javascript 函数 assemble()
。
I want to include the description part also which is in the description={data.desc}. Do I have to make the split again or any easy method to split both title and description together. I lag knowledge here.
因为标题和描述将以不同的呈现方式分开显示。如果您单独保留它们的拆分版本,代码将会更清晰。您可以创建诸如 split(text)
、scramble(array)
、arrange(array)
之类的实用方法,并将其用于两者,例如 cramble(titleArray)
和scramble(descArray)
。
如果我们在字母上使用“position:relative”,我们就不必维护相同数据的两个副本:
<!DOCTYPE html>
<head>
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script>
$(document).ready(function() {
assemble();
});
function randomX() {
return Math.floor(Math.random() * $(window).width() * 0.7) - $(window).width() * 0.25;
}
function randomY() {
return Math.floor(Math.random() * $(window).height() * 0.7) - $(window).height() * 0.25;
}
function scatter() {
for (var i = 0; i < 3; i++) {
$(".mutable > span:eq(" + i + ")").animate({
left: randomX(),
top: randomY(),
color: "#f118"
}, 2000, "easeInBack");
}
}
function assemble() {
for (var i = 0; i < 3; i++) {
$(".mutable > span:eq(" + i + ")").animate({
left: '0px',
top: '0px',
color: "#000"
}, 2000, 'easeOutBounce');
}
}
</script>
<style>
span {
font-size: 30px;
}
.mutable {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
.mutable span {
position: relative; /* <--- */
}
</style>
</head>
<body>
<div class="mutable">
<span>a</span>
<span>b</span>
<span>c</span>
</div>
<button onclick="scatter()">Scatter</button>
<button onclick="assemble()">Assemble</button>
</body>
</html>
关于javascript - 如何在 React carousal 中为字母表添加动画效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69864783/
如何确定字符串是否只包含字母,而我想要的只是 [a-zA-Z]+,那么有什么方法可以通过区域设置确定字母吗? 最佳答案 Character类具有诸如 isLetter 之类的方法它将能够确定一个字符是
有没有更简单的方法将非 html 字母转换为 html 字母?例如,如果我执行 function("a") 它将返回 "a" 我知道如何执行此操作的唯一方法是: def function(text)
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 6 年前。 Improve this ques
这是我希望用字母表添加到我的 UITableView 的改进: 如果我的表中没有不以字母之一开头的结果,我不想在我的 UITableView 中看到这个 titleForHeaderInSection
我有以下代码,可将16位整数的流数据转换为无符号8位整数。 我希望将它们转换为按字母顺序排列的数据值并查看它们包含的内容。 #include int main() { FILE
我目前正在构建一个基于 icu4j 的音译 Web 界面。自动检测用户输入查询的脚本系统的最佳方式是什么? 例如如果输入是 body 里或 عالمتاب 我如何/应该识别它来自哪个脚本系统? 最佳答
字母表(及其索引)可以在这里找到: http://www.garykessler.net/library/base64.html 有没有比 alphabet = ['A','B',...] 更短的方式
为了在 Android 模拟器上显示 Tifinagh 字符,我尝试了这个方法: TextView tv=(TextView)findViewById(R.id.font); Typeface fac
有没有办法使用 Perl '..' 运算符创建 UTF-8 字母数组? 例如,这个是行不通的: $ cat t.pl #!/usr/bin/perl use Data::Dumper; use enc
字母表“a,b,c”上具有相同数量的子串“ab”和“ba”的所有字符串的语言是否是正则的? 我认为答案是否定的,但是很难对其进行正式演示,甚至是非正式演示。 关于如何解决这个问题有什么想法吗? 最佳答
我正在编写一个处理基因序列的程序,我想将每个核苷酸存储在一个字节中,其中每个位代表基因字母表 A,C,G,T 中的一个字母(显然只有一半的比特会被使用)。 我的编码如下: A = 0b1000 C =
所以,我想构建一个正则表达式,我可以传入一个由 0 和 1 组成的字符串(例如“0010101000111100100011110001101100011”),然后确保对于每 6 个连续字符,其中至少
我是一名优秀的程序员,十分优秀!