Skip to content

Commit 59786fd

Browse files
committed
[css-paint-api] Add overdraw exmaple using border-image.
1 parent cdc9a4a commit 59786fd

File tree

1 file changed

+47
-2
lines changed

1 file changed

+47
-2
lines changed

css-paint-api/Overview.bs

+47-2
Original file line numberDiff line numberDiff line change
@@ -844,8 +844,8 @@ registerPaint('arc', class {
844844
ctx.strokeStyle = args[0].cssText;
845845

846846
// Determine the center point.
847-
const x = geom.width / 2;
848-
const y = geom.height / 2;
847+
const x = geom.width / 2;
848+
const y = geom.height / 2;
849849

850850
// Convert the start and end angles to radians.
851851
const startAngle = this.convertAngle(args[1]) - Math.PI / 2;
@@ -926,3 +926,48 @@ registerPaint('heading-color', class {
926926
}
927927
});
928928
</pre>
929+
930+
Example 5: Drawing outside an element's area {#example-5}
931+
---------------------------------------------------------
932+
933+
It is possible to draw outside an element's area by using the 'border-image' property.
934+
935+
<pre class='lang-markup'>
936+
&lt;style>
937+
#overdraw {
938+
--border-width: 10;
939+
940+
border-style: solid;
941+
border-width: calc(var(--border-width) * 1px);
942+
943+
border-image-source: paint(overdraw);
944+
border-image-slice: 0 fill;
945+
border-image-outset: calc(var(--border-width) * 1px);
946+
947+
width: 200px;
948+
height: 200px;
949+
}
950+
&lt;/style>
951+
&lt;div id="overdraw">&lt;/div>
952+
&lt;script>
953+
CSS.paintWorklet.addModule('overdraw.js');
954+
&lt;/script>
955+
</pre>
956+
957+
<pre class='lang-javascript'>
958+
// overdraw.js
959+
registerPaint('overdraw', class {
960+
static get inputProperties() { return ['--border-width']; }
961+
paint(ctx, geom, properties) {
962+
const borderWidth = parseInt(properties.get('--border-width'));
963+
ctx.shadowColor = 'rgba(0,0,0,0.25)';
964+
ctx.shadowBlur = borderWidth;
965+
966+
ctx.fillStyle = 'rgba(255, 255, 255, 1)';
967+
ctx.fillRect(borderWidth,
968+
borderWidth,
969+
geom.width - 2 * borderWidth,
970+
geom.height - 2 * borderWidth);
971+
}
972+
});
973+
</pre>

0 commit comments

Comments
 (0)