优化(几乎最小化)jqueryui菜单的宽度
我有一个Jqueryui菜单 ,它是在运行时生成的AJAX。 它生成的 HTML是
第一个
是一个行分隔符。 其他列表项包含单个单词(类似C的标识符),例如
….字体不是等宽字体。 菜单最终应该用于“内部”(实际上“结束”)一些自动完成目的。
当然,Javascript正在做类似的事情
var mymenu=$("#menu_id"); mymenu.menu({ select: function(ev,ui) { console.log("menu selected ev=", ev, " ui=", ui); } });
但我不知道如何计算该菜单的近乎最小的宽度。 目前,该菜单跨越其容器的整个宽度,因此几乎与网页一样宽。 我尝试过几件事,比如:
var minwidth = 40; /// dont work, the el has same width as body mymenu.children("li").each(function(ix,el) { console.log("ix=", ix, " el=", el, " .firstChild=", el.firstChild); var elw = el.firstChild.clientWidth; console.log("ix=", ix, " elw=", elw); if (minwidth<elw) minwidth=elw; });
血淋淋的细节
与我之前的问题相同的背景:Firefox 38或42,Jquery 2.2.0,Jquery-Ui 1.11.4,Linux / Debian / Sid / x86-64,用于我的免费软件GPL alpha阶段MELT监视器 ; 我在谈论提交e89f3f807ec ..如果重要的话。 如果你足够勇敢地构建并测试它,那就跑吧
./monimelt -Drun,web -W localhost.localdomain:8086/ -J 3
然后浏览http://localhost.localdomain:8086 / nanoedit.html并在右侧输入Command:三个字母,然后同时 按下Ctrl Space ; 应该出现一个完成菜单,但它太宽了!
(在图像中,菜单是灰色的,在靠近底部的send command
按钮上方;在我的webroot/nanoedit.js
文件中 ,它在第215行之后的函数mom_cmdkeypress
构建; menu_id
HTML5 id实际上是menu_id
,我的Javascript变量是menuel
not mymenu
)
简化的Jsfiddle(MVCE)
这个https://jsfiddle.net/bstarynk/2k464q18/ jsfiddle显示与HTML相同的问题
my menu
-
和javascript:
var mymenu; $(document).ready(function() { mymenu = $("#menu_id"); var mywidth = 40; mymenu.children("li").each(function(ix, el) { console.log("menu-children ix=", ix, " el=", el); var elw = $(el).width(); console.log("menu-children ix=",ix, " elw=", elw); if (mywidth<elw) mywidth = elw; }); $("#width_id").html("mywidth="+mywidth.toFixed(0)); mymenu.menu({ select: function(ev, ui) { console.log("menu-select ev=", ev, " ui=", ui); } }) })
和标准https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css CSS; 在我的浏览器上显示mywidth=523
,这显然是错误的。 另外,替换var elw = $(el).width();
在JsFiddle中使用var elw = el.clientWidth;
不要改变任何东西。
更简单的问题
也许我只是想知道什么是CSS3设置,使
- 元素具有垂直对齐的小
元素和最小宽度以适应最宽的
,但我无法想象….所以我要求CSS3做一个瘦的问题。