javascript覆盖在自定义html元素上
javascript overlay on a custom html element
我正在尝试制作一个简单的Overlay模块,使我能够在自定义DOM元素上进行覆盖。问题是覆盖div的css指定了position:absolute。但是应该在其上应用覆盖的元素可能具有位置:静态,在这种情况下,覆盖应用不正确。如何克服这个问题?我已经想出了这个主意,但我不确定它是否好。
//js
if ($(elem).css('position') == 'static') {
$(elem).css('position', 'relative');
}
$('<div></div>').prependTo(elem).addClass('overlay').css('z-index', 100);
// css
div.overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #000;
opacity: 0.75;
filter: alpha(opacity=75);
}
托马斯·安徒生作品的建议。一个轻微的缺点是复杂度稍高,并且覆盖的位置没有固定到元素的位置。另一种方法可能是这样做:
div.overlay {
position: absolute;
background: #000;
opacity: 0.75;
filter: alpha(opacity=75);
}
var width = $(elem).width();
var height = $(elem).height();
$('<div></div>')
.width(width)
.height(height)
.prependTo(elem)
.addClass('overlay')
.css('z-index', 100)
在这里,我设置位置:绝对,而不指定顶部/左侧,这将导致覆盖层从流中取出,同时保持其偏移。我想这是不常见的用法,但我相信我可以信赖。
我提出的最初的解决方案是一个真正的黑客攻击,已经给我带来了一些问题。
相关文章:
- 我应该怎么做才能避免在网页上移动元素(html、css、jQuery)
- 更改元素HTML,但忽略最后一个子项
- 增加在选择元素HTML中搜索的时间
- Jquery无法获取元素html
- 从所选元素 html 上方的元素获取属性值
- 在 JS 的单选按钮元素 (HTML) 中使用 title 属性
- 如何在页面上播放每个音频元素(HTML,JQuery,Javascript)
- 我需要一种新的方法来检测元素 HTML 是否有更改
- 获取父元素 html 以及子内容
- AngularJS指令:如何在ng-repeat中动态更改元素html
- html 属性中的引号被标记为 ”来自元素.html()的结果
- 在指令's链接中替换angular元素html
- 如果元素有子元素html元素
- 如何下推表格中的元素- HTML
- 如何在纯javascript中使用变量插入数组值,如元素HTML
- jQuery textilate .js -如何“重置”元素HTML并重新启动动画
- 将元素HTML附加到新附加的textarea中
- 在添加类的情况下,CSS 3的过渡是否不能与模板元素(HTML 5)一起工作?
- jQuery没有更新DOM元素HTML
- 在jQuery中更快地替换元素HTML