reactjs - 如何在不使用固定 CSS 的情况下更改 React JS 中的 Swiper 高度或滑动宽度

标签 reactjs react-hooks swiper swiperjs react-swiper

我有一个纸牌游戏,玩家从一副牌中选择一张牌添加到第二副牌中。按下事件卡上的按钮会将其移动到另一副牌,然后使其处于事件状态。活跃的甲板在聚焦时应该更大,而非活跃的则最小化,如下所示:
Example showing larger selected slider above smaller inactive slider
我已经在 SwiperJS 和 React-Swiper 中使用 Swiper Coverflow 效果实现了它,但在任何一种情况下,高度都与 .swiper-slide 相关联。 CSS 类。此类的宽度设置为固定大小,这将驱动 Swiper 其余部分的呈现方式。似乎改变幻灯片宽度(以及由此产生的 Swiper 高度)的唯一方法是根据状态将固定宽度类应用于幻灯片。
JSX:

 <SwiperSlide
            key={index}
            className={
              props.selected
                ? "swiper-fixed-width-300 "
                : "swiper-fixed-width-100 "
            }
          >
CSS:
.swiper-fixed-width-100 {
  width: 100px;
}

.swiper-fixed-width-300 {
  width: 300px;
}
然而,这种方法没有像其他交互那样缓和或过渡,所以感觉太突然了。我想找到一种使用 Swiper API 函数执行相同操作的方法。如何使用 API 或不操作 CSS 类来实现相同的交互?
Example Sandbox

最佳答案

我会用 transform: scale(0.3)在父 (Deck) 上并将滑块的宽度保持在 300px。
JSX (Deck.js):

<div
    className={
        props.selected 
        ? "Deck Deck-selected" 
        : "Deck Deck-unselected"
    }
>
<SwiperSlide key={index} className="swiper-fixed-width-300">CSS:
.Deck {
  transition: transform 0.3s ease;
}
.Deck-selected {
  transform: scale(1);
}
.Deck-unselected {
  transform: scale(0.3);
}

.swiper-fixed-width-300 {
  width: 300px;
}
这是我的 sandbox随着效果过渡。

关于reactjs - 如何在不使用固定 CSS 的情况下更改 React JS 中的 Swiper 高度或滑动宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68165521/

相关文章:

vue.js - 如何在 VueJS 中初始化 Swiper?

select - swiper插件导致选择无法弹出下拉框

css - 具有 sass 和控制图像溢出的响应式 flexbox

javascript - React.jsx 与 React.js 作为组件创建的文件扩展名

javascript - react .createClass() 滚动到 ref : scrollIntoView not a function

javascript - React Hooks - 调用依赖于 "one time"useEffect 状态的函数的最佳位置?

android-studio - 如何在 Flutter 中更改 Swiper 分页颜色?

reactjs - 手动设置 redux-form 字段和/或表单错误

reactjs - 我如何使用React Hooks向用户显示特定的HTTP响应代码和消息

reactjs - DraftJS React-Hook-Form - 提交编辑器作为输入