一、啥是 CSS shape - outside

在网页设计里,文字排版一般都是规规矩矩的,方方正正的。但有时候咱就想搞点特别的,让文字能环绕着不规则形状来排版,这时候 CSS 的 shape - outside 属性就派上用场啦。简单来说,shape - outside 就是能让文字环绕着一个不规则的形状排列,打破那种传统的方正排版,让页面更有个性。

二、基本语法和使用方式

(一)基本语法

shape - outside 有好几种取值方式,下面给大家详细说说。

  1. circle() 这个就是创建一个圆形的环绕区域。语法是 circle(radius at x y),radius 就是圆的半径,x 和 y 是圆心的位置。 示例(CSS 技术栈):
/* 创建一个圆形的环绕区域 */
.circle-shape {
    float: left; /* 让元素浮动,文字才能环绕 */
    width: 200px;
    height: 200px;
    shape - outside: circle(100px at 50% 50%); /* 半径 100px,圆心在元素中心 */
}

这里创建了一个半径为 100px 的圆形环绕区域,圆心在元素的中心。

  1. ellipse() 这是创建椭圆的环绕区域。语法是 ellipse(rx ry at x y),rx 和 ry 分别是椭圆的 x 轴和 y 轴半径,x 和 y 是椭圆中心的位置。 示例(CSS 技术栈):
/* 创建一个椭圆的环绕区域 */
.ellipse-shape {
    float: left;
    width: 200px;
    height: 150px;
    shape - outside: ellipse(100px 75px at 50% 50%); /* x 轴半径 100px,y 轴半径 75px,中心在元素中心 */
}

这个示例创建了一个 x 轴半径为 100px,y 轴半径为 75px 的椭圆环绕区域。

  1. polygon() 这个可以创建多边形的环绕区域。语法是 polygon(x1 y1, x2 y2, x3 y3, ...),这里的 x 和 y 是多边形各个顶点的坐标。 示例(CSS 技术栈):
/* 创建一个三角形的环绕区域 */
.triangle-shape {
    float: left;
    width: 200px;
    height: 200px;
    shape - outside: polygon(50% 0, 100% 100%, 0 100%); /* 三角形的三个顶点坐标 */
}

这里创建了一个三角形的环绕区域,三个顶点分别是 (50%, 0)、(100%, 100%) 和 (0, 100%)。

(二)使用步骤

  1. 首先得有一个要环绕的元素,给它设置浮动,这样文字才能环绕它。
  2. 然后用 shape - outside 属性给这个元素设置一个不规则的环绕形状。
  3. 最后在页面里添加文字,文字就会按照设置的形状环绕排列啦。

示例(HTML + CSS 技术栈):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF - 8">
    <style>
        /* 设置圆形环绕区域 */
       .circle - shape {
            float: left;
            width: 200px;
            height: 200px;
            shape - outside: circle(100px at 50% 50%);
            background: lightblue;
        }
    </style>
</head>

<body>
    <div class="circle - shape"></div>
    <p>这里是一大段文字,这些文字会环绕着上面的圆形区域排列。这里是一大段文字,这些文字会环绕着上面的圆形区域排列。这里是一大段文字,这些文字会环绕着上面的圆形区域排列。这里是一大段文字,这些文字会环绕着上面的圆形区域排列。这里是一大段文字,这些文字会环绕着上面的圆形区域排列。</p>
</body>

</html>

在这个示例里,我们创建了一个圆形的元素,然后设置了 shape - outside 属性,最后添加了一段文字,文字就会环绕着圆形排列。

三、应用场景

(一)创意排版

在一些艺术、设计类的网站里,用 shape - outside 可以让页面的排版更有创意。比如说,把文字环绕成一个艺术品的形状,或者是品牌标志的形状,这样能让页面更有个性,吸引用户的注意力。 示例(CSS 技术栈):

/* 把文字环绕成一个星星的形状 */
.star - shape {
    float: left;
    width: 200px;
    height: 200px;
    shape - outside: polygon(50% 0%, 61% 35%, 98% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 2% 35%, 39% 35%);
}

在一个艺术网站里,用这个星星形状的环绕区域来排版文字,会让页面看起来很独特。

(二)图文混排

在新闻、博客等页面里,经常会有图文混排的需求。用 shape - outside 可以让图片和文字的排版更自然。比如说,把图片设置成不规则形状,然后让文字环绕着图片排列,这样能让页面更美观。 示例(HTML + CSS 技术栈):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF - 8">
    <style>
        img {
            float: left;
            width: 200px;
            height: 200px;
            shape - outside: circle(100px at 50% 50%);
        }
    </style>
</head>

<body>
    <img src="example.jpg" alt="示例图片">
    <p>这里是和图片相关的文字,文字会环绕着图片排列。这里是和图片相关的文字,文字会环绕着图片排列。这里是和图片相关的文字,文字会环绕着图片排列。这里是和图片相关的文字,文字会环绕着图片排列。</p>
</body>

</html>

在这个示例里,图片被设置成圆形的环绕区域,文字就会环绕着图片排列,让图文混排更自然。

四、技术优缺点

(一)优点

  1. 增强页面美观度:能打破传统的方正排版,让页面更有创意和个性,吸引用户的注意力。
  2. 提高用户体验:不规则的排版能让页面看起来更生动,用户在浏览页面时会觉得更有趣。
  3. 实现图文自然混排:让图片和文字的排版更自然,不会显得很生硬。

(二)缺点

  1. 浏览器兼容性问题:不是所有的浏览器都支持 shape - outside 属性,在一些旧版本的浏览器里可能无法正常显示。
  2. 学习成本较高:对于一些新手开发者来说,理解和使用 shape - outside 的各种取值方式可能会有一定的难度。
  3. 性能问题:如果使用复杂的形状,可能会影响页面的性能,尤其是在移动设备上。

五、注意事项

(一)浏览器兼容性

在使用 shape - outside 之前,一定要检查目标浏览器是否支持这个属性。可以通过 Can I Use 网站来查看浏览器的兼容性情况。对于不支持的浏览器,可以提供一个备用的排版方案,比如传统的方正排版。

(二)形状复杂度

尽量避免使用过于复杂的形状,因为复杂的形状会增加页面的渲染时间,影响性能。如果需要使用复杂形状,可以考虑对形状进行简化。

(三)浮动元素

使用 shape - outside 时,元素必须设置浮动(float 属性),否则文字不会环绕元素排列。

六、文章总结

CSS 的 shape - outside 属性为网页排版带来了新的可能性,能让文字环绕不规则形状排列,增强页面的美观度和用户体验。它在创意排版和图文混排等场景里有很好的应用。不过,这个属性也存在一些缺点,比如浏览器兼容性问题、学习成本较高和性能问题等。在使用时,我们要注意浏览器兼容性,避免使用过于复杂的形状,并且要正确设置浮动元素。总体来说,shape - outside 是一个很有用的属性,值得开发者去尝试和探索。