首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用固定CSS的情况下更改React JS中的Swiper高度或滑动宽度

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

Stack Overflow用户
提问于 2021-06-28 22:51:23
回答 2查看 1.5K关注 0票数 4

我有一个纸牌游戏,玩家从一副牌中选择一张牌添加到第二副牌中。按下活动卡上的按钮会将其移动到另一副牌上,然后将其激活。在聚焦时,活动的牌应该更大,而不活动的牌应该最小化,如下所示:

我已经在SwiperJS和React-Swiper中使用Swiper Coverflow效果实现了它,但在这两种情况下,高度都绑定到.swiper-slide CSS类。该类上的宽度设置为固定大小,这决定了如何渲染Swiper的其余部分。似乎更改幻灯片宽度(以及由此产生的Swiper高度)的唯一方法是基于状态对幻灯片应用固定宽度类。

JSX:

代码语言:javascript
复制
 <SwiperSlide
            key={index}
            className={
              props.selected
                ? "swiper-fixed-width-300 "
                : "swiper-fixed-width-100 "
            }
          >

CSS:

代码语言:javascript
复制
.swiper-fixed-width-100 {
  width: 100px;
}

.swiper-fixed-width-300 {
  width: 300px;
}

然而,这种方法没有像其他交互那样的缓和或过渡,所以它感觉太突然了。我想找到一种方法来使用Swiper API函数来做同样的事情。如何使用API或不操作CSS类来实现相同的交互?

Example Sandbox

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-07 23:37:32

我会在母版上使用transform: scale(0.3),并将滑块的宽度保持在300px。

JSX (Deck.js):

代码语言:javascript
复制
<div
    className={
        props.selected 
        ? "Deck Deck-selected" 
        : "Deck Deck-unselected"
    }
>

<SwiperSlide key={index} className="swiper-fixed-width-300">

CSS:

代码语言:javascript
复制
.Deck {
  transition: transform 0.3s ease;
}
.Deck-selected {
  transform: scale(1);
}
.Deck-unselected {
  transform: scale(0.3);
}

.swiper-fixed-width-300 {
  width: 300px;
}

这是我的带有效果转换的sandbox

票数 1
EN

Stack Overflow用户

发布于 2021-07-07 03:49:49

如果你想改变“卡片组”的大小并保持平滑的过渡效果,我想你可以使用scale()转换函数,这也是一个CSS解决方案。

https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/scale()#examples

如果你把它和CSS转换结合起来,你就可以达到你提到的效果。

这是一篇来自thoughtbot.com的博客文章,深入探讨了如何使用scale()和CSS转换:https://thoughtbot.com/blog/transitions-and-transforms

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68165521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档