ホームページ > ウェブフロントエンド > jsチュートリアル > 最新の Web 開発におけるカードの設計と実装

最新の Web 開発におけるカードの設計と実装

Patricia Arquette
リリース: 2024-12-07 12:30:14
オリジナル
767 人が閲覧しました

Diseño e Implementación de Cards en Desarrollo Web Moderno

カードは、現代の Web デザインにおいて最も多用途なコンポーネントの 1 つです。オンライン ストアの商品からブログの記事まで、情報を簡潔かつ視覚的に魅力的な方法で表示するために使用されます。このガイドでは、さまざまな実装とベスト プラクティスについて説明します。

カードの構造

一般的なカードはいくつかの要素で構成されています:

<div>



<h2>
  
  
  Implementaciones
</h2>

<h3>
  
  
  1. Card Básica con CSS
</h3>



<pre class="brush:php;toolbar:false">.card {
  width: 300px;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  transition: transform 0.2s ease;
}

.card:hover {
  transform: translateY(-4px);
}

.card-image {
  width: 100%;
  height: 200px;
  object-fit: cover;
}

.card-content {
  padding: 16px;
}

.card-title {
  margin: 0 0 8px;
  font-size: 1.25rem;
}

.card-description {
  color: #666;
  line-height: 1.5;
}

.card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 16px;
  margin-top: 16px;
  border-top: 1px solid #eee;
}
ログイン後にコピー

2. Tailwind CSS を使用したカード

<div>



<h3>
  
  
  3. Componente React con TypeScript
</h3>



<pre class="brush:php;toolbar:false">interface CardProps {
  image: string;
  title: string;
  description: string;
  action?: () => void;
  meta?: string;
}

const Card: React.FC<cardprops> = ({
  image,
  title,
  description,
  action,
  meta
}) => {
  return (
    <div classname="card">
      <img src="%7Bimage%7D" alt="{title}" classname="card-image" loading="lazy">
      <div classname="card-content">
        <h2 classname="card-title">{title}</h2>
        <p classname="card-description">{description}</p>

        <div classname="card-footer">
          {action && (
            <button onclick="{action}" classname="card-button">
              Ver más
            </button>
          )}
          {meta && <span classname="card-meta">{meta}</span>}
        </div>
      </div>
    </div>
  );
};
</cardprops>
ログイン後にコピー

4. Vue 3 コンポーネント

<template>
  <div>



<h2>
  
  
  Patrones de Diseño
</h2>

<h3>
  
  
  1. Card Grid Responsiva
</h3>



<pre class="brush:php;toolbar:false">.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 24px;
  padding: 24px;
}
ログイン後にコピー

2. アスペクト比のあるカード

.card-image-container {
  position: relative;
  padding-top: 56.25%; /* 16:9 Aspect Ratio */
}

.card-image {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
ログイン後にコピー

3. スケルトンの読み込み

.card-skeleton {
  animation: pulse 1.5s infinite;
}

@keyframes pulse {
  0% { opacity: 0.6; }
  50% { opacity: 1; }
  100% { opacity: 0.6; }
}
ログイン後にコピー

アクセシビリティ

<div>



<h2>
  
  
  Mejores Prácticas
</h2>

<ol>
<li>
<strong>Optimización de Imágenes</strong>
</li>
</ol>

<pre class="brush:php;toolbar:false">import Image from 'next/image';

<image src="%7BimageUrl%7D" alt="{title}" width="{300}" height="{200}" placeholder="blur" blurdataurl="{thumbnailUrl}"></image>
ログイン後にコピー
  1. 画像エラー処理
const handleImageError = (e: React.SyntheticEvent<htmlimageelement>) => {
  e.currentTarget.src = '/placeholder.jpg';
};

<img src="%7BimageUrl%7D" onerror="{handleImageError}" alt="{title}">
</htmlimageelement>
ログイン後にコピー
  1. テキストの切り詰め
.card-title {
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
ログイン後にコピー

アニメーション

/* Hover Effects */
.card {
  transition: all 0.3s ease;
}

.card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 24px rgba(0, 0, 0, 0.15);
}

/* Click Effect */
.card:active {
  transform: translateY(-2px);
  box-shadow: 0 8px 16px rgba(0, 0, 0, 0.1);
}
ログイン後にコピー

パフォーマンスに関する考慮事項

  1. 遅延読み込み
<img loading="lazy" src="imagen.jpg" alt="最新の Web 開発におけるカードの設計と実装">
ログイン後にコピー
  1. 交差点監視員
useEffect(() => {
  const observer = new IntersectionObserver(
    (entries) => {
      entries.forEach(entry => {
        if (entry.isIntersecting) {
          // Cargar contenido
        }
      });
    },
    { threshold: 0.1 }
  );

  observer.observe(cardRef.current);
  return () => observer.disconnect();
}, []);
ログイン後にコピー

結論

カードは、最新の Web デザインの基本的なコンポーネントです。優れた実装では、以下を考慮する必要があります。

  • レスポンシブデザイン
  • アクセシビリティ
  • パフォーマンス
  • ユーザーエクスペリエンス
  • コードの保守性

追加リソース

  • マテリアル デザイン カード
  • Tailwind UI コンポーネント
  • MDN Web コンポーネント

以上が最新の Web 開発におけるカードの設計と実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
前の記事:ブラウザーの JavaScript から SQL Server に接続できますか? 接続する必要がありますか? 次の記事:Web ブラウザで iOS デバイスを確実に検出するにはどうすればよいですか?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート