zoukankan      html  css  js  c++  java
  • css揭秘-笔记02

    知识点:

      1 border-radius 有一个鲜为人知的真相:它可以单独指定水平和垂直半径,只要用一个斜杠(/)分隔这两个值即可

         其实,border-radius 这个属性还有另外一个鲜为人知的真相,它不仅可以接受长度值,还可以接受百分比值。

         这个百分比值会基于元素的尺寸进行解析,即宽度用于水平半径的解析,而高度用于垂直半径的解析。

       这意味着相同的百分比可能会计算出不同的水平和垂直半径。

        border-radius: 50% / 50%;//创建一个自适应的椭圆
        border-radius: 50%;

      2 平行四边形

        通过skew() 的变形属性来对这个矩形进行斜向拉伸

        .button {
          position: relative;
          /* 其他的文字颜色、内边距等样式…… */
        }
        .button::before {
          content: ''; /* 用伪元素来生成一个矩形 */
          position: absolute;
          top: 0; right: 0; bottom: 0; left: 0;
          z-index: -1;
          background: #58a;
          transform: skew(45deg);
        }

        这个技巧不仅对skew() 变形来说很有用,还适用于其他任何变形样式,
        当我们想变形一个元素而不想变形它的内容时就可以用到它

      3 菱形图片

            .picture {
                 400px;
                transform: rotate(45deg);
                overflow: hidden;
            }
            .picture > img {
                max- 100%;
                transform: rotate(-45deg) scale(1.42);
            }

        polygon() 使用polygon()(多边形)函数来指定一个菱形。实际上,它允许我们用一系列(以逗号分隔的)坐标点来指定任意的多边形。

        我们甚至可以使用百分比值,它们会解析为元素自身的尺寸

        img {
            clip-path: polygon(50% 0, 100% 50%,
            50% 100%, 0 50%);
            transition: 1s clip-path;
        }
        img:hover {
            clip-path: polygon(0 0, 100% 0,
            100% 100%, 0 100%);
        }                

      4 切角效果

        第一种方案来自于无所不能的CSS 渐变。假设我们只需要一个角被切掉的效果,
        以右下角为例。这其中最大的窍门在于充分利用渐变的一大特性:渐变可以接受一个角度(比如45deg)作为方向,
        而且色标的位置信息也可以是绝对的长度值,这一点丝毫不受容器尺寸的影响。

            background: #58a;
            background:
                linear-gradient(-45deg, transparent 15px, #58a 0);

        很简单,对吧?你可以在图3-25 中看到结果。事实上,第一行声明
        并不是必需的,加上它是将其作为回退机制:如果某些浏览器不支持CSS
        渐变,那第二行声明会被丢弃,而此时我们至少还能得到一个简单的实色背景

            border: 20px solid transparent;
            border-image: 1 url('data:image/svg+xml,
            <svg xmlns="http://www.w3.org/2000/svg"
            width="3" height="3" fill="%2358a">
            <polygon points="0,1 1,0 2,0 3,1 3,2 2,3 1,3 0,2"/>
            </svg>');
            background: #58a;
            background-clip: padding-box;

      5 饼图

            .pie::before {
                content: '';
                display: block;
                margin-left: 50%;
                height: 100%;
                border-radius: 0 100% 100% 0 / 50%;
                background-color: inherit;
                transform-origin: left;
            }

      6 居中

        在CSS 中对元素进行水平居中是非常简单的:如果它是一个行内元素,
        就对它的父元素应用text-align: center;如果它是一个块级元素,就对
        它自身应用margin: auto。

            main {
                position: absolute;
                top: 50%;
                left: 50%;
                transform: translate(-50%, -50%);/*translate是移动属性,两个-50%代表着像原始位置向左、向上各移动50%*/ 
        }

        margin 的百分比值是以父元素的宽度作为解析基准的。没错,即使对于margin-top 和margin-bottom 来说也是这样!

    „      vw 是与视口宽度相关的。与常人的直觉不符的是,1vw 实际上表示视口宽度的1%,而不是100%。

    „     与vw类似,1vh表示视口高度的1%。
    „     当视口宽度小于高度时,1vmin等于1vw,否则等于1vh。
    „     当视口宽度大于高度时,1vmax等于1vw,否则等于1vh。

            main {
                 18em;
                padding: 1em 1.5em;
                margin: 50vh auto 0;
                transform: translateY(-50%);
            }

          这个技巧的实用性是相当有限的,因为它只适用于在视口中居中的场景。

  • 相关阅读:
    linux学习(一)
    Linux学习(用户管理)
    anyproxy mac安装
    python mitmproxy 代理
    Js常用方法map, sort
    echarts常用配置项【持续更新】
    【转】moment js 使用
    js Cannot assign to read only property 'exports' of object '#<Object>' at Modul,import 与module.exports混用问题
    a标签跳转referer漏洞
    element ui rate评分组建使用
  • 原文地址:https://www.cnblogs.com/poorpeople/p/5868095.html
Copyright © 2011-2022 走看看