使用JavaScript / jQuery应用位置绝对样式
Apply position absolute style using JavaScript / jQuery
我正在创建一个导航向右对齐的网站。
最后一个下拉菜单项位于父菜单项的绝对左侧,从页面上运行。
我正在尝试为下面的菜单创建一个解决方案。
jsfiddle -
http://jsfiddle.net/ashconnolly/6gjVr/
我不能硬编码pos左-xx样式,因为最后一个菜单项的宽度会有所不同(由于它里面的文本),因此我使用js。我几乎破解了它,但我只需要在悬停上应用一个变量作为绝对左边的位置样式。也许有一个更好的纯css解决方案,但我找不到。
任何帮助都是感激的!: D
编辑:更新的解释
你已经计算了上一个菜单的左侧,为什么不使用?
$(document).ready(function () {
var menuitemwidth = document.getElementById("last-menu-item").offsetWidth;
var menuitemdropdownwidth = document.getElementById("last-menu-item-drop-down").offsetWidth;
//alert(menuitemwidth);
var leftval = menuitemdropdownwidth - menuitemwidth;
//alert(leftval);
$("#last-menu-item").mouseenter(function(){
$("#last-menu-item-drop-down").css({'position':'absolute','left':'-'+leftval+'px','display':'block'});
});
$("#last-menu-item").mouseleave(function(){
$("#last-menu-item-drop-down").css({'display':'none'});
});
});
这里的检查
您可能已经知道,使用框架"打印"javascript值是不好的做法。它很快就会变得不可维护。
但是您可以将(元素)逻辑从(元素)表示中分离出来,即通过在html中设置data-attribute
在模板中打印/格式化html元素:
<ul id="last-menu-item-drop-down" data-pos="left" data-val="-133px">
然后把你的javascript改成:
// cache last element, no need to jquery search on every hover
var last_elem = $("#last-menu-item-drop-down");
// set position and alignment
last_elem.css('position','absolute').css(last_elem.data("pos"), last_elem.data("val"));
// set dropdown meny visibility to hidden (do it by css)
last_elem.hide()
// show/hide
// ...
你也可以在javascript中做偏移计算,只在模板中指定位置
小提琴在:http://jsfiddle.net/cYsp6/7/
我不能用css
$("#last-menu-item").mouseenter(function(){
var a=-(parseInt($("#last-menu-item-drop-down").css('width'))-parseInt($("#last-menu-item").css('width')));
$("#last-menu-item-drop-down").css('position','absolute').css('left',a);
$("#last-menu-item-drop-down").show();
});
$("#last-menu-item").mouseleave(function(){
$("#last-menu-item-drop-down").hide();
});
更新小提琴:
小提琴
相关文章:
- jQuery位置选择器输入样式背景和焦点
- GWT:如何从当前光标位置或所选文本中获取css样式的属性
- 后台位置的计算样式在Chrome中返回0%0%
- 使用CSS样式表更改在Javascript中添加的图像的位置
- 内联 JavaScript 从被 CSS 样式覆盖的负位置过渡
- 根据数据库值进行 AngularJS 样式位置
- “样式”代码在 MVC 模式中的位置
- 基于其位置的可拖动 DIV 样式
- 获取当前光标位置周围的单词样式
- 通过 jquery 将样式属性设置为“位置:无”
- 铬中的 CKEDITOR 在光标位置添加“?”标记,同时应用任何样式(粗体/斜体)而不选择
- 根据图像位置目录附加 CSS 样式
- 将数组传递给具有地理位置和样式的 Openlayers 3
- 根据页面上的滚动位置进行多种样式更改
- 为什么这种CSS样式会干扰HTML5的拖放?(位置:绝对;左:-10000px)
- 如何找到在Chrome开发工具中添加样式属性的位置
- 当位置样式为绝对时,滚动上的文本框定位问题
- 使用if语句激活锚位置的样式
- Javascript将position属性更改为固定位置属性的每个样式的静态
- Document.write()加载后的样式位置