用HTML和CSS繪制佩奇:我不是佩奇

在這篇博客中,我將解析一個完全使用HTML和CSS繪制的佩奇(Pig)形象。這個項目展示了CSS的強大能力,僅用樣式就能創造出復雜的圖形,而不需要任何圖片或JavaScript。

項目概述

這個名為"我不是佩奇"的項目是一個純CSS繪制的卡通豬形象。整個圖形由多個<div>元素組成,每個元素都通過精確的CSS定位和樣式來構建豬的各個部分。

效果圖展示:

結構分解

頭部結構

  • 主頭部(.pig_head)
  • 耳朵(.ear_left,?.ear_right)
  • 鼻子和鼻孔
  • 眼睛(包括眼白、眼球和邊框)
  • 嘴巴(上中下三部分)
  • 臉頰

身體結構

  • 主體(.pig_body_bottom)
  • 手部(左右各三部分)
  • 腳部和鞋子
  • 尾巴(多個部分組合)

裝飾元素

  • 陰影(.pig_shadow)

整體源碼:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>我不是佩奇</title><style type="text/css">div {position: absolute;transform-origin: left top;}
.pig_container {width: 800px;height: 800px;top: 0;left: 50px;
}.pig_head {width: 300px;height: 200px;top: 100px;left: 100px;border-radius: 95% 50% 50% 50%/ 87% 80% 68% 50%;border: 6px solid #ef96c2;background-color: #ffb3da;transform: rotate(30deg);z-index: 100;box-sizing: border-box;
}
.pig_head_white_left_bottom {width: 200px;height: 154px;bottom: -7px;left: -38px;background-color: #fff;box-sizing: border-box;
}
.pig_head_white_left_top {width: 200px;height: 66px;bottom: 84px;background-color: #ffb3da;box-sizing: border-box;top: 166px;left: 134px;transform: rotate(34deg);z-index: 103;
}
.left_eye, .right_eye, .face, .mouth {z-index: 104;
}
.pig_nose {width: 51px;height: 70px;top: 147px;left: 107px;border-radius: 72% 72% 72% 72%/ 72% 72% 72% 72%;border: 6px solid #ef96c2;background-color: #ffb3da;transform: rotate(36deg);z-index: 103;box-sizing: border-box;
}
.pig_nose_bottom {width: 88px;height: 13px;top: 209px;left: 84px;border-radius: 50% 50% 50% 50%/ 0% 0% 100% 100%;border: 6px solid #ef96c2;background-color: #ffb3da;transform: rotate(35deg);z-index: 102;box-sizing: border-box;border-top-color: #ffb3da;
}
.pig_jaw {width: 97px;height: 104px;top: 249px;left: 141px;border-radius: 0% 0% 0% 76%/ 0% 0% 0% 74%;border: 6px solid #ef96c2;background-color: #ffb3da;transform: rotate(22deg);z-index: 100;box-sizing: border-box;border-top-color: #ffb3da;border-right-color: #ffb3da;
}
.pig_jaw_right {width: 13px;height: 6px;background-color: #ef96c2;top: 373px;left: 186px;transform: rotate(19deg);z-index: 100;
}
.left_eye_bg {width: 29px;height: 29px;top: 177px;left: 170px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #fff;background-color: #fff;z-index: 101;box-sizing: border-box;
}
.left_eye_ball {width: 10px;height: 10px;top: 181px;left: 171px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #000;background-color: #000;z-index: 101;box-sizing: border-box;
}
.left_eye_border {width: 34px;height: 34px;top: 174px;left: 166px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #ef96c2;background-color: transparent;z-index: 101;box-sizing: border-box;
}.right_eye_bg {width: 28px;height: 28px;top: 194px;left: 205px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #fff;background-color: #fff;z-index: 101;box-sizing: border-box;
}
.right_eye_ball {width: 10px;height: 10px;top: 199px;left: 208px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #000;background-color: #000;z-index: 101;box-sizing: border-box;
}
.right_eye_border {width: 35px;height: 37px;top: 191px;left: 202px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;border: 6px solid #ef96c2;background-color: transparent;z-index: 101;box-sizing: border-box;
}.mouth_bottom {width: 97px;height: 45px;top: 273px;left: 154px;border-radius: 50% 50% 50% 50%/ 0% 0% 100% 100%;border: 6px solid #d44b81;background-color: #000;z-index: 101;box-sizing: border-box;transform: rotate(19deg);
}
.mouth_middle {width: 98px;height: 27px;top: 272px;left: 154px;border-radius: 0% 0% 50% 50%/ 0% 0% 100% 100%;border: 6px solid #d44b81;background-color: #ffb3da;z-index: 101;box-sizing: border-box;transform: rotate(19deg);border-top-color: #ffb3da;
}
.mouth_top {width: 135px;height: 66px;top: 231px;left: 149px;border-radius: 50% 50% 50% 50%/ 0% 0% 100% 100%;background-color: #ffb3da;z-index: 101;transform: rotate(13deg);}
.face {width: 49px;height: 59px;top: 243px;left: 269px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;background-color: #ff96ce;transform: rotate(26deg);
}.nose_kong_left {width: 12px;height: 12px;top: 179px;left: 93px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;background-color: #da6c9b;z-index: 104;
}
.nose_kong_right {width: 12px;height: 12px;top: 182px;left: 109px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;background-color: #da6c9b;z-index: 104;
}.ear_left {width: 24px;height: 52px;top: 126px;left: 226px;border: 6px solid #ef96c2;border-radius: 50% 50% 50% 50%/ 35% 40% 50% 50%;background-color: #ffb3da;z-index: 99;transform: rotate(18deg);
}
.ear_right {width: 24px;height: 52px;top: 150px;left: 280px;border: 6px solid #ef96c2;border-radius: 50% 50% 50% 50%/ 35% 40% 50% 50%;background-color: #ffb3da;z-index: 99;transform: rotate(36deg);
}.pig_body_bottom {width: 215px;height: 197px;top: 305px;left: 108px;border: 6px solid #e33b32;border-radius: 50% 50% 50% 50%/ 100% 100% 0% 0%;background-color: #eb5b50;z-index: 99;
}.hand_left_middle {width: 78px;height: 12px;top: 432px;left: 63px;border-radius: 100% 100% 100% 17%/ 100% 90% 16% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(-35deg);
}
.hand_left_top {width: 28px;height: 9px;top: 415px;left: 63px;border-radius: 100% 100% 100% 35%/ 100% 90% 16% 90%;background-color: #ffbadf;z-index: 99;
}
.hand_left_bottom {width: 20px;height: 9px;top: 420px;left: 93px;border-radius: 60% 59% 65% 90%/ 100% 90% 89% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(98deg);
}.hand_right_middle {width: 79px;height: 11px;top: 374px;left: 309px;border-radius: 100% 100% 15% 17%/ 99% 92% 90% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(28deg);
}
.hand_right_top {width: 28px;height: 10px;top: 397px;left: 350px;border-radius: 100% 100% 15% 17%/ 99% 92% 90% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(-7deg);
}
.hand_right_bottom {width: 28px;height: 11px;top: 395px;left: 356px;border-radius: 100% 100% 62% 17%/ 99% 92% 90% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(69deg);
}
.left_foot {width: 11px;height: 52px;top: 507px;left: 175px;border-radius: 100% 100% 100% 100%/ 50% 50% 21% 20%;background-color: #ffbadf;z-index: 99;
}
.left_shoes {width: 51px;height: 14px;top: 553px;left: 138px;border-radius: 58% 187% 180% 50%/ 130% 123% 113% 100%;background-color: #000;z-index: 99;transform: rotate(0deg);
}
.right_foot {left: 268px;
}
.right_shoes {left: 230px;
}
.pig_shadow {width: 240px;height: 47px;top: 535px;left: 101px;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;background-color: rgba(171, 171, 171, 0.7);transform: rotate(-1deg);
}
.tail_left {width: 19px;height: 8px;top: 472px;left: 330px;border-radius: 50% 50% 50% 50%/ 0% 0% 100% 100%;transform: rotate(-9deg);background-color: #ffbadf;z-index: 99;
}
.tail_left_blank {width: 30px;height: 15px;top: 466px;left: 332px;border-radius: 50% 50% 50% 50%/ 0% 0% 100% 100%;transform: rotate(-36deg);background-color: #fff;z-index: 99;
}
.tail_right {width: 21px;height: 5px;top: 451px;left: 343px;border-radius: 0% 0% 51% 50%/ 0% 0% 100% 100%;transform: rotate(31deg);background-color: #fff;z-index: 99;border: 8px solid #ffbadf;border-top-color: #fff;
}
.tail_blank {width: 36px;height: 21px;top: 437px;left: 351px;transform: rotate(34deg);background-color: #fff;z-index: 99;
}
.tail_middle {width: 7px;height: 11px;top: 450px;left: 336px;border: 8px solid #ffbadf;border-radius: 50% 50% 50% 50%/ 50% 50% 50% 50%;background-color: #fff;z-index: 99;
}
.tail_circle {width: 17px;height: 8px;top: 475px;left: 358px;border-radius: 36% 37% 62% 63%/ 99% 92% 90% 90%;background-color: #ffbadf;z-index: 99;transform: rotate(-40deg);
}</style>
</head>
<body>
<h1 align="center">我不是佩奇</h1>
<div class="pig_container"><!-- 尾巴 --><div class="tail_left"></div><div class="tail_right"></div><div class="tail_blank"></div><div class="tail_middle"></div><div class="tail_circle"></div><!-- 底部陰影 --><div class="pig_shadow"></div><!-- 左腳 --><div class="left_foot"></div><div class="left_foot right_foot"></div><!-- 左鞋 --><div class="left_shoes"></div><div class="left_shoes right_shoes"></div><!-- 左手 --><div><div class="hand_left_top"></div><div class="hand_left_bottom"></div><div class="hand_left_middle"></div></div><!-- 身體 --><div class="pig_body_bottom"></div><!-- 右手 --><div><div class="hand_right_top"></div><div class="hand_right_bottom"></div><div class="hand_right_middle"></div></div><!-- 豬頭 --><div><!-- 耳朵 --><div class="ear_left"></div><div class="ear_right"></div><div class="pig_head"><div class="pig_head_white_left_bottom"></div></div><div class="pig_head_white_left_top"></div><!-- 鼻子 --><div class="pig_nose"></div><!-- 下巴 --><div class="pig_jaw"></div><div class="pig_jaw_right"></div><div class="pig_nose_bottom"></div><!-- 鼻孔 --><div class="nose_kong_left"></div><div class="nose_kong_right"></div><!-- 左眼 --><div class="left_eye"><div class="left_eye_bg"></div><div class="left_eye_ball"></div><div class="left_eye_border"></div></div><!-- 右眼 --><div class="right_eye"><div class="right_eye_bg"></div><div class="right_eye_ball"></div><div class="right_eye_border"></div></div><!-- 嘴巴 --><div class="mouth"><div class="mouth_bottom"></div><div class="mouth_middle"></div><div class="mouth_top"></div></div><!-- 臉頰 --><div class="face"></div></div>
</div>
</body>
</html>

總結

這個項目展示了CSS在圖形創作中的強大能力。通過精心計算的位置、變形和層次控制,僅用CSS就創造出了一個生動的卡通形象。這種技術可以應用于:

  • 圖標設計
  • 簡單的游戲角色
  • 品牌形象展示
  • 網頁裝飾元素

雖然這種實現方式在性能上可能不如SVG高效,但它是一個很好的CSS練習,展示了CSS的可能性邊界。

你可以通過調整各種CSS參數來修改豬的外觀,創造屬于自己的獨特版本,快來試試吧!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/77650.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/77650.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/77650.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring 中 WebFlux 編寫一個簡單的 Controller

引言&#xff1a;響應式編程與 WebFlux 隨著應用程序需要處理大量并發請求的情況越來越多&#xff0c;傳統的 Servlet 編程模式可能無法滿足高效和低延遲的需求。為了應對這種情況&#xff0c;Spring 5 引入了 WebFlux&#xff0c;一個基于響應式編程的 Web 框架&#xff0c;旨…

React十案例下

代碼下載 登錄模塊 用戶登錄 頁面結構 新建 Login 組件&#xff0c;對應結構: export default function Login() {return (<div className{styles.root}><NavHeader className{styles.header}>賬號登錄</NavHeader><form className{styles.form}>&…

100道C#高頻經典面試題帶解析答案——全面C#知識點總結

100道C#高頻經典面試題帶解析答案 以下是100道C#高頻經典面試題及其詳細解析&#xff0c;涵蓋基礎語法、面向對象編程、集合、異步編程、LINQ等多個方面&#xff0c;旨在幫助初學者和有經驗的開發者全面準備C#相關面試。 &#x1f9d1; 博主簡介&#xff1a;CSDN博客專家、CSD…

機動車號牌管理系統設計與實現(代碼+數據庫+LW)

摘 要 在如今社會上&#xff0c;關于信息上面的處理&#xff0c;沒有任何一個企業或者個人會忽視&#xff0c;如何讓信息急速傳遞&#xff0c;并且歸檔儲存查詢&#xff0c;采用之前的紙張記錄模式已經不符合當前使用要求了。所以&#xff0c;對機動車號牌信息管理的提升&…

VMWare Workstation Pro17.6最新版虛擬機詳細安裝教程(附安裝包教程)

目錄 前言 一、VMWare虛擬機下載 二、VMWare虛擬機安裝 三、運行虛擬機 前言 VMware 是全球領先的虛擬化技術與云計算解決方案提供商&#xff0c;通過軟件模擬計算機硬件環境&#xff0c;允許用戶在一臺物理設備上運行多個獨立的虛擬操作系統或應用。其核心技術可提升硬件…

DeepSeek的神經元革命:穿透搜索引擎算法的下一代內容基建

DeepSeek的神經元革命&#xff1a;穿透搜索引擎算法的下一代內容基建 ——從語義網絡到價值共識的范式重構 一、搜索引擎的“內容饑渴癥”與AI的基建使命 2024年Q1數據顯示&#xff0c;百度索引網頁總數突破3500億&#xff0c;但用戶點擊集中在0.78%的高價值頁面。這種“數據…

docker安裝nginx,基礎命令,目錄結構,配置文件結構

Nginx簡介 Nginx是一款輕量級的Web服務器(動靜分離)/反向代理服務器及電子郵件&#xff08;IMAP/POP3&#xff09;代理服務器。其特點是占有內存少&#xff0c;并發能力強. &#x1f517;官網 docker安裝Nginx &#x1f433; 一、前提條件 ? 已安裝 Docker&#xff08;dock…

Python Lambda表達式詳解

Python Lambda表達式詳解 1. Lambda是什么&#xff1f; Lambda是Python中用于創建匿名函數&#xff08;沒有名字的函數&#xff09;的關鍵字&#xff0c;核心特點是簡潔。它適用于需要臨時定義簡單函數的場景&#xff0c;或直接作為參數傳遞給高階函數&#xff08;如map()、f…

基礎知識補充篇:什么是DAPP前端連接中的provider

專欄:區塊鏈入門到放棄查看目錄-CSDN博客文章瀏覽閱讀352次。為了方便查看將本專欄的所有內容列出目錄,按照順序查看即可。后續也會在此規劃一下后續內容,因此如果遇到不能點擊的,代表還沒有更新。聲明:文中所出觀點大多數源于筆者多年開發經驗所總結,如果你想要知道區塊…

P1115 最大子段和

P1115 最大子段和 - 洛谷 題目描述 給出一個長度為 n 的序列 a&#xff0c;選出其中連續且非空的一段使得這段和最大。 輸入格式 第一行是一個整數&#xff0c;表示序列的長度 n。 第二行有 n 個整數&#xff0c;第 i 個整數表示序列的第 i 個數字 a?。 輸出格式 輸出一…

用實體識別模型提取每一條事實性句子的關鍵詞(實體),并保存到 JSON 文件中

示例代碼&#xff1a; # Generate Keywords import torch import os from tqdm import tqdm import json import nltk import numpy as npfrom span_marker import SpanMarkerModelmodel SpanMarkerModel.from_pretrained("tomaarsen/span-marker-mbert-base-multinerd&…

E8流程多行明細行字符串用I分隔,賦值到主表

需求&#xff1a;明細行摘要字段賦值到主表隱藏字段&#xff0c;隱藏摘要字段在標題中顯示 代碼如下&#xff0c;代碼中的獲取字段名獲取方式&#xff0c;自行轉換成jQuery("#fieldid").val()替換。 //1:參數表單id 2:流程字段名 3:0代表主表&#xff0c;1代表明細…

優化你的 REST Assured 測試:設置默認主機與端口、GET 請求與斷言

REST Assured 是一個功能強大的 Java 庫&#xff0c;用于測試 RESTful Web 服務。它簡化了 API 測試流程&#xff0c;提供了一整套用于高效驗證響應的工具。在本篇博客中&#xff0c;我們將深入探討幾個核心概念&#xff0c;包括如何設置默認主機和端口、如何發起 GET 請求以及…

3.1.3.4 Spring Boot使用使用Listener組件

在Spring Boot中&#xff0c;使用Listener組件可以監聽和響應應用中的各種事件。首先&#xff0c;創建自定義事件類CustomEvent&#xff0c;繼承自ApplicationEvent。然后&#xff0c;創建事件監聽器CustomEventListener&#xff0c;使用EventListener注解標記監聽方法。接下來…

【 vue + js 】引入圖片、base64 編譯顯示圖片

一、引入普通圖片 1、代碼示例&#xff1a; <div class"question"><!-- 錯誤寫法 --><el-empty image"../assets/noinformation.svg" description"暫無問卷"><el-button type"primary">按鈕</el-button&…

JVM 之 String 引用機制解析:常量池、堆內存與 intern 方法

關于常量池中的String類型的數據&#xff0c;在JDK6中只可能是對象&#xff0c;在JDK7中既可以是對象也可以是引用 案例一&#xff1a; String s1 new String("1"); String s2 "1"; System.out.println(s1 s2);s1: 執行 new String("1")&am…

數據庫管理-第313期 分布式挑戰單機,OceanBase單機版試玩(20250411)

數據庫管理313期 2025-04-11 數據庫管理-第313期 分布式挑戰單機&#xff0c;OceanBase單機版試玩&#xff08;20250411&#xff09;1 環境說明2 操作系統配置2.1 關閉防火墻2.2 關閉SELinux2.3 配置hosts文件2.4 配置本地yum源2.5 配置sysctl.conf2.6 配置limits.conf2.7 創建…

AI 之 LLM(大語言模型)是如何生成文本的!

你是不是也曾在朋友面前自信滿滿地說&#xff1a;“AI我可太熟了&#xff01;”然后隨便丟一句“寫篇短文”給大模型&#xff0c;坐等它秒出結果&#xff1f;但你有沒有想過&#xff0c;那幾秒鐘里&#xff0c;AI到底干了什么&#xff1f;從你敲下的幾個字&#xff0c;到屏幕上…

STL之序列式容器(Vector/Deque/List)

序列式容器 序列式容器包括&#xff1a;靜態數組 array 、動態數組 vector 、雙端隊列 deque 、單鏈表 forward_ list 、雙鏈表 list 。這五個容器中&#xff0c;我們需要講解三個 vector 、 deque 、 list 的使 用&#xff0c;包括&#xff1a;初始化、遍歷、尾部插入與刪除、…

swift菜鳥教程6-10(運算符,條件,循環,字符串,字符)

一個樸實無華的目錄 今日學習內容&#xff1a;1.Swift 運算符算術運算符比較運算符邏輯運算符位運算符賦值運算區間運算符其他運算符 2.Swift 條件語句3.Swift 循環4.Swift 字符串字符串屬性 isEmpty字符串常量let 變量var字符串中插入值字符串連接字符串長度 String.count使用…