data-content 的内容移动设备不显示

移动设备在触摸元素时默认会弹出一个选中框,所以 `data-content` 内容在移动设备上默认无法显示。

有两种解决方法:

  1. 使用 CSS `::after` 伪元素替代 `data-content` 显示元素:

HTML 代码:

<div class="hover-div" data-title="我是标题">我是需要悬停的元素</div>

CSS 代码:

.hover-div {
  position: relative;
}
.hover-div::after {
  position: absolute;
  top: 100%;
  left: 0;
  content: attr(data-title);
  display: none;
}
.hover-div:hover::after {
  display: block;
}
  1. 使用 JavaScript 通过 `touchstart` 和 `touchend` 事件控制 `data-content` 元素的显示与隐藏:

HTML 代码:

<div class="hover-div" data-title="我是标题" data-content="我是内容">我是需要悬停的元素</div>

JavaScript 代码:

var hoverDivs = document.querySelectorAll('.hover-div');
hoverDivs.forEach(function(hoverDiv) {
  var content = hoverDiv.getAttribute('data-content');
  hoverDiv.addEventListener('mouseenter', function() {
    hoverDiv.setAttribute('data-content', '');
    hoverDiv.setAttribute('title', content);
    setTimeout(function() {
      hoverDiv.setAttribute('data-content', content);
    }, 10);
  });
  hoverDiv.addEventListener('mouseleave', function() {
    hoverDiv.setAttribute('data-content', '');
    hoverDiv.setAttribute('title', '');
  });
  hoverDiv.addEventListener('touchstart', function() {
    hoverDiv.setAttribute('data-content', content);
  });
  hoverDiv.addEventListener('touchend', function(event) {
    hoverDiv.setAttribute('data-content', '');
    hoverDiv.setAttribute('title', '');
    event.preventDefault();
  });
});

上述代码中,我们首先使用 `document.querySelectorAll()` 方法获取所有需要悬停的元素,在 PC 端上监听 `mouseenter`、 `mouseleave` 事件,在移动端上监听 `touchstart`、`touchend` 事件,通过设置 `data-content` 和 `title` 属性控制元素的显示和隐藏。需要注意的是,为了避免在移动设备上出现选中框,我们需要把 `data-content`设置为空字符串,然后通过 `setTimeout()` 函数在稍等一段时间后再重新设置为需要显示的内容。此外,我们需要通过 `event.preventDefault()` 方法防止触发点击事件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
el-dialog 消息框可以通过修改 CSS 的方式来进行移动。具体方法如下: 1. 在 el-dialog 标签中添加一个 v-dialog-drag 属性,例如 v-dialog-drag="dialogDrag"。 2. 在 data 中添加一个 dialogDrag 对象,并设置属性 x 和 y 的初始值为 0,例如 dialogDrag: { x: 0, y: 0 }。 3. 在样式表中添加以下代码来实现拖拽效果: .el-dialog__wrapper.v-dialog-drag .el-dialog { margin: 0; } .el-dialog__wrapper.v-dialog-drag .el-dialog .el-dialog__header { cursor: move; } .el-dialog__wrapper.v-dialog-drag .el-dialog__body { position: relative; top: 0; left: 0; } .el-dialog__wrapper.v-dialog-drag .el-dialog__body::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; z-index: -1; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active ~ .el-dialog__body::before { opacity: 0.1; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover ~ .el-dialog__body::before { opacity: 0.05; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active { cursor: grabbing; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover { cursor: grab; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active ~ .el-dialog__body { transition: none; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover ~ .el-dialog__body { transition: none;} .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active { cursor: grabbing; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover { cursor: grab; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active ~ .el-dialog__body { transition: none; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover ~ .el-dialog__body { transition: none; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active { cursor: grabbing; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover { cursor: grab; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:active ~ .el-dialog__body { transition: none; } .el-dialog__wrapper.v-dialog-drag .el-dialog__header:hover ~ .el-dialog__body { transition: none; } 4. 在 el-dialog 标签中添加一个 @drag="handleDrag" 事件,例如 @drag="handleDrag"。 5. 在 methods 中添加一个 handleDrag 方法,用于计算 el-dialog 的位置,例如: handleDrag(e) { this.dialogDrag.x += e.dx; this.dialogDrag.y += e.dy; this.$nextTick(() => { this.$refs.dialog.style.transform = `translate(${this.dialogDrag.x}px, ${this.dialogDrag.y}px)`; }); } --相关问题--:

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值