Element.State 元素状态类
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变换。