次のフィドルは、あなたが探していると私が理解している限りのことを示しています。
http://jsfiddle.net/8DZZQ/13/
以下はjsfiddlejavascriptです。ここでは、マージンを使用してnav_arrowを調整しましたが、同じように簡単に絶対位置に配置し、オプションのoffsetLeftに基づいて移動することができます。
アレンジメント関数arr()がmouseoverイベントとmouseoutイベントに追加されます。これは、nav_arrowの新しい位置を計算し、それに応じてマージンを調整できることを意味します。デフォルトのオプションは、矢印が跳ねるようにmouseoutによって送信されます。デフォルトに戻ります。
各メニュー項目には、onclickイベントが変更するために、デフォルトのプロパティが追加されています。ただし、これは、リンクが動的であり、ページが別のページにリロード/変更されないことを前提としています。 、その場合は、id = "d"を持つdivを別のページのhtmlの適切な項目に変更し、それに応じてコードを調整する必要があります。
また、微調整配列を追加したので、各div上で矢印を好きな場所に正確に配置できます。値は各メニュー項目の左側の位置に追加されるため、link1の場合、その幅は60で、パディング/マージンなどを使用して、nav_arrowを中央に配置する34の微調整を行います。
window.onload = function () {
var fine = [36, 34, 34, 34];
var mitms = document.getElementsByClassName('mitm');
var l0 = (mitms[0].offsetLeft + fine[0]);
document.getElementById("nav_arrow").style.marginLeft = l0 + "px";
for (var i = 0; i < mitms.length; i++) {
mitms[i].default = false;
mitms[i].fine = fine[i];
mitms[i].onmouseover = function () {arr(this);};
mitms[i].onmouseout = function () {
var tmp = document.getElementsByClassName('mitm');
for (var j=0; j<tmp.length; j++) {
if (tmp[j].default === true) {arr(tmp[j]); break;}
}
};
mitms[i].onclick = function() {
var tmp = document.getElementsByClassName('mitm');
for (var j=0; j<tmp.length; j++) {tmp[j].default = false;}
this.default = true;
}
}
mitms[0].default = true;
};
function arr(el) {
var mitms = document.getElementsByClassName('mitm');
var l = el.offsetLeft + el.fine;
document.getElementById("nav_arrow").style.marginLeft = l + "px";
}
htmlは、提供したサンプルサイトに似ています。
<div id="nav">
<div id="d" class="mitm"><a href="#">Default</a></div>
<div class="mitm"><a href="#">Link1</a></div>
<div class="mitm"><a href="#">Link2</a></div>
<div class="mitm"><a href="#">Link3</a></div>
<div id="nav_arrow"></div>
</div>
スムーズな遷移がcssでカバーされている場合:
#nav_arrow {
position: relative;
margin: 20px 0 0 0;
/* Gets you your triangle, no image needed */
background: transparent;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-top: 10px solid #000;
border-bottom: none;
width: 0px;
height: 0px;
font-size: 1px;
/* Transitions to give smooth movement*/
transition: margin 1s;
-moz-transition: margin 1s; /* Firefox 4 */
-webkit-transition: margin 1s; /* Safari and Chrome */
-o-transition: margin 1s; /* Opera */
/* IE doesn't support until ie10 */
}
IEはまだcssトランジションをサポートしていないため、IEトランジションをスムーズにするための適切なjqueryソリューションがあると確信しています。
お役に立てば幸いです。
編集!
これは、次のようなものを使用した単純なcssでも可能です。
#menuitem1:hover ~ #nav_arrow {
margin: 0px 0px 0px 185px;
}
menuitem1が
<a id='menuitem1'></a>
以前と同じようにトランジションを使用します。