CSS 形状模块标准1(CSS Shapes Module Level 1)这个规范打破了 WEB 中的矩形盒模型的限制,并且将网页设计提升到一个新的高度。

关于 Shapes 规范 shape-outside

shape-outside CSS 属性可以来设置行内内容应该包裹的形状,默认形状为:margin-box。这一属性足以让我们发挥各种想象,从此我们的元素设计将不会仅仅存在于一个矩形内,它可以是任何形状。

  • shape-outside: none :没有形状就是默认形状:margin-box
  • shape-outside: margin-box :定义一个由外边距的外边缘封闭形成的形状。
  • shape-outside: border-box :定义一个由边界的外边缘封闭形成的形状。
  • shape-outside: padding-box :定义一个由内边距的外边缘封闭形成的形状。
  • shape-outside: content-box :定义一个由内容区域的外边缘封闭形成的形状

以上属性定义了整个区域的范围,其实和 box-sizing 比较类似。

  • shape-outside: circle() :定义一个圆形函数来绘制包裹形状。
  • shape-outside: ellipse() :定义一个椭圆形函数来绘制包裹形状。
  • shape-outside: inset()
  • shape-outside: polygon() :定义一个多边形函数来绘制包裹形状。

以上属性是来绘制整个包裹区域的形状的,有点类似于 SVG 或者 Canvas 的绘制图像函数。

  • shape-outside: url() :定义区域内背景图。
  • shape-outside: linear-gradient() :定义区域内背景渐变色。

以上属性是来给整个区域设置背景的。

剪裁 clip-path

clip-path CSS 属性可以用来设置一个元素的剪切区域,区域内的部分显示,区域外的部分隐藏。

  • clip-path: none
  • clip-path: fill-box
  • clip-path: border-box
  • clip-path: padding-box
  • clip-path: content-box

它们和 shape-outside 的区域范围定义比较类似。

  • clip-path: circle()
  • clip-path: ellipse()
  • clip-path: inset()

它们和 shape-outside 的绘制形状比较类似。

开始尝试

有了 shape-outsideclip-path 我们不仅可以让行内元素产生不同的形状(影响周边元素),而且可以让块级元素剪切成自己想要的形状。

以下 Demo 可以在这里修改查看:https://codepen.io/anon/pen/oMBwVK

<!DOCTYPE html>
<html>
<head>
<style>
.circle-words {
shape-outside: content-box circle();
width: 200px;
height: 200px;
border-radius: 50%;
background-color: #FF5A5F;
float: left;
}
.circle-clip {
background-color: #FF5A5F;
width: 400px;
height: 200px;
clip-path: inset(15% 0 15% 0 round 0 15% 0 15%);
margin: 30px;
background-image: url(https://metaimg.baichanghui.com/METADATA/79d9a111-a39b-4904-b7e3-94068927d822);
}
</style>
</head>
<body>
<div style="width: 600px; margin: auto">
<div class="circle-words"></div>
Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World! Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!Hello World!
</div>
<div style="width: 600px; height: 600px; margin: auto; background-color: #999">
<div class="circle-clip"> </div>
</div>
</body>
</html>

作者:一俢
链接:https://www.jianshu.com/p/bb3b2e97bd61

CSS3 clip-path & clip-path 打破矩形设计的限制的更多相关文章

  1. os.path.exists(path) 和 os.path.lexists(path) 的区别

    使用os.path.exists()方法可以直接判断文件是否存在.代码如下:>>> import os>>> os.path.exists(r'C:\1.TXT') ...

  2. os.path.isdir(path)异常

    Window 10家庭中文版,Python 3.6.4, 当一个路径以多个斜杠(/)或反斜杠字符(\\)结尾时,os.path.isdir(path)函数仍然将它们判断为目录: >>> ...

  3. 一款由css3和jquery实现的响应式设计导航

    2014年响应式设计成为设计主流.今天要给大家带来一款由css3和jquery实现的响应式设计导航.当显示器为pc时,导航为横条.当客户端为移动端时,呈现坚形导航.我们一起看下效果图: 在线预览    ...

  4. InstallShield Build Error -1014: Cannot rename directory <PATH> to <PATH>\folder.Bak.

    InstallSheild执行Build结果错误: 错误详细信息: Cannot rename directory <PATH> to <PATH>\folder.Bak. W ...

  5. os.path.join合并 os.path.dirname返回上一级目录 os.path.exists(path) os.stat('path/filename')获取文件/目录信息

    import os str1 = "grsdgfd" str2 = "wddf" str3 = "gddgs" # print(str1 + ...

  6. os模块 os.stat('path/filename') os.path.dirname(path) os.path.exists(path)  os.path.join(path1[, path2[, ...]])

    提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname")  改变当前脚本工作目录:相当于 ...

  7. difference in physical path, root path, virutal path, relative virtual path, application path and aboslute path?

    http://stackoverflow.com/questions/13869817/difference-in-physical-path-root-path-virutal-path-relat ...

  8. css3创建多边形clip属性,可用来绘制不规则图形了

    .path1 { clip-path: polygon(5px 10px, 16px 3px, 16px 17px); } .path2 { clip-path: polygon(3px 5px, 1 ...

  9. 采用CSS3的动态元素(动画)设计div块的层级式展现

    此练习作品是为学习HTML5+CSS3而设计的(如有不好请大家批评指教~~~). 操作:当页面加载时,点击网页中的绿色块(一层),则有其他几块(二层)从其中央出现并向外延伸并旋转,点击这几块中任意一个 ...

随机推荐

  1. 浮动和渐变色,定位position,元素的层叠顺序

    浮动: float 是我们网页布局的一种 浮动 可以有 left 左浮动 right 右浮动 两种 浮动的特点: 脱离正常的文档流,原本的空间不占据,浮动的标签都具有块级标签的一些特点,可以手动设置宽 ...

  2. 刚接触HTML5应该先学哪里才好?

    好吧,话不多说,直接来点干货吧! 刚接触html的小白都感觉摸不着头脑?应该怎么学习呢,其实HTML5可能对于还没有接触过的小白来说会比较的难,听起来也比较新颖.这是个什么骚东西!其实不然,这个就是构 ...

  3. Java 之 方法引用

    方法引用 一.冗余的Lambda场景 来看一个简单的函数式接口以应用Lambda表达式: @FunctionalInterface public interface Printable { void ...

  4. uboot使用脚本

    使用mkimage命令 # mkimage -A ARM -O linux -T script -C none -n "script" -d *.sh *.img # tftp x ...

  5. vuex页面刷新数据丢失的解决办法

    在vue项目中用vuex来做全局的状态管理, 发现当刷新网页后,保存在vuex实例store里的数据会丢失. 原因: 因为store里的数据是保存在运行内存中的,当页面刷新时,页面会重新加载vue实例 ...

  6. Spring @Transactional注解不起作用解决办法及原理分析

    Transactional失效场景介绍 第一种 Transactional注解标注方法修饰符为非public时,@Transactional注解将会不起作用.例如以下代码. 定义一个错误的@Trans ...

  7. MySQL Network--域名与VIP

    VIP与域名1.域名能在多个IDC切换,而VIP通常在特定网段内切换.2.VIP切换可以立即生效,而域名切换存在一定时间延迟. DNS解析顺序:1.查询本地域名映射配置(/etc/hosts)2.查查 ...

  8. python3+django+mysql

    django 连接mysql默认驱动是MySQLdb,MySQLdb没有支持python3的版本,如果使用python3.x版本时,django连接mysql的方法 1.使用pymysql替换MySQ ...

  9. vue $refs操作DOM

    原文链接:https://www.cnblogs.com/xumqfaith/p/7743387.html 如图,ref 被用来给元素或子组件注册引用信息.引用信息将会注册在父组件的 $refs 对象 ...

  10. 蓝桥杯-入门训练 :A+B问题

    问题描述 输入A.B,输出A+B. 说明:在“问题描述”这部分,会给出试题的意思,以及所要求的目标. 输入格式 输入的第一行包括两个整数,由空格分隔,分别表示A.B. 输出格式 输出一行,包括一个整数 ...