今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text。利用此属性值可以制作出很神奇的效果。可惜只有chrome支持,不过今天可以先来玩玩这个属性。

  先来介绍下background-clip吧,它的作用是对背景图片进行裁剪,取值有content-box|padding-box|border-box,即对哪一个盒子之外的背景进行裁剪。看下面的例子就明白了:

美女
content-box

padding-box

border-box

  以上三个取值很自然可以想到,但它还有另外一个取值有点让人惊艳,那就是text,它可以把文本内容之外的背景给裁剪掉。比如我们把上面的例子中写上文字:
美女
content-box

padding-box

border-box

text

  背景内容只裁剪出了文字中的,是不是很神奇~不过这里需要和另外一个css3属性配合使用,它就是-webkit-text-fill-color: transparent; 它是用来设置文字的填充色的,作用和指定color是一样的,不过它有一个取值非常有用:transparent,可以把文字填充色设为透明,这样的话就可以漏出后面背景的颜色了,也就是“文字镂空”效果。
     这样一来,要实现一个渐变色文字就很容易了,我们只需要用css3的渐变设置背景色即可,让后让文字来把背景给镂空显示出来。非常简单,这里有一个例子:http://trentwalton.com/bgclip/
     这里我又想到了一个实际用途,那就是实现K歌的字幕效果,文字颜色随进度而变化,需要做到同一个字上面有不同的颜色,像下面这张图:
  
  以前我们要做这样的效果,可能需要两个元素来,重叠起来,不断改变上面的元素的宽度来慢慢遮住下面,以此来模拟一种进度效果,如下是用两个元素实现的:
一盏离愁 孤单伫立在窗口

一盏离愁 孤单伫立在窗口
  这样做有几个缺陷:
     1. 一段文字需要写两遍,用两个元素
     2. 用户想要复制歌词时,无法完全选中这一行的文字。(因为确实不是同一行)
  既然我们可以用文字镂空出背景色来了,要实现这个效果也就相当容易了,只需一个div,css代码如下:
@-webkit-keyframes loop{
0%{background-position: -800px 0;}
100%{background-position: -0 0;}
}
.text2{
width: 800px;
height: 78px;
line-height: 78px;
font-size: 40px;
font-family: '微软雅黑';
font-weight: bold;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-color: red;
background-image:url(bg.jpg);
background-repeat:no-repeat;
background-position: -800px 0;
-webkit-animation:loop 10s linear infinite;
}

  看效果:

一盏离愁 孤单伫立在窗口
   可以很好解决上面的两个问题。当然用css3的方式也有问题的,那就是我们喜闻乐见的,不!兼!容!所以这里也只能是玩一玩了,当做一个思路。

犀利的background-clip:text,实现K歌字幕效果的更多相关文章

  1. python爬取全名k歌

    python3 爬取全名k歌 代码: import re import requests import ssl ssl._create_default_https_context=ssl._creat ...

  2. 在香港用什么软件可以唱歌?香港K歌app推荐

    KTV的源头来自于日本,KTV是Karaok TV的缩写.随着互联网时代越来越发达,手机K歌成了很多人会选择的方式,那么在香港有什么好用的K歌软件呢?这里qt6小编给大家推荐几款好用的,让你足不出户即 ...

  3. 【收藏】轻松导出全民K歌里任何人录制的短视频(MV)、歌曲的方法

    有一次想把她在全民K歌里唱过的所有歌下载到电脑上,然后合成一个视频.但不知道怎么导出全民K歌里的歌曲,经过各种百度Google终于找到了一个用起来很简单的工具.不仅可以下载保存任何人录制的歌曲,还可以 ...

  4. python3爬取全民K歌

    Python3爬取全民k歌 环境 python3.5 + requests 1.通过歌曲主页链接爬取 首先打开歌曲主页,打开开发者工具(F12). 选择Network,点击播放,会发现有一个请求返回的 ...

  5. 数据结构与算法实验题 9.1 K 歌 DFS+剪枝

    数据结构与算法实验题 K 歌 ★实验任务 3* n 个人(标号1~ 3 * n )分成 n 组 K 歌.有 m 个 3 人组合,每个组合都对应一个分数,你能算出最大能够得到的总分数么? ★数据输入 输 ...

  6. anyRTC 重磅推出在线实时 K 歌解决方案

    在线音乐领域一直是各大资本巨头投资的热点,从抢占版权到现在的"云上之争", 主流平台的战火从版权资源转向创新领域扩延.而如今,在线K歌正在成为抢占"云音乐"市场 ...

  7. 零元学Expression Design 4 - Chapter 3 看小光被包围了!!如何活用「Text On Path」设计效果

    原文:零元学Expression Design 4 - Chapter 3 看小光被包围了!!如何活用「Text On Path」设计效果 本章将教大家如何活用「Text On Path」,做出文绕图 ...

  8. [ javascript css clip ] javascript css clip 的奇思妙想之文字拼接效果

      语法: clip : auto | rect ( number number number number ) 参数: auto : 对象无剪切 rect ( number number numbe ...

  9. Andorid Clip 实现自定义的进度条效果实例

    Android该系统提供了一个水平进度条为我们展现了运行使用进展情况,水平进度条显示用于运行进度Clip Drawable技术 下面我们通过一个具体的例子来说明Clip Drawable使用. 还有我 ...

随机推荐

  1. springMVC 相对于 Structs 的优势

    智者说,没有经过自己的思考和估量,就不能接受别人的东西.资料只能是一个参考,至于是否正确,还得自己去分辨 SpringMVC相对于Structs的几个优势: 1.springMVC安全性更高,stru ...

  2. Java String,StringBuffer和StringBuilder的区别

    [可变与不可变] String是字符串常量,不可变. StringBuffer和StringBuilder是字符串变量,可变. [执行速度方面] StringBuilder > StringBu ...

  3. Jquery实现文字向上逐条滚动

    直接上代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  4. LinuxMM--Memory Pressure

    Memory pressure定义在操作系统中,用户分配.文件缓存.网卡包缓冲区等等都会消耗内存.一旦出现内存紧张就会导致memory pressure.引发当某个任务需要请求内存时就有可能引发mem ...

  5. nginx搭建笔记

    1. nginx安装 Env: Mac OS 10.10 Yosemite pcre: http://pcre.org/ $tar -zxf pcre-8.34.tar.gz $cd pcre-8.3 ...

  6. GridView基础知识

    首先,gridview是封装好的,直接在设计界面使用,基本不需要写代码: 1.绑定数据源 GridView最好与LinQDatasourse配合使用,相匹配绑定数据: 2.外观控制 整体控制 自动选择 ...

  7. Qt MVC(模型-视图-代理)

    实习刚才是一段时间,公司这边就要求熟悉这个mvc.一般开始都是用tableview,前面的blog我都是使用listview居多,并且相对delegate这个使用的多余model.接下来说下model ...

  8. Kinect2 随记

    2016.03.30 calibration工作: 地板砖1.24m一格,大概走到2.5m时5*7的pattern开始无法检测到. 20种板上位姿*20种黑板位姿=400幅图像. 距离越远,水平角能检 ...

  9. MyBatis使用动态SQL标签的小陷阱

    现在MyBatis越来越受大家的喜爱了,它的优势大家都知道,我就不多说了,直接说重点. MyBatis中提供动态SQL功能,我们可以使用<if><when><where& ...

  10. Tomcat服务器8080端口占用报错

    报错信息如下: Oct , :: PM org.apache.coyote.AbstractProtocol init SEVERE: Failed to initialize end point a ...