SVG知识难点

时间:2022-01-02 23:31:52
 
 
1.clip:默认值是auto,为不裁剪
<img border="0" src="http://image.zhangxinxu.com/image/study/s/s512/mm1.jpg" width="200" height="100">
当给img设置clip设置时,必须为img设置定位为绝对定位,为postion:absolute;
写样式时,
{
position:absolute;
clip:rect(0px 200px 100px 0px)
}
rect(top,right,bottom,left)
是裁剪图片的顶部,当是正值时,从图片的顶部开始裁剪。默认值是0
right:
是裁剪图片的右侧,默认值为图片的宽,当值开始逐渐减少时,图片从右侧开始一点一点的裁剪图片。
bottom:
是裁剪图片的底部,默认值为图片的高,当值逐渐减少时,图片从底部一点一点的裁剪图片。
left:
默认值是0,当值一点一点的增加时,开始从图片的左侧开始慢慢的裁剪图片。
当前的话,clip的形状函数只有rect()。clip属性只能在元素设置了‘position:absolute’或者'position:fixed'属性起作用。clip无法在设置'position:relative'和‘position:static’工作。
SVG知识难点
浏览器兼容性
你可能会很关注,这个属性的兼容性不知道如何?请放心,clip属性得到较好的支持,在chrome1.0+、firefox1.0+、opera7.0+、safari1.0+和ie8.0+都支持标准语法,但在ie4.0至ie7.0我们还是需要做一定的处理,需要把每个属性值之间的逗号去掉。
.my-element { position: absolute; clip: rect(10px 350px 170px 0); /* IE4 to IE7 */ clip: rect(10px, 350px, 170px, 0); /* IE8+ & other browsers */ }
需要特别的注意,ie4-ie7的要写在标准语句的前面,不然其他浏览器下将会无任何效果。
2.clip:rect(top,right,botttom,left)
在css2.1中,rect()中的<top>和<bottom>指定偏移量是从元素盒子顶部边缘算起;<left>和<right>指定的偏移量是从元素盒子的左边缘算起。<top>,<right>,<bottom>,<left>可以将值设置成为'auto'或者长度值<length>。而且还可以允许负的长度值。其中当<top>和<left>取值为‘auto’时,则默认为0,剪切区域的边缘和元素盒子边缘相同。当<right>和<bottom>设置为auto时,他们就相当于元素的宽度(这个宽度包括元素的border,padding和width),或者简单的理解为100%。
针对上面所言:
1.不显示剪切区域:当rect()中的bottom值小于top值,或者right值小于left值时,整个剪切区域不会显示。
二:clip-path
它是一个通过屏蔽和裁剪来隐藏元素的一部分的工具。尽管clip-path没有被主流的浏览器支持(包括IE和Firefox),但是webkit(chrome, safri)浏览器中,它仍然是一个实现时尚效果的小工具。
注意,在现代浏览器中需要添加使用-webkit-前缀。
clip-path简单的工作原理是提供一系列的x和y值来创建路径。当使用这些值创建一条完整路径时,就会把图像按照路径内部的尺寸进行裁剪。
利用clip-path,我们可以创建圆形,椭圆和多边形等不同的形状,创造力是唯一的限制。
例如:
一个简单的三角形裁剪:
SVG知识难点
.clipClass {
-webkit-clip-path: polygon(0 100%, 50% 0, 100% 100%);
}
分析:
x:0 和y:0表示从元素的左上角开始,并从左上角开始移动。x: 100%;表示元素右边,y:100%;表示的是元素底部。
这个简单路径开始与左下角,水平移动50%,并到达顶部位置,然后又水平移动到100%的位置,垂直向下回到底部,到达第三个坐标点,三角形就出来了。
 
形状:
在上面的实例中,我们使用polygon来创建一个图形,并通过多对用逗号(,)分开的x值和y值定义了一个路径。然后,我们可以通过取不同的值来创建不同的图形。
圆:
SVG知识难点
为了创建圆形,需要给circle传入三个值:圆心的坐标(X值和Y值)以及半径。当定义圆的半径时,我们可以用at关键字来定义圆心坐标:
.clipClass {
-webkit-clip-path: circle(50% at 50% 50%);
}
椭圆:
SVG知识难点
为了实现椭圆,需要给ellipse提供4个值:椭圆的x轴半径,y轴半径,定位椭圆位置的x坐标和y坐标,后面两个值用at关键字和前面的两个值分开。
.clipClass {
-webkit-clip-path:ellipse(30% 20% at 50% 50%);
}
插图:(在老版本的chrome中有错误)
SVG知识难点
因为多边形边缘锐利,所以他可能不是你想要的东西,你想创建的圆角矩形,所以我们来看看Inset的值。Insert使用四个值(对应“上 右 下 左”的顺序)来设置圆角半径。
.clipClass {
-webkit-clip-path: inset(25% 0 25% 0 round 0 25% 0 25%);
}
上面的各个值分别对应为:
1. inset(<top><right><bottom><left>round<top-radius><right-radius><bottom-radius><left-radius>)
其简写形式:
.clipClass {
-webkit-clip-path: inset(25% 0 round 0 25%);
}
注:其中的round前的参数是图形距离边框的距离,而round后的参数是图形的四个角的radius。使用border-radius实现上图的方法命令是:border-radius: 0 25%;
快速参考
  • Circle: circle(radius at x-axis y-axis)
  • Ellipse: ellipse(x-rad y-rad at x-axis y-axis)
  • Polygon: polygon(x-axis y-axis, x-axis y-axis, … )
  • Inset: inset(top right bottom left round top-radius right-radius bottom-radius left-radius)
创建图形:
正如你看到的,原型和圆角图形被少数几个值限制了,因而Polygons是创建复杂图形的最好选择,Polygons能定义多组点,运行我们用各种方式去裁图形。
Comic Textbox
SVG知识难点
.clipClass {
-webkit-clip- path: polygon(0% 0%, 100% 0%, 100% 75%, 75% 75%, 75% 100%,50% 75%, 0% 75%);
}
Star:
SVG知识难点
.clipClass {
-webkit-clip-path: polygon(50% 0%, 63% 38%, 100% 38%, 69% 59%, 82% 100%, 50% 75%, 18% 100%, 31% 59%, 0 38%, 37% 38%);
}
注意:
/* 引用一个内联的 SVG <clipPath> 路径*/ clip-path: url(#c1); /* 引用一个外部的 SVG 路径*/ clip-path: url(path.svg#c1);
动画:
给形状应用一个hover,并用过渡属性来创建平滑的效果,但是需要记住,我们创建的初始默认状态,必须同所有的hover状态都使用相同的坐标系。
.animateClass {
-webkit-clip-path: polygon(20% 0%, 0% 0%, 0% 50%, 0% 80%, 0% 100%, 50%100%, 80% 100%, 100% 100%, 100% 50%, 100% 0, 80% 0, 50% 0);
}
.animateClass:hover {
-webkit-clip-path: polygon(50% 0%, 0% 20%, 30% 50%, 0% 80%, 20% 100%, 50%70%, 80% 100%, 100% 80%, 70% 50%, 100% 20%, 80% 0%, 50% 30%);
}
 

SVG知识难点的更多相关文章

  1. C&plus;&plus;一些知识难点

    什么是"引用"?申明和使用"引用"要注意哪些问题? 答:引用就是某个目标变量的"别名"(alias).相应用的操作与对变量直接操作效果全然同 ...

  2. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  3. Xcode7--免证书真机调试

    Xcode7之前,想要真机调试,必须花99刀购买开发者账号,而且步骤繁琐,需要下载证书.随着Xcode7的推出,大幅度的简化了真机调试的步骤,对ios开发工作者和正在学习ios开发的众多码农们,可以说 ...

  4. 2016-2017-2 《Java程序设计》教学进程

    2016-2017-2 <Java程序设计>教学进程 目录 考核方式 课前准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  5. 那些年我们写过的T-SQL(上篇)

    在当今这个多种不同数据库混用,各种不同语言不同框架融合的年代(一切为了降低成本并高效的提供服务),知识点多如牛毛.虽然大部分SQL脚本可以使用标准SQL来写,但在实际中,效率就是一切,因而每种不同厂商 ...

  6. 2015-2016-2 《Java程序设计》教学进程

    2015-2016-2 <Java程序设计>教学进程 目录 考核方式 寒假准备 教学进程 第00周学习任务和要求 第01周学习任务和要求 第02周学习任务和要求 第03周学习任务和要求 第 ...

  7. DHCP的若干原理解释

    转自:http://blog.chinaunix.net/uid-22287947-id-1775641.html 搜罗了几种关于dhcp的原理和过程解释 DHCP(Dynamic Host Conf ...

  8. Linux第二次报告20135221

    学习计时:共xxx小时 读书: 代码: 作业: 博客: 一.学习目标 1. 熟悉Linux系统下的开发环境   2. 熟悉vi的基本操作   3. 熟悉gcc编译器的基本原理   4. 熟练使用gcc ...

  9. Linux基础入门学习笔记20135227黄晓妍

    学习计时:共24小时 读书:1小时 代码:8小时 作业:3小时 博客:12小时 一.学习目标 1. 能够独立安装Linux操作系统   2. 能够熟练使用Linux系统的基本命令   3. 熟练使用L ...

随机推荐

  1. ansible的使用技巧

    #查看ansible的帮助 $ ansible -h   #ansible 指定不通的模块执行 $ ansible -i /etc/ansible/hosts  docker -u root -m c ...

  2. &lbrack;Error&rsqb; Error parsing XML&colon; unbound prefix

    发生该错误的代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  3. mac安装 配置 ant

    转自:http://blog.sina.com.cn/s/blog_877e9c3c0101qs87.html 1.下载ant 官网下载 http://ant.apache.org/bindownlo ...

  4. Android mtk单路录音问题

    在单路录音中,有两种情况导致底层录音资源被占用的问题: 1 开启vmLog后,拨打一个电话,挂断电话.如果挂断电话后,没有关闭vmlog进程,则会导致其它AP 无法得到底层的录音资源,从而无法录音. ...

  5. QTP 参数化

    PS:方法内容是转的别人的,我们项目中只用到了方法三,主要用于将测试数据与业务分离,增强测试数据的可维护性. 方法一.DataTable方法 这是QTP提供的一种方法,也是最容易实现参数化的一种方式. ...

  6. Data Structure 之 二叉树

          在计算机科学中,二叉树是每个节点最多有两个子树的树结构.通常子树被称作“左子树”(left subtree)和“右子树”(right subtree).二叉树常被用于实现二叉查找树和二叉堆 ...

  7. Unity3D之Mecanim动画系统学习笔记(二):模型导入

    我们要在Unity3D中使用上模型和动画,需要经过下面几个阶段的制作,下面以一个人形的模型开发为准来介绍. 模型制作 模型建模(Modelling) 我们的美术在建模时一般会制作一个称为T-Pose( ...

  8. TFS&lpar;Team Foundation Server&rpar;简介和新手入门

    在两部分的文章.我会介绍Team Foundation Server一些核心功能,着重于产品的日常应用是如何将这些功能结合使用. 作为一个软件开发.在我的职业生涯,.我常常用于支持软件开发过程中大量的 ...

  9. POJ 1007

    DNA Sorting Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 83069 Accepted: 33428 Descrip ...

  10. &period;Net程序员学用Oracle系列&lpar;28&rpar;:PLSQL 之SQL分类和动态SQL

    1.SQL 语句分类 1.1.分类方法及类型 1.2.数据定义语言 1.3.数据操纵语言 1.4.其它语句 2.动态 SQL 理论 2.1.动态 SQL 的用途 2.2.动态 SQL 的语法 2.3. ...