卡片 React 组件

卡片,连同列表视图,是包含和组织您信息的一种更多方式。卡片包含独特的相关数据,例如,关于单个主题的照片、文本和链接。卡片通常是更复杂和详细信息的一个入口点。

卡片 React 组件表示卡片组件。

卡片组件

包含以下组件:

卡片属性

属性类型默认描述
<Card> 属性
title字符串卡片头部内容
内容字符串卡片内容
尾部字符串卡片尾部内容
内边距布尔值true在卡片内容上添加额外的内部内边距
outline布尔值false创建卡片轮廓 - 带边框
轮廓Ios布尔值false在 iOS 主题中创建卡片轮廓
轮廓Md布尔值false在 MD 主题中创建卡片轮廓
raised布尔值false创建带阴影的卡片 - 抬起
headerDivider布尔值false为卡片头部添加分隔符(边框)
footerDivider布尔值false为卡片尾部添加分隔符(边框)
expandable布尔值false启用可展开卡片
expandableAnimateWidth布尔值false启用卡片内容宽度也可动画化和响应式,但可能影响性能
expandableOpened布尔值false布尔属性指示可展开卡片是否已打开
animate布尔值true指定是否用动画打开可展开卡片
hideNavbarOnOpen布尔值在可展开卡片打开时将隐藏 Navbar。默认继承相同应用卡片参数.
hideToolbarOnOpen布尔值在可展开卡片打开时将隐藏 Toolbar。默认继承相同应用卡片参数.
swipeToClose布尔值允许通过滑动关闭可展开卡片。默认继承相同应用卡片参数.
背景遮罩布尔值启用可展开卡片背景层。默认继承相同应用卡片参数.
backdropEl字符串允许指定自定义可展开卡片背景元素。这应该是背景元素的 CSS 选择器,例如.card-backdrop.custom-backdrop
closeByBackdropClick布尔值当启用时,点击可展开卡片的背景将关闭它。默认继承相同应用卡片参数.
<CardContent> 属性
内边距布尔值true添加额外的内部内边距

卡片事件

事件描述
<Card> 事件
cardBeforeOpen事件将在可展开卡片开始其打开动画之前触发。event.detail.prevent包含一个函数,当调用时将阻止卡片打开
cardOpen事件将在可展开卡片开始其打开动画时触发
cardOpened事件将在可展开卡片完成其打开动画后触发
cardClose事件将在可展开卡片开始其关闭动画时触发
cardClosed事件将在可展开卡片完成其关闭动画后触发

卡片插槽

<Card>组件具有以下插槽:

<Card>
  <span slot="header">Header</span>
  <span slot="content">Content</span>
  <span slot="footer">Footer</span>
</Card>

渲染到

<div class="card">
  <div class="card-header">
    <span>Header</span>
  </div>
  <div class="card-content">
    <span>Content</span>
  </div>
  <div class="card-footer">
    <span>Footer</span>
  </div>
</div>

示例

cards.jsx
import React from 'react';
import {
  Navbar,
  Page,
  Block,
  BlockTitle,
  Card,
  CardHeader,
  CardContent,
  CardFooter,
  List,
  ListItem,
  Link,
} from 'framework7-react';

export default () => (
  <Page>
    <Navbar title="Cards" />

    <Block>
      <p>
        Cards are a great way to contain and organize your information, especially when combined
        with List Views. Cards can contain unique related data, like for example photos, text or
        links about a particular subject. Cards are typically an entry point to more complex and
        detailed information.
      </p>
    </Block>
    <BlockTitle>Simple Cards</BlockTitle>
    <Card content="This is a simple card with plain text, but cards can also contain their own header, footer, list view, image, or any other element." />
    <Card
      title="Card header"
      content="Card with header and footer. Card headers are used to display card titles and footers for additional information or just for custom actions."
      footer="Card footer"
    />
    <Card content="Another card. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat sem est, non tincidunt ligula volutpat sit amet. Mauris aliquet magna justo. " />

    <BlockTitle>Outline Cards</BlockTitle>
    <Card
      outline
      content="This is a simple card with plain text, but cards can also contain their own header, footer, list view, image, or any other element."
    />
    <Card
      outline
      title="Card header"
      content="Card with header and footer. Card headers are used to display card titles and footers for additional information or just for custom actions."
      footer="Card footer"
    />
    <Card
      outline
      content="Another card. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat sem est, non tincidunt ligula volutpat sit amet. Mauris aliquet magna justo. "
    />

    <BlockTitle>Outline With Dividers</BlockTitle>
    <Card
      outline
      headerDivider
      footerDivider
      title="Card header"
      content="Card with header and footer. Card headers are used to display card titles and footers for additional information or just for custom actions."
      footer="Card footer"
    />

    <BlockTitle>Raised Cards</BlockTitle>
    <Card
      raised
      content="This is a simple card with plain text, but cards can also contain their own header, footer, list view, image, or any other element."
    />
    <Card
      raised
      title="Card header"
      content="Card with header and footer. Card headers are used to display card titles and footers for additional information or just for custom actions."
      footer="Card footer"
    />
    <Card
      raised
      content="Another card. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse feugiat sem est, non tincidunt ligula volutpat sit amet. Mauris aliquet magna justo. "
    />

    <BlockTitle>Styled Cards</BlockTitle>
    <Card outlineMd className="demo-card-header-pic">
      <CardHeader
        valign="bottom"
        style={{
          backgroundImage: 'url(https://cdn.framework7.io/placeholder/nature-1000x600-3.jpg)',
        }}
      >
        Journey To Mountains
      </CardHeader>
      <CardContent>
        <p className="date">Posted on January 21, 2015</p>
        <p>
          Quisque eget vestibulum nulla. Quisque quis dui quis ex ultricies efficitur vitae non
          felis. Phasellus quis nibh hendrerit...
        </p>
      </CardContent>
      <CardFooter>
        <Link>Like</Link>
        <Link>Read more</Link>
      </CardFooter>
    </Card>
    <Card className="demo-card-header-pic">
      <CardHeader
        valign="bottom"
        style={{
          backgroundImage: 'url(https://cdn.framework7.io/placeholder/people-1000x600-6.jpg)',
        }}
      >
        Journey To Mountains
      </CardHeader>
      <CardContent>
        <p className="date">Posted on January 21, 2015</p>
        <p>
          Quisque eget vestibulum nulla. Quisque quis dui quis ex ultricies efficitur vitae non
          felis. Phasellus quis nibh hendrerit...
        </p>
      </CardContent>
      <CardFooter>
        <Link>Like</Link>
        <Link>Read more</Link>
      </CardFooter>
    </Card>

    <BlockTitle>Cards With List View</BlockTitle>
    <Card>
      <CardContent padding={false}>
        <List>
          <ListItem link="#">Link 1</ListItem>
          <ListItem link="#">Link 2</ListItem>
          <ListItem link="#">Link 3</ListItem>
          <ListItem link="#">Link 4</ListItem>
          <ListItem link="#">Link 5</ListItem>
        </List>
      </CardContent>
    </Card>
    <Card title="New Releases:">
      <CardContent padding={false}>
        <List mediaList>
          <ListItem title="Yellow Submarine" subtitle="Beatles">
            <img
              slot="media"
              src="https://cdn.framework7.io/placeholder/fashion-88x88-4.jpg"
              width="44"
            />
          </ListItem>
          <ListItem title="Don't Stop Me Now" subtitle="Queen">
            <img
              slot="media"
              src="https://cdn.framework7.io/placeholder/fashion-88x88-5.jpg"
              width="44"
            />
          </ListItem>
          <ListItem title="Billie Jean" subtitle="Michael Jackson">
            <img
              slot="media"
              src="https://cdn.framework7.io/placeholder/fashion-88x88-6.jpg"
              width="44"
            />
          </ListItem>
        </List>
      </CardContent>
      <CardFooter>
        <span>January 20, 2015</span>
        <span>5 comments</span>
      </CardFooter>
    </Card>
  </Page>
);
cards-expandable.jsx
import React from 'react';
import { Navbar, Page, Block, Card, CardHeader, CardContent, Link, Button } from 'framework7-react';

export default () => (
  <Page>
    <Navbar title="Cards Expandable" />

    <Block>
      <p>
        In addition to usual <a href="/cards/">Cards</a> there are also Expandable Cards that allow
        to store more information and illustrations about particular subject.
      </p>
    </Block>

    <div className="demo-expandable-cards">
      <Card expandable>
        <CardContent padding={false}>
          <div className="bg-color-red" style={{ height: '300px' }}>
            <CardHeader textColor="white" className="display-block">
              Framework7
              <br />
              <small style={{ opacity: 0.7 }}>Build Mobile Apps</small>
            </CardHeader>
            <Link
              cardClose
              color="white"
              className="card-opened-fade-in"
              style={{ position: 'absolute', right: '15px', top: '15px' }}
              iconF7="xmark_circle_fill"
            />
          </div>
          <div className="card-content-padding">
            <p>
              Framework7 - is a free and open source HTML mobile framework to develop hybrid mobile
              apps or web apps with iOS or Android (Material) native look and feel. It is also an
              indispensable prototyping apps tool to show working app prototype as soon as possible
              in case you need to. Framework7 is created by Vladimir Kharlampidi.
            </p>
            <p>
              The main approach of the Framework7 is to give you an opportunity to create iOS and
              Android (Material) apps with HTML, CSS and JavaScript easily and clear. Framework7 is
              full of freedom. It doesn't limit your imagination or offer ways of any solutions
              somehow. Framework7 gives you freedom!
            </p>
            <p>
              Framework7 is not compatible with all platforms. It is focused only on iOS and Android
              (Material) to bring the best experience and simplicity.
            </p>
            <p>
              Framework7 is definitely for you if you decide to build iOS and Android hybrid app
              (Cordova or Capacitor) or web app that looks like and feels as great native iOS or
              Android (Material) apps.
            </p>
            <p>
              <Button fill round large cardClose color="red">
                Close
              </Button>
            </p>
          </div>
        </CardContent>
      </Card>

      <Card expandable>
        <CardContent padding={false}>
          <div className="bg-color-yellow" style={{ height: '300px' }}>
            <CardHeader textColor="black" className="display-block">
              Framework7
              <br />
              <small style={{ opacity: 0.7 }}>Build Mobile Apps</small>
            </CardHeader>
            <Link
              cardClose
              color="black"
              className="card-opened-fade-in"
              style={{ position: 'absolute', right: '15px', top: '15px' }}
              iconF7="xmark_circle_fill"
            />
          </div>
          <div className="card-content-padding">
            <p>
              Framework7 - is a free and open source HTML mobile framework to develop hybrid mobile
              apps or web apps with iOS or Android (Material) native look and feel. It is also an
              indispensable prototyping apps tool to show working app prototype as soon as possible
              in case you need to. Framework7 is created by Vladimir Kharlampidi.
            </p>
            <p>
              The main approach of the Framework7 is to give you an opportunity to create iOS and
              Android (Material) apps with HTML, CSS and JavaScript easily and clear. Framework7 is
              full of freedom. It doesn't limit your imagination or offer ways of any solutions
              somehow. Framework7 gives you freedom!
            </p>
            <p>
              Framework7 is not compatible with all platforms. It is focused only on iOS and Android
              (Material) to bring the best experience and simplicity.
            </p>
            <p>
              Framework7 is definitely for you if you decide to build iOS and Android hybrid app
              (Cordova or Capacitor) or web app that looks like and feels as great native iOS or
              Android (Material) apps.
            </p>
            <p>
              <Button fill round large cardClose color="yellow" textColor="black">
                Close
              </Button>
            </p>
          </div>
        </CardContent>
      </Card>

      <Card expandable>
        <CardContent padding={false}>
          <div
            style={{
              background: 'url(./img/beach.jpg) no-repeat center bottom',
              backgroundSize: 'cover',
              height: '240px',
            }}
          />
          <Link
            cardClose
            color="white"
            className="card-opened-fade-in"
            style={{ position: 'absolute', right: '15px', top: '15px' }}
            iconF7="xmark_circle_fill"
          />
          <CardHeader style={{ height: '60px' }}>Beach, Goa</CardHeader>
          <div className="card-content-padding">
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam cursus rhoncus cursus.
              Etiam lorem est, consectetur vitae tempor a, volutpat eget purus. Duis urna lectus,
              vehicula at quam id, sodales dapibus turpis. Suspendisse potenti. Proin condimentum
              luctus nulla, et rhoncus ante rutrum eu. Maecenas ut tincidunt diam. Vestibulum
              lacinia dui ligula, sit amet pulvinar nisl blandit luctus. Vestibulum aliquam ligula
              nulla, tincidunt rhoncus tellus interdum at. Phasellus mollis ipsum at mollis
              tristique. Maecenas sit amet tempus justo. Duis dolor elit, mollis quis viverra quis,
              vehicula eu ante. Integer a molestie risus. Vestibulum eu sollicitudin massa, sit amet
              dictum sem. Aliquam nisi tellus, maximus eget placerat in, porta vel lorem. Aenean
              tempus sodales nisl in cursus. Curabitur tincidunt turpis in nisl ornare euismod eget
              at libero.
            </p>
            <p>
              Suspendisse ligula eros, congue in nulla pellentesque, imperdiet blandit sapien. Morbi
              nisi sem, efficitur a rutrum porttitor, feugiat vel enim. Fusce eget vehicula odio, et
              luctus neque. Donec mattis a nulla laoreet commodo. Integer eget hendrerit augue, vel
              porta libero. Morbi imperdiet, eros at ultricies rutrum, eros urna auctor enim, eget
              laoreet massa diam vitae lorem. Proin eget urna ultrices, semper ligula aliquam,
              dignissim eros. Donec vitae augue eu sapien tristique elementum a nec nulla. Aliquam
              erat volutpat. Curabitur condimentum, metus blandit lobortis fringilla, enim mauris
              venenatis neque, et venenatis lorem urna ut justo. Maecenas neque enim, congue ac
              tempor quis, tincidunt ut mi. Donec venenatis ante non consequat molestie. Quisque ut
              rhoncus ligula. Vestibulum sodales maximus justo sit amet ornare. Nullam pulvinar
              eleifend nisi sit amet molestie.
            </p>
            <p>
              <Button fill round large cardClose>
                Close
              </Button>
            </p>
          </div>
        </CardContent>
      </Card>

      <Card expandable>
        <CardContent padding={false}>
          <div
            style={{
              background: 'url(./img/monkey.jpg) no-repeat center top',
              backgroundSize: 'cover',
              height: '400px',
            }}
          >
            <CardHeader textColor="white">Monkeys</CardHeader>
            <Link
              cardClose
              color="white"
              className="card-opened-fade-in"
              style={{ position: 'absolute', right: '15px', top: '15px' }}
              iconF7="xmark_circle_fill"
            />
          </div>
          <div className="card-content-padding">
            <p>
              Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam cursus rhoncus cursus.
              Etiam lorem est, consectetur vitae tempor a, volutpat eget purus. Duis urna lectus,
              vehicula at quam id, sodales dapibus turpis. Suspendisse potenti. Proin condimentum
              luctus nulla, et rhoncus ante rutrum eu. Maecenas ut tincidunt diam. Vestibulum
              lacinia dui ligula, sit amet pulvinar nisl blandit luctus. Vestibulum aliquam ligula
              nulla, tincidunt rhoncus tellus interdum at. Phasellus mollis ipsum at mollis
              tristique. Maecenas sit amet tempus justo. Duis dolor elit, mollis quis viverra quis,
              vehicula eu ante. Integer a molestie risus. Vestibulum eu sollicitudin massa, sit amet
              dictum sem. Aliquam nisi tellus, maximus eget placerat in, porta vel lorem. Aenean
              tempus sodales nisl in cursus. Curabitur tincidunt turpis in nisl ornare euismod eget
              at libero.
            </p>
            <p>
              Suspendisse ligula eros, congue in nulla pellentesque, imperdiet blandit sapien. Morbi
              nisi sem, efficitur a rutrum porttitor, feugiat vel enim. Fusce eget vehicula odio, et
              luctus neque. Donec mattis a nulla laoreet commodo. Integer eget hendrerit augue, vel
              porta libero. Morbi imperdiet, eros at ultricies rutrum, eros urna auctor enim, eget
              laoreet massa diam vitae lorem. Proin eget urna ultrices, semper ligula aliquam,
              dignissim eros. Donec vitae augue eu sapien tristique elementum a nec nulla. Aliquam
              erat volutpat. Curabitur condimentum, metus blandit lobortis fringilla, enim mauris
              venenatis neque, et venenatis lorem urna ut justo. Maecenas neque enim, congue ac
              tempor quis, tincidunt ut mi. Donec venenatis ante non consequat molestie. Quisque ut
              rhoncus ligula. Vestibulum sodales maximus justo sit amet ornare. Nullam pulvinar
              eleifend nisi sit amet molestie.
            </p>
            <p>
              <Button fill round large cardClose>
                Close
              </Button>
            </p>
          </div>
        </CardContent>
      </Card>
    </div>
  </Page>
);
无噪 Logo
无噪文档
中文文档 · 复刻官网
查看所有 ↗