Page 115 - css揭秘
P. 115

<div class="pie">20%</div>                             HTML
                                                  <div class="pie">60%</div>

                                                  然后在每个 .pie 元素内部生成一个 SVG 图像,并添入所有必要的图形
                                              元件和属性。为确保可访问性,还可以在它内部增加一个 <title> 元素,这
                                              样屏幕阅读器的读者也可以知道这个图像显示的是什么比率了。这段脚本最
                                              终可能是这样的:
                                                                                                            JS
                                                  $$('.pie').forEach(function(pie) {
                                                      var p = parseFloat(pie.textContent);
                                                      var NS = "http://www.w3.org/2000/svg";
                                                      var svg = document.createElementNS(NS, "svg");
                                                      var circle = document.createElementNS(NS, "circle");
                                                      var title = document.createElementNS(NS, "title");
                                                      circle.setAttribute("r", 16);
                                                      circle.setAttribute("cx", 16);
                                                      circle.setAttribute("cy", 16);
                                                      circle.setAttribute("stroke-dasharray", p + " 100");
                                                      svg.setAttribute("viewBox", "0 0 32 32");
                                                      title.textContent = pie.textContent;
                                                      pie.textContent = '';
                                                      svg.appendChild(title);
                                                      svg.appendChild(circle);
                                                      pie.appendChild(svg);
                                                  });







                     关于未来       饼图


                    还记得“棋盘”一节中提到的角向渐变吗?它在这里也是大有用武之地的。
                    我们在生成饼图时只需要一个圆形元素,再配上一幅具有两个色标的角向
                    渐变即可。举例来说,图 3-53 所呈现的 40% 饼图可能就是这么简单:


                        .pie {
                            width: 100px; height: 100px;
                            border-radius: 50%;
                            background: conic-gradient(#655 40%, yellowgreen 0);
                        }
                    不仅如此,一旦 attr() 函数在 CSS 值(第三版) (http://w3.org/TR/css3-values/#attr-notation)中的扩
                    展定义得到广泛实现之后,你将可以通过一个简单的 HTML 标签属性来控制饼图的比率显示。


                        background: conic-gradient(#655 attr(data-value %), yellowgreen 0);
                    有了这件利器,在饼图中加入第三种颜色也会变得手到擒来。举个例子,如果要生成本段右上方的那个饼
                    图,我们只需要再增加两个色标就可以了:

                        background: conic-gradient(deeppink 20%, #fb3 0, #fb3 30%, yellowgreen 0);




                   84   第 3 章 形状







          ඀ࠡ  JOEC
   110   111   112   113   114   115   116   117   118   119   120