gpt4 book ai didi

java - 将水平下拉转换为垂直下拉

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:30 24 4
gpt4 key购买 nike

我正在尝试将水平下拉菜单转换为垂直下拉菜单。问题是我让它看起来像一个下拉菜单,但第一个下的 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');
}
}
});

this is how the menu looks. the top one (farmers) works but none of the rest do


已解决

由于某种原因,当有二级菜单项要显示时,它工作得非常好。谢天谢地,我所有的菜单项都有第二层,我不知道为什么会这样,但现在可以了。

最佳答案

float 左侧的列表项应该可以解决这个问题。这将水平对齐列表项。如果您发布 jsfiddle,我们可以进行一些确认。

关于java - 将水平下拉转换为垂直下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20892389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com