更改折叠下拉列表中文本的颜色

时间:2013-12-15 22:10:51

标签: twitter-bootstrap drop-down-menu twitter-bootstrap-3 navbar

我可以在哪里更改折叠下拉列表中的文字颜色?由于某些原因,我的下拉菜单中折叠后的背景和文字颜色不同。

如果没有折叠,我可以用以下内容进行更改:

.navbar-inverse .navbar-nav > li > a {
  color: #000;
}

但是当崩溃时它不会改变。我错过了一些简单的东西吗?

2 个答案:

答案 0 :(得分:1)

当下拉列表打开时,它会将open类添加到父下拉列表元素中。您可以使用它来选择性地设置已关闭/打开的下拉列表。

例如,请使用以下 HTML

<div class="dropdown">

    <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle">
        Action <span class="caret"></span>
    </button>

    <ul class="dropdown-menu">
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li class="divider"></li>
        <li><a href="#">Separated link</a></li>
    </ul>

</div>

我们可以在下拉列表中添加颜色属性,然后使用以下 CSS 打开时更改颜色属性:*(如果按钮,则可能必须使用!important风格

.dropdown > button {
    color: yellow;
}
.dropdown.open > button {
    color: orange;
}

Working Demo in JsFiddle

这将是这样的:

screenshot

如果您只想在关闭时更改样式,可以使用:not伪类选择器,如下所示:

.dropdown:not(.open) > button {}

答案 1 :(得分:0)

它似乎是引导程序中的一个错误,它使用导航栏默认值覆盖折叠的导航颜色(请参阅bootstraps navbar.less第468行)。

为了修复它,在将bootstrap导入项目后添加以下更少的代码:

-- Create demo data
CREATE TABLE #address([customerid] varchar(20), [addressno] varchar(20), [name] varchar(50));

INSERT INTO #address ([customerid], [addressno], [name])
VALUES
    ('5705', '5705-01', 'John Doe'),
    ('5705', '5705-001', 'Jane Doe'),
    ('5705', '5705-002', 'Smith'),
    ('5705', '5705-003', 'Alice'),
    ('5706', '5706-01', 'Bob'),
    ('5707', '5707-001', 'Carol'),
    ('5707', '5707-002', 'Chuck')
;

-- Original Output
SELECT * FROM #address

-- Output of what is updated
SELECT *,SUBSTRING(addressno,1,PATINDEX(N'%-%',addressno)-1) + N'-' +RIGHT(N'000'+
    CONVERT(nvarchar(100),CASE WHEN LEN(SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno))) < 3 
        THEN SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno)) 
        ELSE SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno)) +1 
    END),3) 
FROM #address

-- Here is the work done! Update everything with the correct pattern.
UPDATE #address
set addressno = SUBSTRING(addressno,1,PATINDEX(N'%-%',addressno)-1) + N'-' +RIGHT(N'000'+
    CONVERT(nvarchar(100),CASE WHEN LEN(SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno))) < 3 
        THEN SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno)) 
        ELSE SUBSTRING(addressno,PATINDEX(N'%-%',addressno)+1,LEN(addressno)) +1 
    END),3) 

-- Show changes
SELECT * FROM #address

-- Cleanup!
DROP TABLE #address