CSS3 Shape ---使用形状改变旁边内容的布局
注意
本文所实现的功能,在浏览器的支持上并不好,除chrome浏览器外其余的大部分浏览器均不支持,虽然可以使用polyfill解决,但也不能很好的支持,有时也会出错
polyfill使用方法
下载polyfill,将其放入工程中,然后引用就可以了:<script src='js/shapes-polyfill.js'></script>。具体使用方法,参考GitHub
用途
本文主要介绍使用Shape形状改变旁边内容的布局,这里的内容主要是指文字。
描述CSS中集合图形的使用,对于level 1(候选标准)来说,可以使用形状属性改变形状旁边内容流布局。

属性
shape-outside
使用形状改变旁边内容的布局流,这里的内容指的是文字。
语法
shape-outside:none|[<basic-shape>||<shape-box>]|<image>
使用形状改变旁边内容的布局流,默认值为none
<basic-shape>:使用基本shapes函数绘制基本形状
<shape-box>:利用盒模型得到形状
<image>:从外部图像中获取形状
注意:只适用于float元素
shape-inside
使用相撞改变内部内容的布局流(语法暂时不稳定不推荐使用)
shape-margin
形状与旁边内容的距离
shape-image-threshold
适用于从外部图像中获取形状,设置阈值。即设置文字覆盖到图片的什么位置。如下图
正常情况下,显示如下

设置了shape-image-threshold为10的情况显示如下

绘制基本形状
绘制矩形
语法
inset()=inset(<shape-arg>{1,4}[round<border-radius>]?)
- inset可以接受1-4个参数,类似于margin四个值的指定(上右下左)。
 - border-radius为可选参数,定义矩形的圆角
 
绘制圆形
语法
circle() = circle( [<shape-radius>]? [at <position>]? )
- 默认为一个圆心在元素中心的的圆
 - shape-radius为可选参数,代表圆的半径。可以为数字、百分比,不可为负数;还可以为closest-side(近端)、farthest-side(远端)两个关键字。
 - position为可选参数,代表圆心位置
 
绘制椭圆形
语法
ellipse() = ellipse( [<shape-radius>{2}]? [at <position>]? )
- 默认为一个圆心在元素中心的的圆。
 - shape-radius为可选参数,两个值分别代表x轴、y轴半径。可以为数字、百分比,不可为负数;还可以为closest-side(近端)、farthest-side(远端)两个关键字。
 - position为可选参数,代表圆心位置
 
绘制多边形
语法
polygon() = polygon( [<fill-rule>,]? [<shape-arg> <shape-arg>]# )
- fill-rule为可选参数,代表多边形的填充规则。可以接受nonzero、evenodd作为参数。
 - shape-arg代表多边形顶点坐标,每一对表示一个点,至少需要三个点
 
绘制多边形可以使用chrome(谷歌)浏览器CSS Shapes Editor for Chrome插件进行可视化手动设置。在chrome浏览器中的开发者工具(Ctrl+Shift+I)可以看到
利用盒模型得到形状
语法
<shape-box> = border-box | padding-box | content-box | margin-box
盒模型其实就是通过css设置的盒子样式,主要是对边框进行设置
例子
border:10px solid #000;
border-radius:50%;
margin:20px;
<!-- 使用margin-box,以上设置,margin会有作用 -->
shape-outside:margin-box;
<!-- 使用padding-box,以上设置,margin不会有作用 -->
shape-outside:padding-box;
从外部图像中获取形状
语法
shape-outside: url("");
- url是图片路径
 - 使用外部图像得到形状,需要图像具有一个alpha通道。
 - 图像中alpha超过阈值的像素将会被用来定义形状。
 - 阈值由shape-image-threshold属性指定,默认值为0
 
因Demo中设计到多个文件,这里提供demo源码下载
CSS3 Shape ---使用形状改变旁边内容的布局的更多相关文章
- Android shape自定义形状,设置渐变色
		
<?xml version="1.0" encoding="utf-8"?> <!-- android:shape=["rect ...
 - CSS3制作各种形状图像(转)
		
CSS3制作各种形状图像 浏览:1417 | 更新:2015-05-24 14:43 | 标签:css 1 2 3 4 5 6 7 分步阅读 圆形-椭圆形-三角形-倒三角形=左三角形-右三角形-菱形- ...
 - 使用ajax实现无刷新改变页面内容
		
如何使用ajax实现无刷新改变页面内容(也就是ajax异步请求刷新页面),下面通过一个小demo说明一下,前端页面代码如下所示 1 <%@ Page Language="C#" ...
 - Java文件编码自动转换工具类(只改变编码,不会改变文件内容)
		
本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. public class Cha ...
 - 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL
		
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
 - HTML DOM 改变 HTML 内容
		
HTML DOM 允许 JavaScript 改变 HTML 元素的内容. 改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Feb 25 201 ...
 - 【onclick事件】【改变 HTML 内容innerHTML】【图片替换】【改变标签的css】【判断输入是否是数字】
		
1.onclick事件 <button type="button" onclick="alert('Welcome!')">点击这里</but ...
 - 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL (转)
		
在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变.并且能够很好的支持浏览器的前进和后退.不禁让人想问,是什么有这么强大 ...
 - js innerHTML 改变div内容的方法
		
永远不知道你可以改变的内容,一个HTML元素?也许你要取代的文字段落中,以反映什么访客选定刚刚从下拉框中.通过操纵一个元素的innerHtml您可以变更您的文本和HTML多达你喜欢.改变文字inner ...
 
随机推荐
- Struts2_用DomainModel接收参数
			
用域模型接收参数 User类 package com.bjsxt.struts2.user.model; public class User { private String name; privat ...
 - vos套餐设置
			
为实现对客户不同时段按不同费率计算,可以在vos里设置套餐, 具体案例: 1. 2.时段费率 套餐里没包含的时间段是不能打电话的 即:周一到周五 21:30—24:00 00:00- ...
 - c++的bind1st()与bind2nd() 二元算子转一元算子
			
bind1st()和bind2nd()是两个函数,用于将二元算子转成一元算子. 何谓二元算子? 比如< > =等等这些就是二元算子,即需要两个操作数的运算符. 何谓一元算子? 比如++ - ...
 - COGS 2091. Asm.Def的打击序列
			
★★★ 输入文件:asm_lis.in 输出文件:asm_lis.out 简单对比时间限制:4 s 内存限制:256 MB [题目描述] 白色圆柱形的“蓝翔”号在虚空中逐渐变大,一声沉 ...
 - PS:将一个图片变成圆形
			
1.选择一张正方形图片并放置到PS软件中 2.选择“选框工具”->右击选择"椭圆选框工具” 3.画出你要圆形内的范围: 4.选择两种方式中的一种,实际上效果是一毛一样的 5.右下角就会 ...
 - 我的visual studio 配色方案 Rubik c++版
			
只是更改了c++的配色,放出来与大家分享,因为大胆地采用了各种颜色,所以我把它取名叫做Rubik,因为Rubik‘s cube也就是魔方,我本人是非常喜欢魔方的,然后也符合颜色丰富多彩的这个特征,希望 ...
 - robotframework实战一
			
1.环境 1.Robotframework 安装环境,见以下帖子,只要保证python安装成功,安装了python的pip,就可以使用pip一路安装下去了.以下帖子也有基础的操作,帖子路径 http: ...
 - jemter实战
			
业务流梳理,需要实现的内容,含jdbc和正则表达式,和取值 1. 登录用户 2. 获取一个未分配的订单,判断是否是未分配 3. 获取配货单号 4. 分配配货单 5. 查询已分配的配货单 6. 查询包裹 ...
 - 类似LCS,构成目标单词(POJ2192)
			
题目链接:http://poj.org/problem?id=2192 解题报告: 1.类似最长公共子序列,dp[i][j]表示用s1前i个字符和s2前j个字符来构成目标单词的一部分,是否成功 2.状 ...
 - Poj (3239),m皇后问题
			
题目链接:http://poj.org/problem?id=3239 构造法很牛逼啊,把这个搜索的题直接变成了打表. 我用dfs写了一下. 构造法公式(序列):一.当n mod 6 != 2 或 n ...