html - 如何知道“translateX”动画中的最大“宽度”?
问题描述
我只想创建类似于旋转木马的东西。(轮播仅适用于桌面)。
<div class="wrapper">
<div class="image-container">
<img alt="Siac" src="https://diey.now.sh/Icons/Clients/SIAC_LOGO.svg">
<img alt="Change" src="https://diey.now.sh/Icons/Clients/CHANGE_LOGO.svg">
<img alt="HF" src="https://diey.now.sh/Icons/Clients/H_F_Logo.svg">
<img alt="VDM" src="https://diey.now.sh/Icons/Clients/VDM_Logo.svg">
<img alt="Reviu" src="https://diey.now.sh/Icons/Clients/Reviu_Logo.svg">
<img alt="Total Capital" src="https://diey.now.sh/Icons/Clients/Total_Capital_Logo.svg">
<img alt="AdelantaT" src="https://diey.now.sh/Icons/Clients/AdelantaT_Logo.svg">
<img alt="Ayssa" src="https://diey.now.sh/Icons/Clients/Ayssa_Logo.svg">
<img alt="Carga Logística" src="https://diey.now.sh/Icons/Clients/Carga_Logistica_Logo.svg">
</div>
</div>
/* These padding is here because the real page use them */
.wrapper {
padding: 0 2.5em;
@media (min-width: 1024px) {
padding: 0 8em;
}
@media (min-width: 1280px) {
padding: 0 12em;
}
}
.image-container {
@media (min-width: 768px) {
display: flex;
overflow-x: scroll;
width: 100%;
::-webkit-scrollbar {
width: 0px;
background: transparent;
}
}
}
img {
@media (min-width: 768px) {
height: 100px;
width: 240px;
flex-shrink: 0;
animation: moveSlideShow 9s ease-in-out alternate infinite;
@keyframes moveSlideShow {
100% {
transform: translateX(-1440px);
}
}
}
@media (min-width: 1280px) {
@keyframes moveSlideShow {
100% {
transform: translateX(-1200px);
}
}
}
}
如果您检查转换,它适用于正确的屏幕尺寸,例如,如果屏幕的宽度正好为 768 像素,则 translateX 将为 -1440 像素,因为:
共有 9 张图片,每张图片宽度为 240 像素
240 * 9 = 2160 像素
现在,默认情况下,在这个尺寸的屏幕上,它应该显示 3 张图像,所以,如果我想忽略这些图像并translateX
完全做到最后,我应该这样做:
2160 - (240 * 3) = 1440 像素
就是这样,但仅限于那个尺寸,如果屏幕有点大或小一点,动画不是正确的,我该如何计算translateX
应该使用的正确宽度?
这个项目正在使用 React.js 和 Styled-components,也许一些 javascript 可以帮助我,但我不知道我应该使用什么代码...... :( 如果你有 React-spring 的解决方案,那就太好了,因为我正在学习它,使用这个工具的解决方案会很有趣:)
解决方案
使用calc
函数,如calc(100% - 20px)
. 有关详细信息,请参阅MDN 页面。请注意,如果您需要 100% 的屏幕宽度,则该translate
属性指的是其自身宽度的 100%。要解决此问题,请尝试将其包装在 100% 宽度的父元素中,然后应用该transform: translate
属性。
推荐阅读
- c# - C# MVC Ajax 调用返回未定义
- python - 如何使用python获取进程的pid
- reactjs - 我可以在 React 和 TypeScript 中使用第三方库吗?
- c# - 如何从 Parallel.ForEach 循环访问 winform 文本框?
- php - PHP 复杂 XML 到 JSON 解析
- python - 熊猫数据框根据其他列是否有数据添加新列
- java - 在“/storage/emulated/0/Pictures/”中找不到文件
- c++ - Clang 不能编译基本的头文件(比如
) 在 macOS 中 - android - 如何在 Android Q 中获取深度图
- java - Drools 7.x 在运行时动态加载规则而不使用 maven