zoukankan      html  css  js  c++  java
  • CSS揭秘(三)形状

    Chapter 3

     1. 椭圆

    椭圆的实现主要依靠 border-radius 属性,该属性确定边框切圆角的半径大小,可以指定数值 px,也可以使用百分比显示

    而且该属性非常灵活,四个角可以分别设置

     200px;
    height:200px;                    //正方形
    --------------------------------------------------------
    border-radius:100px;          //圆形
    border-radius:50%/50%;     //水平半径 / 垂直半径
    --------------------------------------------------------
    border-radius:50px/20px;    //椭圆边角
    --------------------------------------------------------
    border-radius:50%/100% 100% 0 0 //半椭圆,底部垂直圆角为0时水平圆角也自动为0,无需再次指定

                      

    2. 平行四边形

    平行四边形的实现依靠 transform:skew()实现,可以自己选择倾斜的方向X轴还是Y轴

    要解决的问题是:如何在容器倾斜的情况下保持内容不变?

    <a href="#yolo" class="button"><div>Click me</div></a>
    ---------------------------------------------------
    .button { transform: skewX(45deg); }
    .button > div { transform: skewX(-45deg); }  //文字设置反向倾斜以抵消容器带来的倾斜
    
    .button {
        display: inline-block;
        padding: .5em 1em;
        border: 0; margin: .5em;
        background: #58a;
        color: white;
        text-transform: uppercase;
        text-decoration: none;
        font: bold 200%/1 sans-serif;
    }

    .button {                                 //宿主元素
        position: relative;
        display: inline-block;
        padding: .5em 1em;
        border: 0; margin: .5em;
        background: transparent;
        color: white;
        text-transform: uppercase;
        text-decoration: none;
        font: bold 200%/1 sans-serif;
    }
    
    .button::before {                          //伪元素   
        content: ''; /* To generate the box */
        position: absolute;
        top: 0; right: 0; bottom: 0; left: 0;
        z-index: -1;
        background: #58a;
        transform: skew(45deg);
    }

    //想要变形元素而不变形内容可以使用

    3. 简单的饼图

    饼图实现有两种方式:渐变与SVG

    渐变结合伪元素实现旋转,要注意超过50%之后要反转伪元素背景色;

    通过这种方式还可以做动态旋转动画,用作加载进度的显示

    <div class="pie"></div>
    --------------------------------------------------------------------------------------------
    .pie {
        width: 100px; height: 100px;
        border-radius: 50%;
        background: yellowgreen;
        background-image: linear-gradient(to right, transparent 50%, currentColor 0);
        color: #655;
    }
    .pie::before {
        content: '';
        display: block;
        margin-left: 50%;
        height: 100%;
        border-radius: 0 100% 100% 0 / 50%;
        background-color: inherit;
        transform-origin: left;
        transform:rotate(0.15turn);    //设置旋转角度
    }

     SVG实现是先画圆和描边,然后在描边的下层再画一个更大的圆

    虚线描边属性 stroke-dasharray 的第一个参数表示虚线长度,第二个为虚线之间的间隙长度

    <svg width="100" height="100">
    <circle r="25" cx="50" cy="50"/>
    <svg>
    ------------------------------------------
    svg {
        transform: rotate(-90deg);
        background: yellowgreen;
        border-radius: 50%;
    }
    
    circle {
        fill: yellowgreen;
        stroke: #655;
        stroke-width:50;               //该宽度为半径的两倍
        stroke-dasharray:50 160;       //第二个参数为周长
    }

     

  • 相关阅读:
    iOS开发中常见错误总结(1)
    iOS开发——OC篇&纯代码退出键盘
    获取下拉框
    @RequestBody 注解
    form 表单提交
    数据库excel导出
    状态模式
    图书网上商城实现(一)
    MongoDB(一)—— 搭建环境和启动服务
    MySQL开发遇到的问题
  • 原文地址:https://www.cnblogs.com/sleeping-dog/p/8686104.html
Copyright © 2011-2022 走看看