React strap 卡无法根据屏幕大小对齐项目

Posted

技术标签:

【中文标题】React strap 卡无法根据屏幕大小对齐项目【英文标题】:React strap Cards unable to align items according to the screen size 【发布时间】:2020-09-28 07:30:25 【问题描述】:

我正在使用 React 卡片来显示动态卡片。我想在一行中显示 4 张用于桌面视图的卡片和 1 张用于移动视图的卡片,但它总是垂直显示,没有水平显示卡片

卡片的容器组件

    import React from 'react'
    import SongCard from '../SongCard'
    import 
        CardDeck
     from 'reactstrap';

    function Popular( popular ) 
        return (
            <div>
                popular.map((post) =>
                    <div key=post.etag>
                        
                            <CardDeck style=display: 'flex', flexDirection: 'row',justifyContent: 'right'>
                                <SongCard
                                    Title=post.snippet.title
                                    VideoId=post.id.videoId
                                    Image=post.snippet.thumbnails.high.url
                                    ChannelTitle=post.snippet.channelTitle />
                            </CardDeck>
                        
                    </div>)
                
            </div>
        )
    

    export default Popular

而卡片组件是

    import React from 'react'
    import 
        Card, CardImg, CardText, CardBody,
        CardTitle, CardSubtitle
     from 'reactstrap';

    function SongCard( Title, VideoId, Image, ChannelTitle ) 
        return (
            <div>
                <Card style=maxWidth:'30em',flex: '1'>
                    <CardImg top  src=Image  />
                    <CardBody>
                        <CardTitle>Title</CardTitle>
                        <CardSubtitle>ChannelTitle</CardSubtitle>
                        <CardText></CardText>
                    </CardBody>
                </Card>
            </div>
        )
    

    export default SongCard

【问题讨论】:

【参考方案1】:

首先,在 SongCard 中,您可能不需要将卡片组件封装在 div 中,这会使您的 Card 样式不可用,因为 div 默认为全宽度。

其次,CardDeck 应该在地图循环之外,因为您为每个帖子创建一个新的 CardDeck,它可能不是您想要的。而是将“key=post.etag”直接放在 SongCard 中。

我也不建议在 CardDeck 的 style 中添加自定义样式,因为你会破坏所有设备的默认布局。

    import React from 'react'
import SongCard from '../SongCard'
import 
    CardDeck
 from 'reactstrap';

function Popular( popular ) 
    return (
        <CardDeck>
            popular.map((post) =>
                            <SongCard
                                key=post.etag
                                Title=post.snippet.title
                                VideoId=post.id.videoId
                                Image=post.snippet.thumbnails.high.url
                                ChannelTitle=post.snippet.channelTitle />
                </div>)
            
       </CardDeck>
    )


export default Popular

   import React from 'react'
import 
    Card, CardImg, CardText, CardBody,
    CardTitle, CardSubtitle
 from 'reactstrap';

function SongCard( Title, VideoId, Image, ChannelTitle ) 
    return (
            <Card>
                <CardImg top src=Image  />
                <CardBody>
                    <CardTitle>Title</CardTitle>
                    <CardSubtitle>ChannelTitle</CardSubtitle>
                    <CardText></CardText>
                </CardBody>
            </Card>
    )


export default SongCard

【讨论】:

已编辑,有这样的新东西吗?

以上是关于React strap 卡无法根据屏幕大小对齐项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在小屏幕上禁用引导对齐选项卡的堆叠

ReactStrap:无法根据屏幕大小隐藏导航栏项目

如何根据屏幕大小调整按钮的图像和文本大小(自动布局)

React / Gatsby - 根据屏幕大小渲染不同的组件

Flexbox in native native:如何在屏幕中央对齐2个项目?

调整移动屏幕大小时不居中对齐