首页 > 编程笔记 > CSS笔记 阅读:25

CSS shape-outside属性的用法(附带实例)

CSS 中的 shape-outside 属性用于重新定义元素的边界,让其看上去不再是个矩形。

先来看一个不使用 shape-outside 属性的效果:
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
<style>
img { float:right;}
</style>
</head>
    <body>
        <img src="/img/mars.png" alt="火星" border="1">
        <p>
        火星是太阳系八大行星之一,属于类地行星,
        ……
        </p>
        <p>
        火星有两颗天然卫星:火卫一和火卫二,
        ……
        </p>
        <p>
        火星基本上是沙漠行星,地表沙丘、砾石、陨石遍布。
        ……
        </p>
    </body>
</html>
默认情况下,元素的形状是标准的矩形,页面显示效果见下图:


下面的样式使用了 shape-outside 属性,功能是让文字随着火星的圆形边界排列:
<style>
img {
    float: right;
    shape-outside: url(/img/mars.png);
    shape-margin: 1em;
}
</style>
页面显示效果见下图:


示例中,shape-outside 属性使用 url() 函数引用的图片定义了元素的边界。其原理是将图片的不透明部分作为元素的边界。这里有一个小技巧,即含有透明部分的图片,可以使用它自身作为边界定义的图片。

使用含有透明部分的图片定义元素边界时,还可以使用 shape-image-threshold 属性设置一个阈值,会将不透明度(alpha值)大于此阈值的部分作为有效的元素区域。和设置颜色不透明度一样,shape-image-threshold 属性的取值范围也是 0(完全透明)到 1(完全不透明)。

另一个相关的属性是 shape-margin,其功能是设置元素边界与相邻元素的距离,本例设置为 1em。

除了图片,还可以使用图形定义元素边界,相关的函数包括:
下面的样式使用 circle() 函数定义火星图片的边界:
<style>
img {
    width: 300px;
    float: right;
    shape-outside: circle(150px at 50%);
    shape-margin: 1em;
}
</style>
页面显示效果见下图:


下面的样式使用一个三角形作为火星的边界:
<style>
body {background-color: black;}
p {color: white;}
img {
    width: 300px;
    float: right;
    shape-outside: polygon(150px 1px, 1px 299px, 299px 299px);
    shape-margin: 1em;
}
</style>
页面显示效果见下图,其中的白色三角就是定义的图形区域:


shape-outside 属性中,另一个可以设置区域的函数是 inset() 函数,可以定义元素内的一个矩形作为区域边界,其参数分别定义上、右、下、左方向距离元素原始边界的距离。这里,参数的设置与 margin、padding 属性相似,可以使用如下格式:
下面的样式演示了 inset() 函数的应用:
<style>
body {background-color: black;}
p {color: white;}
img {
    width: 300px;
    float: right;
    shape-outside: inset(100px);
    shape-margin: 1em;
}
</style>
页面显示效果见下图:


inset() 函数中,还可以使用 round 关键字设置矩形的圆角半径,如下面的样式:
<style>
body {background-color: black;}
p {color: white;}
img {
    width: 300px;
    float: left;
    shape-outside: inset(100px round 50px);
    shape-margin: 1em;
}
</style>
页面显示效果见下图:

相关文章