根据状态更改jQuery自动完成项的背景颜色(使用CSS)

时间:2013-02-21 00:57:32

标签: jquery css background jquery-autocomplete

目标是创建一个JQuery自动完成元素,当它们悬停在上面或通过键盘聚焦时,其列表项具有蓝色背景。 Facebook搜索框很好地解决了这个问题。

每个<li>元素都包含<a>中包含的自定义HTML。这些<a>标记中的每一个都属于类sbiAnchor。使用以下CSS可以成功完成悬停时生成蓝色背景:

.ui-autocomplete a.ui-corner-all.sbiAnchor:hover{
    background: blue;
}

但是当用户按下/关闭自动完成列表时,如何应用相同的蓝色背景。将CSS代码更改为以下代码不起作用:

.ui-autocomplete a.ui-corner-all.sbiAnchor:hover, .ui-autocomplete .ui-state-focus a.ui-corner-all.sbiAnchor{
    background: blue;
}

这里的正确方法是什么?请记住,此蓝色背景效果应仅适用于我页面上的一个特定自动填充(其中一些存在)。这就是我使用sbiAnchor将其项目与其他自动完成元素区分开来的原因。其他自动复合应保留其默认行为,因此CSS选择器不应过宽。

10 个答案:

答案 0 :(得分:23)

这项工作非常简单

body .ui-autocomplete {
  /* font-family to all */
}

body .ui-autocomplete .ui-menu-item .ui-corner-all {
   /* all <a> */
}

body .ui-autocomplete .ui-menu-item .ui-state-focus {
   /* selected <a> */
}

答案 1 :(得分:11)

悬停的css成为这个css类的形式 enter image description here

你可以覆盖它。 例如:

.ui-state-focus {
background: none !important;
background-color: blue !important;
border: none !important;}

答案 2 :(得分:7)

这改变了我的悬停颜色。

scrapy crawl dmoz>test.txt

答案 3 :(得分:6)

我改变了颜色:

.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
}

答案 4 :(得分:1)

输入字段而不是锚标记可以保持焦点。这应该有用。

.ui-autocomplete-input:focus, .ui-autocomplete a.ui-corner-all.sbiAnchor:hover {
    background: blue;
}

答案 5 :(得分:1)

我使用了以上答案,并做了一些调整以适合我的情况(将样式设置为JQuery自动完成项)。希望这对某人有帮助。

.ui-menu-item .ui-menu-item-wrapper.ui-state-active {
    background: #6693bc !important;
    font-weight: bold !important;
    color: #ffffff !important;
} 

答案 6 :(得分:0)

花了一段时间来搞清楚,但正确的CSS代码是:

.ui-menu .ui-menu-item a.sbiAnchor.ui-state-hover{
    background: blue;
}

这可以一石二鸟,通过上/下击键为悬停选择提供蓝色背景。 jQuery自动完成元素显然将上/下键击视为“悬停”操作,而不是选择或焦点。

答案 7 :(得分:0)

这么古老的话题,但上面的解决方案对我没用。如果我能够直接前进,我会更快找到解决方案:

在自定义样式表中覆盖以下样式的jquery-ui.css

.ui-autocomplete {
            border-radius: 0.25rem;
            background-color: #eceff1;
            padding: 0 0.6rem;
            font-family: 'ptmono';
        .ui-menu-item {
            border: 1px solid #eceff1;
            border-radius: 0.25rem;
            .ui-state-active,
    .ui-widget-content .ui-state-active,
    .ui-widget-header .ui-state-active,
    a.ui-button:active,
    .ui-button:active,
    .ui-button.ui-state-active:hover {
            background-color: #eceff1;
            border-color: #eceff1;
            color: #0d47a1;
            }
        }
    }

而不是background:none!important,您可以在.ui-menu-item和活动类中设置背景。另外,不要写border:none!important,你在两个类中用背景颜色覆盖边框颜色,防止高度变化和摆动效果。

答案 8 :(得分:0)

使用.ui-menu-itemui-menu-item-wrapper.ui-state-active

.ui-menu-item .ui-menu-item-wrapper.ui-state-active {
  background: #f5f5f5 !important; 
  border: solid 1px transparent; 
}

答案 9 :(得分:-2)

这是正确的答案:只需将颜色改为“灰色”

.ui-state-active,
.ui-widget-content .ui-state-active,
.ui-widget-header .ui-state-active,
a.ui-button:active,
.ui-button:active,
.ui-button.ui-state-active:hover {
	border: none!important;
	background: grey;
	font-weight: normal;
	color: #ffffff;
}