- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试将水平下拉菜单转换为垂直下拉菜单。问题是我让它看起来像一个下拉菜单,但第一个下的 li 不会“激活”,我什至不能对它们施加悬停效果。我的 CSS 如下
不要忘记它是一个 java 下拉菜单,所以我现在添加了 java 代码
我花了几个小时解决这个问题,但似乎找不到解决方案。任何见解将不胜感激。
#menu {
position:absolute;
display:block;
padding: 0 5px 0 5px;
width: 225px;
height:400px;
font-size: 15px;
font-size: 15px;
font-style: normal;
font-weight: lighter;
margin:0px;
padding-right:10px;
text-align: right;
text-decoration: none;
font-family: "Palatino Linotype","Book Antiqua",Palatino,serif;
}
#menu {
text-transform: uppercase;
letter-spacing: -1px;
padding:0px;
color: #333333;
}
#menu a {
color: #333333;
text-decoration: none;
}
#menu ul {
list-style: none;
}
#menu ul li {
position:relative;
display:block;
padding: 0 20px 0 20px;
display: inline-block;
width: 225px;
list-style: none outside none;
}
#menu ul li.first {
padding-left: 0;
}
#menu ul li.active {
position:relative;
display:block;
background: #346176 url(images/btn_bg.jpg) top left no-repeat;
}
#menu .arrow {
display: inline-block;
margin: 0 0 0 0.5em;
position: relative;
width: 0;
height: 0;
top: -3px;
border-bottom: 1px solid #E8D3A3;
}
Java代码
(function($) {
jQuery.fn.dropotron = function(options) {
var settings = jQuery.extend({
selectorParent: jQuery(this)
}, options);
return jQuery.dropotron(settings);
}
jQuery.dropotron = function(options) {
// Settings
var settings = jQuery.extend({
selectorParent: null, // The parent jQuery object
menuClass: 'dropotron', // Menu class (assigned to every UL)
expandMode: 'hover', // Expansion mode ("hover" or "click")
hoverDelay: 150, // Hover delay (in ms)
hideDelay: 250, // Hide delay (in ms; 0 disables)
openerClass: 'opener', // Opener class
openerActiveClass: 'active', // Active opener class
mode: 'slide', // Menu mode ("instant", "fade", "slide", "zoom")
speed: 'fast', // Menu speed ("fast", "slow", or ms)
easing: 'swing', // Easing mode ("swing", ???)
alignment: 'left', // Alignment ("left", "center", "right")
offsetX: 0, // Submenu offset X
offsetY: 0, // Submenu offset Y
baseZIndex: 1 // Base Z-Index
}, options);
// Variables
var _top = settings.selectorParent, _menus = _top.find('ul');
var _window = jQuery('html');
var isLocked = false, hoverTimeoutId = null, hideTimeoutId = null;
// Main
if (settings.hideDelay > 0)
{
_menus.add(_top.children('li').has('ul'))
.mousemove(function(e) {
window.clearTimeout(hideTimeoutId);
hideTimeoutId = null;
})
.mouseleave(function(e) {
if (hideTimeoutId == null)
hideTimeoutId = window.setTimeout(function() {
_top.trigger('doCollapseAll');
}, settings.hideDelay);
});
}
_top
.bind('doCollapseAll', function() {
_menus
.trigger('doCollapse');
});
_menus.each(function() {
var menu = jQuery(this), opener = menu.parent();
menu
.hide()
.addClass(settings.menuClass)
.css('position', 'absolute')
.bind('doExpand', function() {
if (menu.is(':visible'))
return false;
window.clearTimeout(hideTimeoutId);
_menus.each(function() {
var t = jQuery(this);
if (!jQuery.contains(t.get(0), opener.get(0)))
t.trigger('doCollapse');
});
var left, top, isTL = (menu.css('z-index') == 1), oo = opener.offset(), op = opener.position(), opp = opener.parent().position(), ow = opener.outerWidth(), mw = menu.outerWidth();
if (isTL)
{
top = oo.top + opener.outerHeight();
switch (settings.alignment)
{
case 'right':
left = oo.left - mw + ow;
if (left < 0)
left = oo.left;
break;
case 'center':
left = oo.left - Math.floor((mw - ow) / 2);
if (left < 0)
left = oo.left;
else if (left + mw > _window.width())
left = oo.left - mw + ow;
break;
case 'left':
default:
left = oo.left;
if (left + mw > _window.width())
left = oo.left - mw + ow;
break;
}
}
else
{
// Non-static position fix
if (opener.css('position') == 'relative'
|| opener.css('position') == 'absolute')
{
top = settings.offsetY;
left = (-1 * op.left);
}
else
{
top = op.top + settings.offsetY;
left = 0;
}
switch (settings.alignment)
{
case 'right':
left += (-1 * opener.parent().outerWidth()) + settings.offsetX;
break;
case 'center':
case 'left':
default:
left += opener.parent().outerWidth() + settings.offsetX;
break;
}
}
menu
.css('left', left + 'px')
.css('top', top + 'px');
menu.css('opacity', '0.01').show();
// Kludge!
var tmp = false;
// Non-static position fix
if (opener.css('position') == 'relative'
|| opener.css('position') == 'absolute')
left = (-1 * op.left);
else
left = 0;
if (menu.offset().left < 0)
{
left += opener.parent().outerWidth() - settings.offsetX;
tmp = true;
}
else if (menu.offset().left + mw > _window.width())
{
left += (-1 * opener.parent().outerWidth()) - settings.offsetX;
tmp = true;
}
if (tmp)
menu.css('left', left + 'px');
menu.hide().css('opacity', '1');
switch (settings.mode)
{
case 'zoom':
isLocked = true;
opener.addClass(settings.openerActiveClass);
menu.animate({
width: 'toggle',
height: 'toggle'
}, settings.speed, settings.easing, function() {
isLocked = false;
});
break;
case 'slide':
isLocked = true;
opener.addClass(settings.openerActiveClass);
menu.animate({ height: 'toggle' }, settings.speed, settings.easing, function() {
isLocked = false;
});
break;
case 'fade':
isLocked = true;
if (isTL)
{
var tmp;
if (settings.speed == 'slow')
tmp = 80;
else if (settings.speed == 'fast')
tmp = 40;
else
tmp = Math.floor(settings.speed / 2);
opener.fadeTo(tmp, 0.01, function() {
opener.addClass(settings.openerActiveClass);
opener.fadeTo(settings.speed, 1);
menu.fadeIn(settings.speed, function() {
isLocked = false;
});
});
}
else
{
opener.addClass(settings.openerActiveClass);
opener.fadeTo(settings.speed, 1);
menu.fadeIn(settings.speed, function() {
isLocked = false;
});
}
break;
case 'instant':
default:
opener.addClass(settings.openerActiveClass);
menu.show();
break;
}
return false;
})
.bind('doCollapse', function() {
if (!menu.is(':visible'))
return false;
menu.hide();
opener.removeClass(settings.openerActiveClass);
menu.find('.' + settings.openerActiveClass).removeClass(settings.openerActiveClass);
menu.find('ul').hide();
return false;
})
.bind('doToggle', function(e) {
if (menu.is(':visible'))
menu.trigger('doCollapse');
else
menu.trigger('doExpand');
return false;
});
opener
.addClass('opener')
.css('cursor', 'pointer')
.click(function(e) {
if (isLocked)
return;
e.stopPropagation();
menu.trigger('doToggle');
});
if (settings.expandMode == 'hover')
opener.hover(function(e) {
if (isLocked)
return;
hoverTimeoutId = window.setTimeout(function() {
menu.trigger('doExpand');
}, settings.hoverDelay);
},
function (e) {
window.clearTimeout(hoverTimeoutId);
}
);
});
_menus.find('a')
.css('display', 'block')
.click(function(e) {
if (isLocked)
return;
_top.trigger('doCollapseAll');
e.stopPropagation();
});
_top.find('li')
.css('white-space', 'break-word')
.each(function() {
var t = jQuery(this), a = t.children('a'), ul = t.children('ul');
if (a.length > 0 && ul.length == 0)
t.click(function(e) {
if (isLocked)
return;
_top.trigger('doCollapseAll');
e.stopPropagation();
window.location.href = a.attr('href');
});
});
_top.children('li').each(function() {
var opener = jQuery(this), menu = opener.children('ul');
if (menu.length > 0)
{
menu
.detach()
.appendTo('body');
for(var z = settings.baseZIndex, i = 1, y = menu; y.length > 0; i++)
{
y.css('z-index', z++);
y = y.find('> li > ul');
}
}
});
由于某种原因,当有二级菜单项要显示时,它工作得非常好。谢天谢地,我所有的菜单项都有第二层,我不知道为什么会这样,但现在可以了。
最佳答案
float 左侧的列表项应该可以解决这个问题。这将水平对齐列表项。如果您发布 jsfiddle,我们可以进行一些确认。
关于java - 将水平下拉转换为垂直下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892389/
我试图让我的 jQuery 脚本从单击的链接中提取 url,然后将其插入到我的视频标签中。有什么建议吗? 我试过拼接我从 .html() 中得到的内容,但引号总是搞砸了。
我遇到了 docker 的问题。 场景是这样的:我们使用Codebuild+Packer+docker创建AMI,用于deploy。在这一步中,我们从 Artifactory 中提取图像,并且除了提取
我目前正在学习 RxJS。 在文档中,我找到了这个数组。 我尝试在谷歌上搜索“pull and push javascript”,但我什至不知道如何调用这些实体/概念。我不明白那是什么意思?我假设 S
Title 在小屏幕上,我首先需要标题,然后是文本字段,但在中等以上的屏幕上,我需要相反的方式 - 我已经尝试过推和拉,但它们无法工作 - 有什么想法吗? 最佳答案 根据 Swa
zmq 的某些部分未以可预测的方式运行。 我正在使用 VS2013 和 zmq 3.2.4。为了不在我的 pubsub 框架中“丢失”消息 [旁白:我认为这是一个设计缺陷。我应该能够首先启动我的订阅者
我正在编写一个使用嵌套 Bootstrap 列的页面。我正在使用推/拉让列在移动设备上切换位置,而且效果很好。但是,在桌面上我遇到了一些奇怪的间距问题。嵌套列偏移到父列的右侧。 我设置了一个 fidd
在拉取一些 docker 镜像(但不是全部)时出现此错误: failed to register layer: Error processing tar file(exit status 1): op
我创建了一个 Kubernetes 集群,并为每个节点安装了 docker。 当我尝试使用 docker push local_registry_addr:port/image_id 将图像拉取或推送
没有明确地推/拉单个书签,书签何时从 repo 复制/更新到 repo? 在我对两个本地存储库的测试中,我无法推断出一致的行为。有时从 A 到 B 或 B 到 A 的推/拉会复制/更新书签,有时不会。
在 Bootstrap 3 文档中,他们给出了以下使用 push 和 pull 类更改列顺序 (http://getbootstrap.com/css/#grid-column-ordering) 的
从这个问题开始Three column Bootstrap layout with left sidebar at bottom我了解了 Bootstrap 列推拉。 下面的代码片段几乎可以得到我想要
许多 Repo 函数的签名包括 **kwargs,其中文档说,您可以将参数传递给底层包装的 git 命令。但是,*args 没有位置。为了传递类似标志的参数,如 --all。我原以为它们会像 my_r
如果您将大文件推送/拉到设备上,这真的很烦人,现在无法知道它有多远。是否可以运行 adb push 或 adb pull 并使用“bar”实用程序获取进度条? 这里的主要问题是我认为 adb 需要两个
当我尝试使用 Gitkrakent 向/从 Heroku 推/拉时,GitKraken 告诉我: "Please log in to continue" 请求的“用户/登录”是什么? (我个人 Her
我在 docker 容器中有一个 Jenkins 2.150.1。要安装这个 Jenkins,我只需使用 jenkinsci/blueocean:1.9.0图片。 我创建了一个管道,然后尝试使用我的
我想使用 Jenkins 做下一步: 1- docker pull 2- docker run -i -t 我已经在jenkins上安装了docker插件,但是这可行吗? docker plugi
如果我正在处理一些我不想提交的文件,我只需保存它们。然后我有其他文件想要推送到服务器,但是如果其他人对存储库进行了更改,并且我将它们拉下来,它会要求我 merge 或 rebase ..但是这些选项中
无论出于何种原因,我在 FB 上共享链接时尝试使用的图像都无法加载。给出的确切错误是: 提供了og:image,无法下载。发生这种情况的原因有多种,例如您的服务器使用不受支持的内容编码。爬虫接受 de
今天我买了三星 Galaxy Note 3,它配备了 Android 4.3。由于它太新了,我找不到根植我设备的方法,所以我尝试使用 adb 连接……我失败了。 所以,我用了这个 D:\android
我尝试通过 airflow cli test 命令测试 2 个任务` 第一个任务运行,自动将最后一个控制台推送到 xcom,我按预期在 Airflow GUI 中看到了值 some value 当我通
我是一名优秀的程序员,十分优秀!