Bootstrap: изменение цвета заголовка панели при нажатии
14283 просмотра
3 ответа
Привет, вчера вечером я дал себе ускоренный курс по начальной загрузке, и мне было очень весело с ним. Я нашел в Интернете складную панель, которая действительно хорошо работает для того, чего я надеюсь достичь в моей панели навигации. Однако я хочу, чтобы при расширении цвет фона заголовка панели изменялся. Я не достаточно знаком с внутренним механизмом начальной загрузки, но пока не могу разобраться с ним самостоятельно (скоро! Надеюсь). Код в вопросе ниже:
<div class="panel-group minmarg" id="accordion">
<div class="panel panel-default">
<div class="panel-heading">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
OPI<b class="caret"></b>
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body minmarg">
<ul class="nav nav-pills nav-stacked pill-trngtheme minmarg">
<li role="presentation"><a href="#">OPI Main Site</a>
</li>
<li role="presentation" class="active"><a href="#">Training</a>
</li>
<li role="presentation"><a href="#">Procedures</a>
</li>
<li role="presentation"><a href="#">Corrective Action</a>
</li>
<li role="presentation"><a href="#">Human Performance Improvement</a>
</li>
<li role="presentation"><a href="#">LEAN Management</a>
</li>
<li role="presentation"><a href="#">Coduct of Operations</a>
</li>
</ul>
</div>
</div>
</div>
</div>
Автор: webforwork
Источник
Размещён: 13.11.2019 11:48
Ответы (3)
2 плюса
Webforwork , Привет.
Как насчет примерно такого и поменять класс, используя toggleclass
.
CSS
.panel-clr {
background-color:greenyellow;
}
.panel-clr.on {
background-color:dodgerblue;
}
JS
$( function() {
$('.panel-clr').click( function() {
$(this).toggleClass('on');
} )
});
Надеюсь, это поможет вам.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
<title>Starter Template for Bootstrap</title>
<!-- Bootstrap core CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
<style>
body {
padding-top: 50px;
}
.spacer {
margin-top: 2%;
margin-bottom: 2%;
}
.block {
height: 440px;
}
.panel-clr {
background-color:greenyellow;
}
.panel-clr.on {
background-color:dodgerblue;
}
</style>
</head>
<body>
<nav class="navbar navbar-inverse navbar-fixed-top ">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand " href="#">Project name</a>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
<div class="container col-lg-12 spacer"></div>
<div class="container col-lg-12">
<div class="col-lg-10 col-md-10 col-sm-10 col-xs-10 bg-info block">
<div class="panel-group minmarg" id="accordion">
<div class="panel ">
<div class="panel-heading panel-clr">
<h4 class="panel-title">
<a data-toggle="collapse" data-parent="#accordion" href="#collapseOne">
OPI<b class="caret"></b>
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse">
<div class="panel-body minmarg">
<ul class="nav nav-pills nav-stacked pill-trngtheme minmarg">
<li role="presentation"><a href="#">OPI Main Site</a>
</li>
<li role="presentation" class="active"><a href="#">Training</a>
</li>
<li role="presentation"><a href="#">Procedures</a>
</li>
<li role="presentation"><a href="#">Corrective Action</a>
</li>
<li role="presentation"><a href="#">Human Performance Improvement</a>
</li>
<li role="presentation"><a href="#">LEAN Management</a>
</li>
<li role="presentation"><a href="#">Coduct of Operations</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div><!-- /.container -->
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
$( function() {
$('.panel-clr').click( function() {
$(this).toggleClass('on');
} )
});
</script>
</body>
</html>
4 плюса
Вы можете ссылаться на документ
Вот код для вас:
$(".collapse").on('shown.bs.collapse',function(){
// change background when expanded
});
$(".collapse").on('hidden.bs.collapse',function(){
// change background when hide
});
Автор: dieuvn3b
Размещён: 10.07.2015 02:51
1 плюс
AngularJR ответ правильный, но мне было немного трудно понять с моими ограниченными знаниями css и несуществующими знаниями jQuery. Кроме того, я использую реагирование, и поэтому настройка элементов DOM после их рендеринга не была для меня подходом.
Основной принцип
Основной принцип происходящего заключается в том, что в элемент html добавляется дополнительный тег класса:
Так
<div class="panel-heading">...</div>
становится
<div class="panel-heading on">...</div>
Неважно, как вы добавляете эти дополнительные классы, jQuery ( $
) - это всего лишь один из вариантов.
Различные правила CSS теперь могут быть применены к этим двум элементам div с помощью селекторов CSS:
.panel-heading {
background-color:greenyellow;
}
а также
.panel-heading.on {
background-color:dodgerblue;
}
соответственно.
Обратите внимание, что между .panel-heading
и .on
. См. Следующий вопрос переполнения стека для получения дополнительной информации: В чем разница между классами CSS .foo.bar (без пробела) и .foo .bar (с пробелом) .
Мой в стороне о решении проблемы при использовании реагировать
Однако в случае использования response-bootstrap "panel-heading"
тег создается автоматически, <Panel>
и <div class="panel-heading">
элемент не может быть найден и доступен после его рендеринга (жизненный цикл реакции является странным). Поэтому никакие дополнительные классы не могут быть добавлены к нему.
Таким образом, дополнительный класс, "on"
должен быть добавлен к родительскому элементу panel-heading
div:
HTML (или .jsx):
<div class="on">
<Panel header="My Title">...STUFF...</Panel>
</div>
в результате получается DOM, который выглядит следующим образом (немного упрощенно):
<div class="on">
<div class="panel">
<div class="panel-heading">
My Title
</div>
<div class="panel-body">
.....STUFF.....
</div>
</div>
</div>
Теперь есть внешний div с "on"
классом, и "panel-heading"
div содержится внутри него.
Div заголовка панели теперь можно стилизовать в css с помощью следующих селекторов:
.panel-heading {
background-color:greenyellow;
}
а также
.on .panel-heading {
background-color:dodgerblue;
}
Обратите внимание, как .on
теперь селектор находится перед .panel-heading
селектором, и между двумя селекторами также есть пробел; это потому, что элемент с .on
классом теперь является предком элемента с .panel-heading
классом.
Примечание. Добавление дополнительного "on"
класса непосредственно <Panel>
в панель и ее отсутствие в дополнительном элементе будет работать аналогично.
Теперь обработчик «onClick» может изменить класс родительского элемента, чтобы повлиять на стилизацию заголовка панели, что намного проще, чем поиск в DOM правильного "panel-heading div"
(IMHO). И что очень важно, в моем случае использования реакции, этот "on"
класс может быть указан непосредственно для элемента при вызове процедуры рендеринга.
Вопросы из категории :
- html Определить часовой пояс пользователя
- html Как определить, какой из указанных шрифтов был использован на веб-странице?
- html Как мне дать моим веб-сайтам значок для iPhone?
- html Как отключить автозаполнение браузера в поле веб-формы / теге ввода?
- css Создание закругленных углов с помощью CSS
- css Как автоматически изменить размер текстовой области с помощью Prototype?
- css Как вы можете настроить номера в упорядоченном списке?
- twitter-bootstrap В чем разница между CLASSPATH "записями начальной загрузки" и "записями пользователей" в Eclipse?
- twitter-bootstrap Что делает селектор [class ^ = "span"]?
- twitter-bootstrap How to enable scrolling of content inside a modal?
- twitter-bootstrap How to Automatically Close Alerts using Twitter Bootstrap
- nav Должен ли мой навигационный тег быть в моем теге раздела?
- nav динамически применять активный класс к nav li
- nav Как создать липкую панель навигации, которая после прокрутки фиксируется наверху
- nav Как сделать функциональный HTML5 navbar
- collapsable Bootstrap: изменение цвета заголовка панели при нажатии
- collapsable How to partially (re)apply bindings to descendants with knockout?
- collapsable Collapsible Toolbar Android
- collapsable Qt, how to collapse column in QTableView