123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- import React from 'react'
-
- const wrapperStyle = {
- width: '100%',
- height: '100%',
- position: 'absolute',
- zIndex: 0,
- top: 0,
- left: 0,
- overflow: 'hidden',
- }
-
- const colors = [
- '#fff1f0',
- '#fff2e8',
- '#fff7e6',
- '#fffbe6',
- '#feffe6',
- '#fcffe6',
- '#f6ffed',
- '#e6fffb',
- '#e6f4ff',
- '#f0f5ff',
- '#f9f0ff',
- '#fff0f6',
- ]
-
- export default (props) => {
- const ref = React.useRef();
-
- const [color1, color2] = React.useMemo(() => {
- const inx1 = Math.floor(Math.random() * colors.length);
- const inx2 = Math.floor(Math.random() * colors.length);
-
- return [colors[inx1], colors[inx2]];
- }, []);
-
- React.useEffect(() => {
- const dom = ref.current;
- const canvas = dom.firstElementChild;
- canvas.width = dom.offsetWidth;
- canvas.height = dom.offsetHeight;
-
- const centerX = canvas.width / 2;
- const centerY = canvas.height / 2;
- const size = centerX / 3
-
- const ctx = canvas.getContext("2d");
-
- ctx.filter = `blur(200px)`;
-
- ctx.beginPath()
- ctx.fillStyle = color1; // "#ffd8bf";
- ctx.ellipse(centerX + 100, centerY + 80, size, size + Math.random() * 100, Math.PI / 4, 0, 2 * Math.PI);
- ctx.fill();
- ctx.closePath();
-
- ctx.beginPath()
- ctx.fillStyle = color2; // "#e6fffb";
- ctx.ellipse(centerX + 400, centerY + 120, size, size + Math.random() * 100, Math.PI / 2, 0, 2 * Math.PI);
- ctx.fill();
- ctx.closePath();
-
- }, []);
-
- return (
- <div ref={ref} style={wrapperStyle}>
- <canvas>
- </canvas>
- </div>
- )
- }
|