CSS3 clip-path & clip-path 打破矩形设计的限制
CSS 形状模块标准1(CSS Shapes Module Level 1)这个规范打破了 WEB 中的矩形盒模型的限制,并且将网页设计提升到一个新的高度。
关于 Shapes 规范 shape-outside
shape-outside CSS 属性可以来设置行内内容应该包裹的形状,默认形状为:margin-box。这一属性足以让我们发挥各种想象,从此我们的元素设计将不会仅仅存在于一个矩形内,它可以是任何形状。
shape-outside: none:没有形状就是默认形状:margin-boxshape-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: noneclip-path: fill-boxclip-path: border-boxclip-path: padding-boxclip-path: content-box
它们和 shape-outside 的区域范围定义比较类似。
clip-path: circle()clip-path: ellipse()clip-path: inset()
它们和 shape-outside 的绘制形状比较类似。
开始尝试
有了 shape-outside 和 clip-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 打破矩形设计的限制的更多相关文章
- os.path.exists(path) 和 os.path.lexists(path) 的区别
使用os.path.exists()方法可以直接判断文件是否存在.代码如下:>>> import os>>> os.path.exists(r'C:\1.TXT') ...
- os.path.isdir(path)异常
Window 10家庭中文版,Python 3.6.4, 当一个路径以多个斜杠(/)或反斜杠字符(\\)结尾时,os.path.isdir(path)函数仍然将它们判断为目录: >>> ...
- 一款由css3和jquery实现的响应式设计导航
2014年响应式设计成为设计主流.今天要给大家带来一款由css3和jquery实现的响应式设计导航.当显示器为pc时,导航为横条.当客户端为移动端时,呈现坚形导航.我们一起看下效果图: 在线预览 ...
- InstallShield Build Error -1014: Cannot rename directory <PATH> to <PATH>\folder.Bak.
InstallSheild执行Build结果错误: 错误详细信息: Cannot rename directory <PATH> to <PATH>\folder.Bak. W ...
- os.path.join合并 os.path.dirname返回上一级目录 os.path.exists(path) os.stat('path/filename')获取文件/目录信息
import os str1 = "grsdgfd" str2 = "wddf" str3 = "gddgs" # print(str1 + ...
- os模块 os.stat('path/filename') os.path.dirname(path) os.path.exists(path) os.path.join(path1[, path2[, ...]])
提供对操作系统进行调用的接口 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录:相当于 ...
- 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 ...
- css3创建多边形clip属性,可用来绘制不规则图形了
.path1 { clip-path: polygon(5px 10px, 16px 3px, 16px 17px); } .path2 { clip-path: polygon(3px 5px, 1 ...
- 采用CSS3的动态元素(动画)设计div块的层级式展现
此练习作品是为学习HTML5+CSS3而设计的(如有不好请大家批评指教~~~). 操作:当页面加载时,点击网页中的绿色块(一层),则有其他几块(二层)从其中央出现并向外延伸并旋转,点击这几块中任意一个 ...
随机推荐
- C++项目链接出错, error LNK2019: 无法解析的外部符号 __imp_xxxx_Allocate,该符号在函数 "xxxx" (xxxx) 中被引用
1 错误提示 error LNK2019: 无法解析的外部符号 __imp_FreeImage_Allocate,该符号在函数 "public: bool __cdecl colmap::B ...
- 【阿里云开发】- 搭建和卸载svn服务器
Subversion(SVN) 是一个开源的版本控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库(repository) 中.这个档案库很像一个普 ...
- python学习之操作redis
一.Redis安装网上很多可以查找 二.redis-py的安装,使用命令pip install redis. 安装过程中如果产生连接超时的错误,可以使用国内镜像参考如下 豆瓣:pip install ...
- Docker -compose install Harbor
Docker-compose Harbor install Docker install Yum install docker-compose 首先安装 yum configuation 管理工具 [ ...
- python代码组织及模块使用
python代码组织 python和其他编程语言一样,采用包管理代码,一个包中可包含许多模块. 使用模块最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其 ...
- python 编码设置
py 文件设置编码: # -*- coding: utf-8 -*- #coding=utf-8 两种方式任选一种即可 输出到浏览器设置编码: import io import sys sys.std ...
- JS知识图谱
- Redis一主二从Sentinel监控配置
本文基于Redis单实例安装安装.https://gper.club/articles/7e7e7f7ff7g5egc4g6b 开启哨兵模式,至少需要3个Sentinel实例(奇数个,否则无法选举Le ...
- jvm整理
我 2.JVM内存区域 p{ text-align: center; font-size: 12px; margin: 4px 0 0 0; } .nav-thumb >div{ positio ...
- LeetCode - 86、分隔链表
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前. 你应当保留两个分区中每个节点的初始相对位置. 示例: 输入: head = 1->4-&g ...