• 主页
  • 归档
  • 分类
  • 照片墙
所有文章 友情链接 关于我

  • 主页
  • 归档
  • 分类
  • 照片墙
  1. 1. 基本用法
    1. 1.1. 关键字值
    2. 1.2. 图形函数值
    3. 1.3. 使用图片形状
  2. 2. 用于盒子内部

CSS属性shape-outside

2020-07-04 10:47:49
总字数 809
预计阅读时间 3 分钟

shape-outside的CSS属性定义了一个可以是非矩形的形状,相邻的内联内容应围绕该形状进行包装。默认情况下,内联内容包围其边距框

基本用法

关键字值

  • margin-box
  • content-box
  • border-box
  • padding-box

这几个关键字值就是表示该形状的边界是盒子模型的哪一层
如果使用box-sizing属性也可以达到相同的目的

图形函数值

可以使用图形函数

  • circle([<shape-radius>]? [at <position>]?) - 圆形,这个函数接受两个参数,均为可选
    第一个参数表示圆的半径(负值无效),第二个参数表示圆心的定位(注意圆心定位前需要加at关键字)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    .container {
    background: #ccc;
    overflow: auto;
    font-size: 12px;
    }
    .container > .inner {
    background-color: white;
    height: 100px;
    width: 100px;
    float: left;
    shape-outside: circle(50% at 20px 30px);
    }

    circle

  • ellipse([<shape-radius>{2}]? [at <position>]?) - 椭圆形
    这个函数与circle非常类似,差别就是shape-radius如果指定,需要指定两个值,分别表示X轴方向的半径和Y轴方向的半径

  • inset(<shape-arg>{1,4} [round <border-radius>]?) - 矩形
    前四个参数分别代表了插进的长方形与相关盒模型的上,右,下与左边界和顶点的偏移量。这些参数遵循边际速记语法(the syntax of the margin shorthand),所以给予一个、两个、或四个值都能设置四个偏移量。
    round后跟随的值表示圆角弧度

    边际速记语法:1个值表示上下左右;2个值分别表示上下、左右;3个值表示上、左右、下,4个值表示上、右、下、左。
    比如margin和padding的值使用的都是这种规则

  • polygon([<fill-rule>,]? [<shape-arg> <shape-arg>]#) - 多边形
    fill-rule有nonzero | evenodd两个值,用于指定确定点在内部和外部的规则,每一对sharp-arg的值代表一个多边形顶点坐标
    例如

    1
    2
    3
    4
    .container > .inner {
    /* 省略其他无关属性 */
    shape-outside: polygon(10px 10px, 20px 20px, 30px 30px);
    }

    polygon

使用图片形状

通常使用PNG图片,因为这种图片允许透明像素,如果是JPG这种只能是矩形的,也就没有什么意义了
根据图片的非透明区域进行包裹

1
2
3
.container > .inner {
shape-outside: url(/example/demo.png);
}

url
实际使用的是该图片的轮廓,这个属性并不会使图片显示出来,如果要看到图片,还需要配合background属性

用于盒子内部

该属性是用于指定当前元素外部的形状,如果要在内部使用,就需要进行一些变通
在内部添加DOM结构进行占位,可以使用实体DOM,也可以使用伪元素

1
2
3
4
5
<div class="circle">
<div class="before"></div>
<div class="after"></div>
这里是内部的文字...
</div>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
.circle {
border-radius: 50%;
width: 207px;
height: 250px;
color: white;
background-color: deepskyblue;
padding: 10px;
text-align: justify;
}
.before {
float: left;
width: 50%; height: 100%;
shape-outside: radial-gradient(farthest-side ellipse at right, transparent 100%, red);
}
.after {
float: right;
width: 50%; height: 100%;
shape-outside: radial-gradient(farthest-side ellipse at left, transparent 100%, red);
}

circle-inner

  • 前端
  • css
  • 前端杂烩

扫一扫,分享到微信

原生CSS变量
Vue项目改造Typescript 
© 2024 夏夜梦星辰
鲁ICP备19028444号
Power By Hexo
  • 所有文章
  • 友情链接
  • 关于我
{{searchItem.query}}
标签: 分类:
  • maven
  • 持续集成
  • JMS
  • 线程
  • JavaScript
  • ECMAScript6
  • 单元测试
  • Promise
  • Web Worker
  • 函数
  • prototype
  • 模块化
  • 正则表达式
  • 数据库
  • MongoDB
  • 索引
  • 集群
  • 全文检索
  • flutter
  • dart
  • git
  • 版本控制
  • linux
  • shell
  • docker
  • nginx
  • jenkins
  • opencv
  • vim
  • react
  • react native
  • 前端
  • css
  • HTML5
  • Hexo
  • sass
  • Three.js
  • TypeScript
  • Vue
  • 组件化
  • base64
  • webpack
  • nodejs
  • gulp
  • TensorFlow
  • 机器学习
  • 算法
  • 动态规划
  • 数据结构
  • Java
  • JavaScript
  • MongoDB
  • flutter
  • Git
  • linux
  • react
  • 前端杂烩
  • 男生女生
  • 算法
  • 十年饮冰,难凉热血
  • †少女癌†
  • 猫与向日葵
  • coderfun
  • JENKINS
  • API管理后台
愿你最终能接纳每一面每一种的自己
独自活着便是团圆