注: 本案例来自 CSS Screct
先看效果:
你可能需要掌握下列知识
- CSS3 Animation
- Pseudo Element
- 使用 linear-gradient 制作不渐变
- currentColor (非必须)
- 使用 border-radius ‘除’语法(非必须)
以上非必须标记,意味着如果你不追求代码质量,或使用预处理工具的话不了解也能实现。
HTML
实现起来并不复杂,这里只使用单个元素 + pseudo-element 就够了。
<div class="pie"></div>
css
.pie { width: 100px; height: 100px; border-radius: 50%; background: #e85b92; background-image: linear-gradient(to right, transparent 50%, currentColor 0); color: #f2f3f4;}.pie::before { content: ''; display: block; margin-left: 50%; height: 100%; border-radius: 0 100% 100% 0 / 50%; background-color: inherit; transform-origin: left; animation: spin 3s linear infinite, bg 6s step-end infinite;}@keyframes spin { to { transform: rotate(.5turn); }}@keyframes bg { 50% { background: currentColor; }}
关键代码
渐变
background-image: linear-gradient(to right, transparent 50%, currentColor 0);
linear-gradient 是css3中制作渐变色的属性;to right,表示渐变从左到右;后面的参数是渐变色列表。
渐变色列表从左到右逐个显示,颜色值后面的百分比或像素值表示渐变起始的阈值。
我的理解是这样的:如果前一个颜色阈值小于后一个颜色阈值,则这段阈值区域间产生渐变,而相反,如果前一个阈值大于后一个阈值,那么不会产生渐变,并且不相交区域显示临近颜色值的纯色。
所以本来中,pie 元素部分生成的效果是这样的:
个人认为, 使用 linear-gradient 略显繁琐并且IE9以下不支持(可能跟少用有关),我更倾向于使用伪元素来实现。
.pie { width: 100px; height: 100px; border-radius: 50%; background: #e85b92; color: #f2f3f4; position: relative;}.pie::after { z-index: 1; content: ''; display: block; background: currentColor; position: absolute; left: 50%; top: 0; height: 100%; border-radius: 0 100% 100% 0 / 50%; width: 50%; transform-origin: left;}.pie::before { content: ''; display: block; z-index: 10; position: absolute; top: 0; width: 50%; left: 50%; height: 100%; border-radius: 0 100% 100% 0 / 50%; background-color: inherit;; transform-origin: left; animation: spin 3s linear infinite, bg 6s step-end infinite;}
border-radius ‘除’语法
如果去掉 border-radius 以及修改颜色值,产生的效果是这样的:
动画
然后再加上两个动画,一个负责旋转 3s,一个负责更改背景色 6s,连起来变成这样:
CodePen
See the Pen YqEJVo by Helkyle ( @HelKyle ) on CodePen .
总结
刚开始学css 动画的时候,尝试过使用 css3 实现类似效果,但以失败告终,因为思维被限制死在如何实现’饼图’。所以有时候跳出固定思维模式,或许会有其他收获。
近期在看 CSS Screct 英文版,被书中很多技巧深深吸引住,没想到 CSS 还能这么灵活地使用。怪不得有大牛说:看完这本书,再也不敢说自己精通CSS。
对了,CSS魔法哥翻译了 这本书 ,准备上架,非常期待~(免费打广告…)

HTML adalah bahasa yang digunakan untuk membina laman web, menentukan struktur laman web dan kandungan melalui tag dan atribut. 1) HTML menganjurkan struktur dokumen melalui tag, seperti,. 2) Penyemak imbas menghancurkan HTML untuk membina DOM dan menjadikan laman web. 3) Ciri -ciri baru HTML5, seperti, meningkatkan fungsi multimedia. 4) Kesilapan biasa termasuk label yang tidak terkawal dan nilai atribut yang tidak disebutkan. 5) Cadangan pengoptimuman termasuk menggunakan tag semantik dan mengurangkan saiz fail.

WebDevelopmentReliesOnhtml, CSS, andjavascript: 1) HtmlStructuresContent, 2) CSSStylesit, dan3) JavaScriptaddsInteractivity, Formingthebasisofmodernwebexperiences.

Peranan HTML adalah untuk menentukan struktur dan kandungan laman web melalui tag dan atribut. 1. HTML menganjurkan kandungan melalui tag seperti, menjadikannya mudah dibaca dan difahami. 2. Gunakan tag semantik seperti, dan lain -lain untuk meningkatkan kebolehcapaian dan SEO. 3. Mengoptimumkan kod HTML boleh meningkatkan kelajuan pemuatan laman web dan pengalaman pengguna.

Htmlisaspecifictypeofcodefocusedonstructuringwebcontent, manakala "kod" secara meluas ini

HTML, CSS dan JavaScript adalah tiga tiang pembangunan web. 1. HTML mentakrifkan struktur laman web dan menggunakan tag seperti, dan sebagainya. 2. CSS mengawal gaya laman web, menggunakan pemilih dan atribut seperti warna, saiz font, dan lain-lain.

HTML mentakrifkan struktur web, CSS bertanggungjawab untuk gaya dan susun atur, dan JavaScript memberikan interaksi dinamik. Ketiga melaksanakan tugas mereka dalam pembangunan web dan bersama -sama membina laman web yang berwarna -warni.

HTML sesuai untuk pemula kerana mudah dan mudah dipelajari dan dapat melihat hasilnya dengan cepat. 1) Keluk pembelajaran HTML adalah lancar dan mudah dimulakan. 2) Hanya menguasai tag asas untuk mula membuat laman web. 3) Fleksibiliti yang tinggi dan boleh digunakan dalam kombinasi dengan CSS dan JavaScript. 4) Sumber pembelajaran yang kaya dan alat moden menyokong proses pembelajaran.

Anexampleofastartartingtaginhtmlis, yangbeginsaparagraph.startingtagsareessentialinhtmlasttheyinitiateelements, definetheirtypes, andarecrucialforstructuringwebpagesandconstructionthedom.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Versi Mac WebStorm
Alat pembangunan JavaScript yang berguna

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft