プログラマー猫画像検索サイト-分析(詳細)
11712 ワード
2020 Dev-Martching:Webフロントエンド開発者(上半期)
既存のコードを変更し、他の実装を行います.
要求
要求された順序は次のとおりです.ただし、開発中にユーザーテストが含まれているため、開発者のスタイルに応じて要求が変更されました.
🐇 HTML、CSSの概略寸法の適用
既存CSSのすべてのコメントを削除し、すべての文字は#FFFFFに限定され、背景は#00000に限定されます. オペレーティングシステムが有効になっているかどうかの暗いモードに基づいています. ユーザーがトピックを切り替えやすいように、左上隅に切り替え機能のチェックボックスを作成します. 最大-寸法が768 px未満の場合、モードの横方向の長さは、デバイスの横方向の長さ に増加する.画像をクリックすると、生成したモードから次の終了(クローズ)イベントが追加されます. キーボードのescを押すと: モード領域の外をクリックする場合は、 をクリックします.右上隅をクリックして閉じる場合は、 をクリックします.
/猫/:idで猫の性格、胎生情報をレンダリングします.関連情報がロードされます. モードのオン/オフイベントに対して、フェードイン/フェードアウト を適用する.
ページに入ると、検索ウィンドウ(input)で にフォーカスする.キーワードを入力し、「input」をクリックして既存のキーワード を削除します.データ要求時にLoading UI を追加する必要があるの検索結果がない場合、 はユーザが閲覧できるようにUI処理を行う必要があるが生成され、最近の5つの検索キーワードがSearchInputの下に表示される.このキーワードを選択すると検索要求 が発生する.ページをリフレッシュすると、最後の検索結果画面 が保持される. SearchInputの横にフリーボタンを追加し、/api/cats/random 50を呼び出してスクリーンをレンダリングします. Lazy Loadを理解し、 を処理して画像表示時にロードする検索の結果、各アイテムに猫の名前が表示されました. ユーザがスクロールバーの末端を移動するときに次のページ にログインするようにする.
現在の検索結果リストに、ランダムな猫の部分を追加します. アプリケーションを起動すると、api/cats/random 50 apiリクエスト後に受信した結果が個別の部分に露出します. は色兼用の結果が多いが、画面に5つの画像のみが表示され、各画像に左、右スライドなどのボタン がある.の左、右ボタンをクリックすると、現在露出している画像が消え、前または次の画像が表示されます.トランザクションは を選択
🐇 その他の要件
SearchResultで各アイテムのイベントを変更するには 各要素の内部関数とUtil関数 を細分化する.
🐇 API
GET :/cats/random50
Get :/cats/search | query ⇒ q=””
Get :/cats/:id
既存のコードを変更し、他の実装を行います.
要求
要求された順序は次のとおりです.ただし、開発中にユーザーテストが含まれているため、開発者のスタイルに応じて要求が変更されました.
🐇 HTML、CSSの概略寸法の適用
コードはすべてdivで構成されています.感性的な方法で寸法を変更してください.
🥕 応答式CSSサポート
ユーザーが使用するデバイスの長さに応じて、各行の列数を適切に変更します.
992 px以下3個768 px以下2個576 px以下1個@media (max-width : 992px) {
.SearchResult {
grid-template-columns: repeat(3, minmax(250px, 1fr));
}
}
@media (max-width : 768px) {
.SearchResult {
grid-template-columns: repeat(2, minmax(250px, 1fr));
}
}
@media (max-width : 576px) {
.SearchResult {
grid-template-columns: repeat(1, minmax(250px, 1fr));
}
}
🥕 ダークモードのサポート
@media (max-width : 992px) {
.SearchResult {
grid-template-columns: repeat(3, minmax(250px, 1fr));
}
}
@media (max-width : 768px) {
.SearchResult {
grid-template-columns: repeat(2, minmax(250px, 1fr));
}
}
@media (max-width : 576px) {
.SearchResult {
grid-template-columns: repeat(1, minmax(250px, 1fr));
}
}
🐇 画像詳細ビューモード
🐇 検索ページ
🐇 スクロール・ページングの実装
🐇 ランダム猫バナー部分
🐇 その他の要件
EventDelegationを使用して
🐇 API
fetchはasync awaitで行い、エラーが発生した場合は適切に処理する
statusコードに基づいて、ミラーメッセージを別々に記述します.const request = async (url: string) => {
try {
const result = await fetch(url);
return result.json();
} catch (e) {
console.warn(e);
}
}
const api = {
fetchGif: keyword => {
return request(`${API_ENDPOINT}/api/gif/search?q=${keyword}`);
},
fetchGifAll: () => {
return request(`${API_ENDPOINT}/api/gif/all`);
}
};
🥕 ランダムに50匹の猫を要求
const request = async (url: string) => {
try {
const result = await fetch(url);
return result.json();
} catch (e) {
console.warn(e);
}
}
const api = {
fetchGif: keyword => {
return request(`${API_ENDPOINT}/api/gif/search?q=${keyword}`);
},
fetchGifAll: () => {
return request(`${API_ENDPOINT}/api/gif/all`);
}
};
HTTP/1.1 200 OK
{
"data": [{
id: string
url: string
name: string
}]
}
🥕 ユーザーに検索を要求
Get :/cats/search | query ⇒ q=””
HTTP/1.1 200 OK
{
"data": [{
id: string
url: string
name: string
}]
}
🥕 画像の詳細を表示するときに猫にデータを要求
Get :/cats/:id
HTTP/1.1 200 OK
{
"data": {
name: string
id: string
url: string
width: number
height: number
temperament: string
origin: string
}
}
Reference
この問題について(プログラマー猫画像検索サイト-分析(詳細)), 我々は、より多くの情報をここで見つけました https://velog.io/@z6su3/프로그래머스-고양이-사진-검색-사이트-분석-상세テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol