画像ベースのメニューがあります(たとえば、1つは黄色でもう1つは青)。Illustratorでボタンをデザインし、PNGファイルに変換しました。現在、エフェクトをホバリングするためにCSSを使用しています。
したがって、画像にカーソルを合わせると、画像が変化します。したがって、これは(機能するため)良いのですが、完璧にはほど遠いです(それが私がここにいる理由です)...CSSのボタンの1つは次のようになります。
.home_menu, .about_menu, .video_menu, .demo_menu, .contact_menu {
float: left;
margin-bottom: 10px;
margin-top: 10px;
margin-left: 10px;
width: 100px;
height: 34px;
display: block;
}
.home_menu {
background: transparent url('../images/buttons/home_but.png');
}
.home_menu:hover {
background-image: url('../images/buttons/home_but_hov.png');
}
HTMLは、次のように開始されたようなものです。
<div id="main_menu">
<a href="index.php" class="home_menu" title="Home"></a>
<a href="index.php/about" class="about_menu" title="About"></a>
<a href="index.php/videos" class="video_menu" title="Videos"></a>
<a href="index.php/demo" class="demo_menu" title="Demo"></a>
<a href="index.php/contact" class="contact_menu" title="Contact"></a>
</div>
つまり、基本的にはクラスごとにCSSの背景画像を変更しています。
2つの質問。まず、そのページで各メニューを青色バージョンにしようとしています。そこで、JavaScriptを避けたい場合に備えて、これを(クラスで)行うためのPHP関数を作成しました。次のようになります。
// Display table and loop through links and images from array
public function print_navigation($image_dir, $ds, $page_nav, $page_nav_alt, $menu) {
$current_file = explode('/', $_SERVER['PHP_SELF']);
$current_page = $current_file[count($current_file) - 1];
$current_page;
//$i = 0;
foreach ($page_nav as $key => $value) {
$menu_output .= '<a href="';
$menu_output .= $key;
$menu_output .= '" id="';
$menu_output .= $menu[$key];
$menu_output .= '" style="background: transparent url(';
if ($current_page == $key) {
$menu_output .= $image_dir . $ds . $page_nav_alt[$key];
}
else {
$menu_output .= $image_dir . $ds . $page_nav[$key];
}
$menu_output .= ');"';
$menu_output .= '></a>';
$i++;
}
echo $menu_output;
}
ホームページ($home
変数)では機能するようですが、他のページでは機能しません。私はこのような変数を持っています(簡潔にするために切り捨てられた、別のファイルの配列と変数):
$menu = array(
$home => 'home_menu',
...);
$page_nav_ylw = array(
$home => $home_but_ylw,
...);
$page_nav_blu = array(
$home => $home_but_blu,
...);
次に、すべての画像を変数に入れます。配列で参照されます。たとえば、$home_but_ylw
そのボタンのPNGを参照します。
PHP関数は少し奇妙です。なぜなら、私は$key
2つの配列にforを使用しているからですが、これは間違いです。しかし、それ以外の方法で機能させるのに苦労しています。
2番目の質問は次のとおりです。CSSから削除できるようにホバー効果を取得するために、この上にJavaScript(jQueryなど)を追加できない理由はありますか?理想的には、現在のページも処理するPHPループでボタンを表示してから、jQueryでホバー効果を実行したいと思います。
長い投稿でごめんなさい。それが理にかなっていることを願っています。
前もって感謝します!