Focal Point Picker 是一个用于创建用户界面以识别图像中最重要的视觉点的组件。
它解决了在裁剪容器中显示图像时的两个常见问题。首先,大型背景图像可能会以不理想的方式被裁剪,尤其是在较小的视口(如移动设备)上。其次,CSS aspect-ratio 属性可能会无意中裁剪掉视觉兴趣最高的区域。此组件允许选择包含最重要视觉信息的点,并将其作为 0 到 1 之间的数值对返回。输出值可以应用于 CSS background-position(用于具有 background-image 的元素)或 object-position(用于使用 object-fit: cover 渲染的 <img> / <video> 元素)。
- 焦点选取器示例值:
{ x: 0.5, y: 0.1 }; - 对应的 CSS:
object-position: 50% 10%;
用法
import { FocalPointPicker } from '@wordpress/components';
import { useState } from '@wordpress/element';
const Example = () => {
const [ focalPoint, setFocalPoint ] = useState( {
x: 0.5,
y: 0.1,
} );
const url = '/path/to/image';
/* 根据焦点选取器值渲染 CSS 样式的示例函数 */
const style = {
width: '100%',
aspectRatio: '16 / 9',
objectFit: 'cover',
objectPosition: `${ focalPoint.x * 100 }% ${ focalPoint.y * 100 }%`,
};
return (
<>
<FocalPointPicker
url={ url }
value={ focalPoint }
onDragStart={ setFocalPoint }
onDrag={ setFocalPoint }
onChange={ setFocalPoint }
/>
<img src={ url } alt="" style={ style } />
</>
);
};
属性
url
- 类型:
Text - 必需:是
要显示的图像或视频的 URL
autoPlay
- 类型:
Boolean - 必需:否
- 默认值:
true
自动播放 HTML5 视频。这仅适用于视频源(url)。
value
- 类型:
Object - 必需:是
焦点位置。应为一个包含 x 和 y 参数的对象。
onChange
- 类型:
Function - 必需:是
当焦点位置更改时调用的回调函数。
onDrag
- 类型:
Function - 必需:否
在拖拽操作期间重复调用的回调函数。
onDragEnd
- 类型:
Function - 必需:否
在拖拽操作结束时调用的回调函数。
onDragStart
- 类型:
Function - 必需:否
在拖拽操作开始时调用的回调函数。
resolvePoint
- 类型:
Function - 必需:否
在内部更新 value 状态之前调用的函数。它接收即将更新的值,并可能返回修改后的值。