CSS3 Notes:

日期:2021-01-20 类型:科技新闻 

关键词:如何创建网站,免费网站建站,网站建设文章,网站建设7个基本流程,自动建站

平时大家要完成倒映的实际效果,1般的做法是应用好几个DOM元素肯定精准定位+scale(负⑴)或rotate。这类方式的缺陷是占有室内空间和DOM元素过量。

在应用webkit核心的访问器中(chrome,safari,挪动端访问器),可使用-webkit-box-reflect特性来完成倒映,英语的语法以下所示

[ above | below | right | left ]? <length>? <image>?

该值包含了3一部分:方向+偏位量+遮罩层

方向是必不能少的;在应用遮罩层的情况下,偏位量是不能少的,如沒有则用零替代

!!!关键:遮罩层的实际效果与色调不相干,比如应用渐变色色调做遮罩,全是实色则全透明,全透明则暴漏初始色调

应用示比如下所示:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf⑻">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style type="text/csss">
    .box{ width:200px; height:200px; margin-bottom:20px;transform:scale(⑴,1); background-image:linear-gradient(90deg,red,yellow);-webkit-box-reflect:below 10px linear-gradient(180deg,transparent,#000); }
  </style>
</head>
<body>
  <div class="box"></div>
</body>
</html>

实际效果以下:

假如必须在firefox中完成相近实际效果,可使用-moz-element()涵数来完成,可是在转动下实际效果区别较大,以下所示。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf⑻">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
  <style type="text/css">
    .box{ width:200px; height:200px; margin:100px 0 0 100px; }
    .box1{ background-image:linear-gradient(180deg,red,yellow); transform:scale(1,⑴) rotate(45deg)}
    .box2{ background-image:-moz-element(#box1); }
  </style>
</head>
<body>
  <div class="box box1" id="box1"></div>
  <div class="box box2" id="box2"></div>
</body>
</html>

在chrome下应用-webkit-box-reflect的实际效果是这样的

假如要适配IE访问器还能够应用SVG或canvas来做,SVG关键运用pattern+mask+linearGradient+scale来做,canvas应用scale+globalCompositeOperation。

SVG事例一部分编码以下:

<svg width="200" height="200">
    <defs>
      <linearGradient id="a" x1="0" y1="0" x2="0" y2="1">
        <stop offset="0%" style="stop-color:yellow"/>
        <stop offset="100%" style="stop-color:red"/>
      </linearGradient>
      <linearGradient id="b" x1="0" y1="0" x2="0" y2="100%">
        <stop offset="0%" style="stop-color:rgba(255,255,255,0)"/>
        <stop offset="100%" style="stop-color:rgba(255,255,255,1)"/>
      </linearGradient>
      <mask id="c" x="0" y="0" width="1" height="1">
        <rect x="0" y="0" width="100%" height="100%" style="fill:url(#b)" />
      </mask>
    </defs>
    <rect x="0" y="0" width="200" height="200" style="fill:url(#a);" mask="url(#c)">
</svg>

canvas事例一部分编码以下

var canvas = document.getElementById('canvas'),
    ctx = canvas.getContext('2d');

var linearGradient1 = ctx.createLinearGradient(0,0,0,200);
linearGradient1.addColorStop(0,"red");
linearGradient1.addColorStop(1,"yellow");

var linearGradient2 = ctx.createLinearGradient(0,0,0,200);
linearGradient2.addColorStop(0,"transparent");
linearGradient2.addColorStop(1,"#ffffff");

ctx.fillStyle = linearGradient1;
ctx.fillRect(0,0,200,200);

ctx.globalCompositeOperation = 'destination-out';

ctx.fillStyle = linearGradient2;
ctx.fillRect(0,0,200,200);

以上就是倒映完成的各种各样方式,比照之下用css3的-webkit-box-reflect完成最简易实际效果也好。期待对大伙儿的学习培训有一定的协助,也期待大伙儿多多适用脚本制作之家。

上一篇:css挑选器 返回下一篇:没有了