Twitterでアクティブリンクを太字にする標準的な方法は何ですか?Bootstrap navbarを太字にしますか?リンクが「アクティブ」クラスを取得することでアクティブな外観を取得することは明らかです。たとえば、Home
link is active。navbarのリンクをクリックすると、jQueryを使用してli
要素からすべてのクラスを削除し、active
クラスをリンクに追加する必要があります。 ?
<ul class="nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Link 2</a></li>
<li><a href="#">Link 3</a></li>
</ul>
[〜#〜] edit [〜#〜]:含めました
<script type="text/javascript">
$('.nav li a').on('click', function() {
alert('clicked');
$(this).parent().parent().find('.active').removeClass('active');
$(this).parent().addClass('active');
});
</script>
リンクの後。リンクをクリックするとアラートが表示されますが、「アクティブな」クラスはリンクに追加されません。
これが私のnavbar HTMLのすべてです。
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="brand" href="#">AuctionBase</a>
<div class="nav-collapse">
<ul class="nav">
<li><a href="home.php">Search</a></li>
<li><a href="about.php">About</a></li>
</ul>
</div>
</div>
</div>
</div>
activeクラスを、ユーザーがリンクをクリックする前ではなく、リクエスト応答の一部として(ページの読み込み時に)設定することを確認する必要があります。別のページをリクエストします。
最初に、どのnavlink
をアクティブとして設定する必要があるかを判断し、activeクラスを<li>
に追加する必要があります。コードは次のようになります
askerによるテスト:
PHPファイル内のHTML
リンク先リクエストURIを渡す<li>
マークアップ内でPHP関数をインラインで呼び出します
<ul class="nav">
<li <?=echoActiveClassIfRequestMatches("home")?>>
<a href="home.php">Search</a></li>
<li <?=echoActiveClassIfRequestMatches("about")?>>
<a href="about.php">About</a></li>
</ul>
PHP関数
Php関数simpleは、渡されたリクエストuriを比較する必要があり、レンダリングされている現在のページと一致する場合、出力activeクラス
<?php
function echoActiveClassIfRequestMatches($requestUri)
{
$current_file_name = basename($_SERVER['REQUEST_URI'], ".php");
if ($current_file_name == $requestUri)
echo 'class="active"';
}
?>
http://totalprogus.blogspot.sk/2013/12/bootstrap-add-active-class-to-li.html
このチュートリアルには、この「問題」に対する優れた究極のソリューションがあります。私は少し前にそれを扱っていて、私にとっても素晴らしい仕事をしていました、カスタマイズ可能
$(document).ready(function() {
$('a[href="' + this.location.pathname + '"]').parent().addClass('active');
});
サーバー側を処理したくない場合、および「/page.php」のようにすべてのhrefが単純な場合は、次を呼び出すことができます。
$('.your-nav-container').find('a[href="' + location.pathname + '"]').parents('li').addClass('active');
ページがロードされた後。
あなたが試すことができます:
_$('.nav li a').on('click', function() {
$(this).parent().parent().find('.active').removeClass('active');
$(this).parent().addClass('active').css('font-weight', 'bold');
});
_
ただし、nav
クラスを持つページには複数のnavがある場合があるため、id
にnav
属性を指定することをお勧めします。
_$('#main-nav li a').on('click', function() {
$(this).parent().parent().find('.active').removeClass('active');
$(this).parent().addClass('active').css('font-weight', 'bold');
});
_
あるいは、.css('font-weight', 'bold')
を使用する代わりに、これをスタイルシートに入れることもできます。
_.active {
font-weight: bold;
}
_
ページの下部に次のスクリプトを追加します。
<script>
$(document).ready(function() {
var url = this.location.pathname;
var filename = url.substring(url.lastIndexOf('/')+1);
$('a[href="' + filename + '"]').parent().addClass('active');
});
</script>
Chris Moutrayの答えは、私のソフトウェアの開発に大いに役立ちました(私はZendFrameworkを使用しています)。このビューヘルパーを作成しました。
<?php
class Zend_View_Helper_ActiveOrNot {
function activeOrNot ( $requestUri ) {
$current_file_name = basename($_SERVER['REQUEST_URI'], ".php");
if ($current_file_name == $requestUri)
echo 'class="active"';
}
}
この場合、ビューでこのヘルパーを呼び出します:
<?php $this -> activeOrNot ( "public" );
ありがと!!
CSSで解決できます。
クラスを各ページの本文に追加します。
<body class="home">
または、連絡先ページにいる場合:
<body class="contact">
次に、スタイルを作成するときにこれを考慮します。
ul li:hover, body.home a.home, body.contact a.contact { background-color: #000; }
ul li:hover a, body.home li.home a, body.contact li.contact a { color: #fff; }
最後に、リストアイテムにクラス名を適用します。
<ul>
<li class="home"><a href="index.php">Home</a></li>
<li class="contact"><a href="contact.php">Contact Us</a></li>
<li class="about"><a href="about.php">About Us</a></li>
</ul>
この点、body.homeページにいるときはいつでも、li.homeリンクには現在のページであることを示すデフォルトのスタイルが設定されます。
ページ名に$ pageTitleを割り当てると、javascriptなしでこれを実行できます
<ul class="nav navbar-nav">
<li <?php if ($pageTitle == "Website Development") {echo 'class="active"';} ?>>
<a href="website-development.php">
Web Development
</a>
</li>...</ul>
以下のコードを「head」セクションに配置してください。
<script type="text/javascript">
$(document).ready(function () {
$("li a[href='" + location.href.substring(location.href.lastIndexOf("/") + 1, 255) + "']").addClass("active");
});
</script>
前にjquery.jsを呼び出したことを忘れないでください。
そしてあなたの:
<style>
.active{something...}
</style>