注意

本文所实现的功能,在浏览器的支持上并不好,除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 ---使用形状改变旁边内容的布局的更多相关文章

  1. Android shape自定义形状,设置渐变色

      <?xml version="1.0" encoding="utf-8"?> <!-- android:shape=["rect ...

  2. CSS3制作各种形状图像(转)

    CSS3制作各种形状图像 浏览:1417 | 更新:2015-05-24 14:43 | 标签:css 1 2 3 4 5 6 7 分步阅读 圆形-椭圆形-三角形-倒三角形=左三角形-右三角形-菱形- ...

  3. 使用ajax实现无刷新改变页面内容

    如何使用ajax实现无刷新改变页面内容(也就是ajax异步请求刷新页面),下面通过一个小demo说明一下,前端页面代码如下所示 1 <%@ Page Language="C#" ...

  4. Java文件编码自动转换工具类(只改变编码,不会改变文件内容)

    本篇随笔主要介绍了一个用java语言写的将一个文件编码转换为另一个编码并不改变文件内容的工具类: 通过读取源文件内容,用URLEncoding重新编码解码的方式实现. public class Cha ...

  5. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  6. HTML DOM 改变 HTML 内容

    HTML DOM 允许 JavaScript 改变 HTML 元素的内容. 改变 HTML 输出流 JavaScript 能够创建动态的 HTML 内容: 今天的日期是: Thu Feb 25 201 ...

  7. 【onclick事件】【改变 HTML 内容innerHTML】【图片替换】【改变标签的css】【判断输入是否是数字】

    1.onclick事件 <button type="button" onclick="alert('Welcome!')">点击这里</but ...

  8. 使用ajax和window.history.pushState无刷新改变页面内容和地址栏URL (转)

    在访问现在很火的google plus时,细心的用户也许会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变.并且能够很好的支持浏览器的前进和后退.不禁让人想问,是什么有这么强大 ...

  9. js innerHTML 改变div内容的方法

    永远不知道你可以改变的内容,一个HTML元素?也许你要取代的文字段落中,以反映什么访客选定刚刚从下拉框中.通过操纵一个元素的innerHtml您可以变更您的文本和HTML多达你喜欢.改变文字inner ...

随机推荐

  1. 在windows bat脚本(batch)中延时

    编写bat脚本时,有事我们希望在指令和指令之间,加入延时.例如当一条指令执行后,windows需要一定时间来响应的情况. 以下是一种实现方法,通过ping 指令来实现,5表示ping5次,就是延时5秒 ...

  2. 深入了解MongoDB

    一.介绍: 数据库分为关系型数据库和非关系型数据库 关系型数据库是建立在关系模型上的数据库,主要的有Oracle MySQL Microsoft SQL Server NoSQL是非关系型数据存储的广 ...

  3. python 字符串部分总结

    字符串 对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符 >>> ord('A') 65 >>> ord ...

  4. CFG的定义

    最近在CMU上NLP,好吧 对于见了很多年的CFG(Context-Free Grammar)发现又搞不懂是什么了 教材上写的是: mathematical system for modeling c ...

  5. 其他信息: 尝试加载 Oracle 客户端库时引发 BadImageFormatException。如果在安装 32 位 Oracle 客户端组件的情况下以 64 位模式运行,将出现此问题。在VS中的解决方法

    第一种,不使用dataaccess,使用通用的Oracle.ManagedDataAccess,可以忽略版本问题 第二种,在属性——生成——web中iis express换成用本地IIS执行,但是这样 ...

  6. 返回json格式 不忽略null字段

    返回json格式 不忽略null字段  发布于 353天前  作者 king666  271 次浏览  复制  上一个帖子  下一个帖子  标签: json 如题,一个实体的某个字段如果为null,在 ...

  7. POJ-3020 Antenna Placement---二分图匹配&最小路径覆盖&建图

    题目链接: https://vjudge.net/problem/POJ-3020 题目大意: 一个n*m的方阵 一个雷达可覆盖两个*,一个*可与四周的一个*被覆盖,一个*可被多个雷达覆盖问至少需要多 ...

  8. 背包问题模板,POJ(1014)

    题目链接:http://poj.org/problem?id=1014 背包问题太经典了,之前的一篇博客已经讲了背包问题的原理. 这一个题目是多重背包,但是之前的枚举是超时的,这里采用二进制优化. 这 ...

  9. 2月4号学习的一个SSM整合项目,第一课

    本文引自:https://github.com/Sunybyjava/seckill  原作者:sunybyjava@gmail.com seckill 一个整合SSM框架的高并发和商品秒杀项目,学习 ...

  10. python Unittest+excel+ddt数据驱动测试

    #!user/bin/env python # coding=utf- # @Author : Dang # @Time : // : # @Email : @qq.com # @File : # @ ...