文档手册

Element.State 元素状态类

2024-07-07 00:36:10

class Element.State

注意:Sciter特定-浏览器根本不提供此功能

状态类表示元素上的运行时标志和状态。

大多数情况下,Element.State反映的是状态,也就是所谓的CSS伪类(标志):

element.state.visited = true;

 将触发

element:visited {
 color: red;
}

 规则要适用。

properties:

  • link

  • hover

  • active

  • focus

  • ownsfocus

  • visited

  • current

  • checked

  • selected

  • disabled

  • readonly

  • expanded

  • collapsed

  • incomplete

  • invalid

  • animating

  • focusable

  • anchor

  • ownspopup

  • tabfocus

  • empty

  • busy

  • dragover

  • droptarget

  • moving

  • copying

  • dragsource

  • pressed

  • popup

  • ready

  • windowroot - readonly,true表示这是窗口的根文档;

  • reactive - element.state.reactive = false; 将阻止Reactor协调元素的内容

  • value - any value -附加到元素的本机行为的运行时值。输入元素的实际值。

  • occluded:integer -只读,报告元素的可见性状态,如果是 0 ,则元素完全可见,否则这些标志的组合:

    • 0x1 -剪切掉边框框的左侧(不可见)。

    • 0x2 -顶侧被夹住。

    • 0x4 -右侧被夹住。

    • 0x8 -底部被夹住。 0xf 值表示元素被完全剪切掉-不可见。

  • flow - readonly,string,报告元素当前使用的布局管理器。

    可以是以下之一:“default”、“vertical”、“horizontal”、“horizontal-wrap”、“vertical-wrap”、“grid”、“table”、“table-fixed”、“table-row”、“table-body”、“columns”、“stack”、“text”、“null”、“image”、“svg”、“svg-child”或“"";

  • visible - readonly,boolean,true如果它是并且它的任何容器可见-不是 display:none 也不是 visibility:none | hidden | collapsed

  • animationType - readonly,string,报告元素上执行的当前动画类型:

    • undefined -当前没有动画执行;

    • "blend" -由 element.replaceContent() 启动的混合效果动画运行;

    • "transition" - CSS transition正在运行;

    • "animation" - CSS动画正在运行;

    • "image" -图像正在动画化(GIF,aPNG,WebP);

Element.State的某些属性可能会触发CSS伪类规则:

section.state.expanded = true;

就会触发第二条规则

section > div.content { visibility:none; /* a.k.a. display:none */ }
section:expanded > div.content { visibility:visible; }

 方法:

contentWidths()

element.state.contentWidths() : [minWidth,maxWidth]

报告元素内容的当前最小和最大宽度。

contentHeight()

element.state.contentHeight(width) : number

使用给定的宽度计算元素内容的高度。

capture()

element.state.capture(false | true |"strict" )

设置/删除鼠标捕获,其中:

  • false -如果元素现在拥有捕获,则删除捕获;

  • true -通过元素及其子元素捕获鼠标事件。

  • "strict" -鼠标事件将只传递给元素。

box()

element.state.box(what,boxOf[,relativeTo[, asPpx: bool ]])

返回元素的各种度量。

什么决定了返回值的结构,是以下之一:



  • “position”- [x,y],矩形的位置;

  • “size”- [width,height];

  • “左”、“右”、“上”、“下”--单数;

  • "width", "height" - single number;


  • “inner”-元素的内部盒子,根据CSS盒子模型;

  • “border”-元素的边框;

  • “padding”-元素的填充框;

  • “margin”-元素的边距框;

  • “client”-元素的client box-元素的可滚动区域,通常是填充框减去滚动条;

  • “content”-元素的内容大纲。对于可滚动元素,为可滚动内容的大小;

  • "caret" - caret postion (if any);

  • “icon”-元素的前景图像的位置;

relativeTo定义返回框的x/y值的偏移量,其中之一:

  • element - coordinates are relative to the element;

  • "screen" - relative to screen - absolute coordinates of the element on screen (desktop);

  • "window" - relative to client area of the window;

  • “document”-相对于根元素- document;

  • “parent”-相对于元素的DOM父级;

  • “container”-相对于布局容器-对于定位的艾德元素,这告诉相对于最近定位的容器的位置;

  • “self”-默认,相对于元素本身,“inner”x/y在这种情况下为0;

asPpx如果已定义且为true,则告诉函数返回以屏幕像素为单位的坐标。默认情况下,该函数返回逻辑CSS像素,即DIP-逻辑单位,1/96英寸。

pixelsIn()

element.state.pixelsIn(length:string [,"horizontal" | "vertical"] ): number | undefined

将长度字符串解析为CSS长度单位或百分比,然后将其转换为CSS像素。Perecentage值是根据元素尺寸(内部框)计算的。

  示例:

let a = el.state.pixelsIn("1.2em");
let b = el.state.pixelsIn("75%","vertical"); // 75% of current height
let c = el.state.pixelsIn("12pt"); // pixels in 12 points

mapLocalToWindow()

element.state.mapLocalToWindow(xLocal,yLocal ): [xWindow,yWindow]

将局部元素坐标映射到窗口坐标。该方法考虑了元素及其父元素可能具有的仿射2D变换。

mapWindowToLocal()

element.state.mapWindowToLocal(xWindow,yWindow): [xLocal,yLocal]

将窗口上的点映射到特定元素的局部坐标。该方法考虑了元素及其父元素可能具有的仿射2D变换。