设置css right属性时出错
Trouble setting css right property
我使用JQuery 1.10.2制作了一个简单的工具提示生成器,用于读取元素的title
值。
它工作正常,除了元素在屏幕右侧之外,有时工具提示会浮动在页面边缘。
如果元素位于页面右侧附近,我希望将其定位在靠近元素右边缘的某个位置。
我的代码在下面,也是一个JSFiddle。感谢所有的投入!
function BuildTipsV3() {
var tt = $("#ttfloat");
$("[title]").on({
mouseenter: function() {
// set tooltip
var o = $(this).offset();
var y = o.top;
var x = o.left;
var tooltip = $(this).attr('title') || $(this).data('title');
$(this).attr('title', '');
$(this).data('title', tooltip);
tooltip = tooltip.replace(/('r'n|'n|'r)/gm, "<br/>");
tt.html(tooltip);
// position tooltip and show
var ttRightSide = x + tt.width();
if (ttRightSide < $(window).width()) {
tt.css({ top: (y + 15), left: (x + 5) });
} else {
tt.css({ top: y, right: 0 }); // <-- problem (right:0) doesn't work
}
tt.show();
},
mouseleave: function () {
$("#ttfloat").hide();
$(this).attr('title', $(this).data('title')); // reset for accessibility
}
});
}
http://jsfiddle.net/HSfHD/2/
你离得太近了。
小提琴
您只需要在不使用left
和right
样式时重置它们:
if (ttRightSide < $(window).width()) {
tt.css({
top: (y + 15),
left: (x + 5),
right:'auto'
});
} else {
tt.css({
top: y + 15,
right: 0,
left:'auto'
});
}
如果您将鼠标悬停在left元素上,它会设置CSS left
,但当您将鼠标停留在right元件上时,您只设置了CSS right
属性,因此最终样式将同时设置left
和right
。
您需要首先将left
重置回其默认值(其他属性可能也是如此),例如请参阅演示,我在其中添加了以下代码:
if (ttRightSide < $(window).width()) {
tt.css({
top: (y + 15),
right: 'auto',
left: (x + 5)
});
} else {
tt.css({
top: y + 15,
right: 0,
left: 'auto'
});
}
只计算左边。
tt.css({
top: y+20,
left: $(window).width() - tt.width() - 20
});
相关文章:
- AngularJS指令出错-无法读取属性'编译'的未定义
- 解析 /page.xhtml 时出错:跟踪错误[行: 42] 与元素类型“id”关联的属性“{1}”应使用左引号
- 为JavaScript类属性赋值时出错
- 访问console.log中的数据属性时出错
- 在Spring.message属性中添加新行时出错
- Javascript:“;无法读取属性'addEventListener'“为空”;尝试删除子项时出错
- '无法设置未定义'的属性;应用绑定时出错
- 使用Internet Explorer进行react redux trySubscribe时出错(无法获取未定义的属性“
- 在 Javascript 中使用警报时出错(对象的属性“alert”不是函数)
- css 可见性属性和 javascript setTimeout 方法出错
- 加载图表时出错 未捕获的类型错误:无法读取未定义的属性“到小写”
- 在网格视图中获取属性“行”时出错
- Metro Javascript.对项目进行分组时出错.ui.js firstItemIndexHint 属性
- 解析属性名称时出错
- Ember Data 1.0 加载路由时出错:类型错误:无法设置未定义的属性“类型键”
- 将 req.body 属性复制到猫鼬模型中时出错
- 尝试在火狐扩展中获取标题属性时出错
- JS:防止访问未定义对象的属性时出错
- 避免'无法读取未定义'的属性;映射数据时出错
- TYPO3 Neos:Apply content属性在JavaScript中运行时出错