跳到主要内容

1 篇博文 含有标签「var」

查看所有标签

· 阅读需 9 分钟

空闲时间看到俩CSS,var()、mask 没遇到过,比较好奇,学习一下。

CSS变量var()语法

上来先看看是怎么写的,我就是被这惊奇的写法吸引到了。

See the Pen var() by 周艳伟 (@zywkuo) on CodePen.

var 哇 css怎么用到了var,什么鬼。

原来这是css原生的变量,CSS中原生的变量定义语法是:--,变量使用语法是:var(--),其中*表示我们的变量名称。关于命名这个东西,各种语言都有些显示,例如CSS选择器不能是数字开头,JS中的变量是不能直接数值的,但是,在CSS变量中,这些限制通通没有

但是,不能包含$,[,^,(,%等字符,普通字符局限在只要是“数字[0-9]”“字母[a-zA-Z]”“下划线_”和“短横线-”这些组合,但是可以是中文,日文或者韩文。

看一下兼容性

我们广大的猿友们,努努力吧IE干掉吧。

有想了解更多的,请来张鑫旭,张大大空间,看看他的这篇文章https://www.zhangxinxu.com/wordpress/2016/11/css-css3-variables-var/

声明一下,上面和下面一点关系都没有,只是同时看到了,就一起学习一下。

mask

遮罩mask的功能就是使用透明的图片或渐变遮罩元素的背景. 我用我的大白话理解一下,就是把图片的透明处变为不透明,不透明的地方变成透明。(如有错误,欢迎指正。)所以jpg的还是就算了吧,放了也是全透明,没什么效果,开始我放了jpg的,找了半天原因。

遮罩mask是一个复合属性

  • mask-image
  • mask-mode
  • mask-repeat
  • mask-position
  • mask-clip
  • mask-origin
  • mask-size
  • mask-type
  • mask-composite

mask-image

默认值为none,值为透明图片,或透明渐变 mask-image遮罩所支持的图片类型非常的广泛,可以是url()静态图片资源,格式包括JPG,PNG以及SVG等都是支持的;也可以是动态生成的图片,例如使用各种CSS3渐变绘制的图片。语法上支持CSS3各类渐变,以及url()功能符,image()功能符,甚至element()功能符。同时还支持多背景,因此理论上,使用mask-image我们可以遮罩出任意我们想要的图形,非常强大。

html

<img src="1.jpg" alt="" class="mask">

1.jpg图片是这个

放上这段css

.mask {
width: 600px;
-webkit-mask-image: url(3.svg);
mask-image: url(3.svg);
}

3.svg长这样

运行结果这样

mask-repeat

mask-repeat属性的默认值是repeat,行为类似于background-repeat属性。

属性

mask-repeat: repeat-x;      //水平x平铺
mask-repeat: repeat-y; //垂直y平铺。
mask-repeat: repeat; //默认值,水平和垂直平铺。
mask-repeat: no-repeat; //不平铺
mask-repeat: space; //表示遮罩图片尽可能的平铺同时不发生任何剪裁。
mask-repeat: round; //表示遮罩图片尽可能靠在一起没有任何间隙,同时不发生任何剪裁。

mask-position

mask-position和background-position支持的属性值和表现基本上都是一模一样的。 例如,mask-position默认计算值是0% 0%,也就是相对左上角定位。

支持单个关键字(缺省关键字的解析为center):

mask-position: top;
mask-position: bottom;
mask-position: left;
mask-position: right;
mask-position: center;

支持垂直和水平方向两个关键字:

mask-position: right top;

支持各类数值:

mask-position: 30% 50%;<
mask-position: 10px 5rem;

由于mask-image支持多遮罩图片,因此,mask-position也支持多属性值,例如:

mask-position: 0 0, center;

这个我就不具体上图片了,想必大家都懂了。 想看的请跳到张大大这里看一下吧,https://www.zhangxinxu.com/study/201711/mask-position-png.html

mask-clip

mask-clip属性性质上和background-clip类似,但是mask-clip支持的属性值要多一点,主要是多了个SVG元素的mask-clip支持。

属性值

mask-clip: content-box;
mask-clip: padding-box;
mask-clip: border-box;
mask-clip: fill-box;
mask-clip: stroke-box;
mask-clip: view-box;
mask-clip: no-clip;

其中默认值是border-box和background-clip类似。同样也支持多属性值:

mask-clip: content-box, border-box;

谷歌测试了一下,全员out!!!!!!晕 火狐也全员out,什么鬼,难道和笔记本有关(我的是mac)..这个还有待测试。

mask-origin

属性值

mask-origin: content-box;
mask-origin: padding-box;
mask-origin: border-box;
mask-origin: fill-box;
mask-origin: stroke-box;
mask-origin: view-box;

其中默认值是border-box和background-origin类似。同样也支持多属性值:

mask-origin: content-box, border-box;

测试结果依旧全员out!!!!!!

mask-size

mask-size属性性质上和background-size类似,支持的属性值也类似,作用是控制遮罩图片尺寸。

默认值是auto.

属性值

mask-size: cover;
mask-size: contain;

支持各类数值(缺省高度会自动计算为auto):

mask-size: 50%;
mask-size: 3em;
mask-size: 12px;

mask-size: 50% auto;
mask-size: 3em 25%;
mask-size: auto 6px;

同样支持多属性值:

mask-size: 50%, 25%, 25%;
mask-size: 6px, auto, contain;

mask-type

mask-type属性功能上和mask-mode类似,都是设置不同的遮罩模式。但还是有个很大的区别,那就是mask-type只能作用在SVG元素上,本质上是由SVG属性演变而来,因此,Chrome等浏览器都是支持的。但是mask-mode是一个针对所有元素的CSS3属性,Chrome等浏览器并不支持,目前仅Firefox浏览器支持。

由于只能作用在SVG元素上,因此默认值表现为SVG元素默认遮罩模式,也就是默认值是luminance,亮度遮罩模式。如果需要支持透明度遮罩模式,可以这么设置:

mask-type: alpha;

mask-composite

mask-composite表示当同时使用多个图片进行遮罩时候的混合方式

属性值

mask-composite: add;            //遮罩累加。
mask-composite: subtract; //遮罩相减。也就是遮罩图片重合的地方不显示。意味着遮罩图片越多,遮罩区域越小。
mask-composite: intersect; //遮罩相交。也就是遮罩图片重合的地方才显示遮罩。
mask-composite: exclude; //遮罩排除。也就是后面遮罩图片重合的地方排除,当作透明处理。

这个属性浏览器支持也不是很好。。。

mask-mode

默认值为match-source,意思是根据资源的类型自动采用合适的遮罩模式。

mask-mode支持下面3个属性值:

.mask {
mask-mode: alpha;
mask-mode: luminance;
mask-mode: match-source;
}

因为mask-image支持多图片,因此mask-mode也支持多属性值,例如:

mask-mode: alpha, match-source;

这个属性浏览器支持效果还不是很好。

看一下浏览器兼容性吧。

虽然支持还不是很好,但是好东西不怕晚,欢迎指正。

学习的是张鑫旭,张大大的这篇文章https://www.zhangxinxu.com/wordpress/2016/11/css-css3-variables-var/