安装与调用
如果只是单纯的静态展示,可以直接引入:
<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