Как выровнять содержимое карты в React-Bootstrap в зависимости от высоты/длины содержимого?

#css #reactjs #react-bootstrap

Вопрос:

Я хочу выровнять содержимое карточек таким образом, чтобы , когда заголовок содержимого слишком длинный, другие детали, такие как Created on , By и View , были бы в одной строке. Я пробовал использовать фиксированную высоту min-height для строки заголовка, но я не думаю, что это хорошее решение, так как, когда заголовок короче, будет много белого/пустого пространства.

Я также попытался использовать flex-grow: 1 заголовок, но он также не заполнит пустые места.

введите описание изображения здесь

          <Col>
            <Card 
                className='text-center' 
                style={{
                    height: '100%',
                    padding: '15px', 
                    borderRadius: '20px',
                    boxShadow: '0px 5px 15px 0px rgb(0 0 0 / 20%)'
                }}
            >
                <Row style={{marginBottom: '5px'}}>
                    <Col md={6} style={{textAlign: 'left'}}>
                        <div 
                            className='btn btn-success'}
                            style={{padding: '5px 25px', borderRadius: '50px', cursor: 'default', textTransform: 'capitalize'}}
                        >
                            {bulletin.liveStatus}
                        </div>
                    </Col>
                    <Col md={6} style={{textAlign: 'right'}}>
                        <div className='ellipsis-menu' ref={ref}>
                            <FaIcons.FaEllipsisH onClick={showDropDown} style={{cursor: 'pointer'}} />
                    </Col>
                </Row>
                <div className='view-bulletin-link'>
                    <Card.Img variant='top' src={imageCoverUrl} style={{objectFit: 'cover', height: '15rem', width: '100%', display: 'block'}}/>
                    <Card.Body>
                        <Card.Title style={{fontSize: '1rem'}}><strong>{bulletin.title}</strong></Card.Title>
                        <Card.Text>Created on {moment(bulletin.createdDate).format("DD/MM/YYYY")} <br />By {bulletin.createdBy}</Card.Text>
                        <Card.Text>{bulletin.viewCount > 1 ? <>{bulletin.viewCount} Views</> : <>{bulletin.viewCount} View</>}</Card.Text>
                    </Card.Body>
                </div>
            </Card>
        </Col>
 

Редактировать красиво-солнце-z0jvt

Ответ №1:

Вы можете достичь этого с помощью flex.

Содержимое карты должно иметь

 flex-direction: col;
align-items: space-around
 

и оберните выровненные сверху и снизу элементы в разные div/промежутки.

Ответ №2:

Вы могли бы сгруппировать created и view count вместе и сделать его нижним положением.

См. Пример ниже

 <div style="postion:absolute; bottom: 0">
                        <Card.Text>Created on {moment(bulletin.createdDate).format("DD/MM/YYYY")} <br />By {bulletin.createdBy}</Card.Text>
                        <Card.Text>{bulletin.viewCount > 1 ? <>{bulletin.viewCount} Views</> : <>{bulletin.viewCount} View</>}</Card.Text>

</div>