安装与调用
如果只是单纯的静态展示,可以直接引入:
<link rel="stylesheet" href="https://qidian.gtimg.com/lulu/hope/ui/Overlay/index.css">
快捷语法和交互能力要想生效,还需要引入对应的组件 JS,如下所示:
<script type="module" src="https://qidian.gtimg.com/lulu/hope/ui/Overlay/index.js"></script>
或者:
<script type="module"> import 'https://qidian.gtimg.com/lulu/hope/ui/Overlay/index.js'; </script>
基本效果
在页面中引入下面这段 HTML,就可以有覆盖层效果。
<ui-overlay open></ui-overlay>
<button id="b0" type="primary" is="ui-button"
>载入 <overlay> 元素
</button>
b0.addEventListener('click', function () {
document.body.insertAdjacentHTML('beforeend', '<ui-overlay mode="remove" open></ui-overlay>');
});
覆盖层基本效果不依赖与 JS,但是,站在实际开发的角度,推荐引入对应的组件 JS,让 <ui-overlay>
元素变成真正的自定义元素,以支持各种行为和方法。
这些行为包括点击覆盖层会自动隐藏,如果希望点击覆盖层不会隐藏,则可以使用 mode
属性进行重置。
<ui-overlay mode="custom" open></ui-overlay>
然后开发人员自己对覆盖层通过 open
属性进行隐藏设置。
overlay.removeAttribute('open'); // 或者 overlay.open = false;
样式设置
改变透明度
覆盖层默认采用了 40% 透明度的黑色,如果希望改变透明度值,可以使用 opacity
属性进行设置。
<ui-overlay opacity=".7" open></ui-overlay>
改变覆盖颜色
可以使用 color
属性重置覆盖层的颜色,此时 opacity
属性会失效。
<ui-overlay color="#f00a" open></ui-overlay>
淡入淡出
设置 fade
属性可以让覆盖层有淡入淡出效果。
<ui-overlay fade></ui-overlay>
滚动锁定
设置 touch="none"
可以让触摸覆盖层的时候,背后的内容不会发生滚动。
<ui-overlay touch="none"></ui-overlay>
装载内容
<ui-overlay>
支持载入内容,默认水平垂直对齐。
<ui-overlay open> <!-- 这里显示嵌入内容 --> </ui-overlay>
<button id="b4" type="primary" is="ui-button">嵌入内容</button>
<ui-overlay id="lay">
<div class="wrap">
<ui-loading></ui-loading>
</div>
</ui-overlay>
.wrap {
width: 4rem; height: 4rem;
background-color: #fff;
display: grid;
place-items: center;
border-radius: var(--ui-radius);
}
b4.addEventListener('click', function () {
lay.open = true;
});
Overlay 语法
可以使用下面的语法直接创建 <ui-overlay>
元素到页面中。
let overlay = new Overlay(options);
new Overlay({
opacity: '80%'
});
其中 options
是可选参数,支持的参数值见下表。
参数名 | 默认值 | 释义 |
---|---|---|
open | true | 覆盖层是否显示 |
opacity | 0.4 | 黑色半透明度值,支持百分比值,例如 '80%' |
color | rgba(0,0,0,opacity) | 覆盖层颜色。 |
fade | true | 显示隐藏的时候是否使用动画效果 |
mode | 'remove' | 覆盖层模式,支持 'hide'、'remove'、'custom' 等值。
如果值是 'hide',则点击浮层会隐藏当前浮层元素; 如果值是 'remove',则点击浮层会移除当前浮层元素; 如果值是 'custom',则点击浮层没有任何变化; |
touch | 'none' | 是否禁止滚动,属性值为 'none' 的时候可以锁定滚动 |
可以看到,Overlay 实例方法默认开启的动画支持,以及元素隐藏采用的是移除节点实现的,这个是和默认的 <ui-overlay>
元素元素是有区别的。
属性和方法
<ui-overlay>
元素支持的属性和上面的 new Overlay(options)
中的可选参数是一致的,区别在于部分属性的默认值。
支持的 HTML 属性
参数名 | 默认值 | 释义 |
---|---|---|
open | false | 覆盖层是否显示 |
opacity | 0.4 | 黑色半透明度值,支持百分比值,例如 '80%' |
color | rgba(0,0,0,opacity) | 覆盖层颜色,支持任意合法颜色值,包括 CSS 变量 |
fade | false | 显示隐藏的时候是否使用动画效果 |
mode | 'hide' | 同 Overlay 方法中的 mode 参数 |
touch | - | 是否禁止滚动,属性值为 'none' 的时候可以锁定滚动,默认不锁定 |
<ui-overlay opacity=".7" mode="remove" touch="none" fade open></ui-overlay>
支持的方法
支持 show()
、hide()
和 remove()
三个方法。
方法名 | 释义 |
---|---|
show() | 显示覆盖层,即使覆盖层从文档移除,只要在内存中,依然可以显示 |
hide() | 隐藏浮层元素,浮层元素依然在文档流之中 |
remove() | 移除浮层元素,浮层元素从文档中移除 |
本页贡献者:
zhangxinxu