dポイントプレゼントキャンペーン実施中!

javascript(JQuary)について質問させてください。

現在制作中のホームページに「ドロップダウンメニュー」を付けたいと思い、以下サイトのドロップダウンメニューをつけることにしました。
http://www.leigeber.com/2008/05/vertical-flyout- …

導入もスムーズにできて表示も無事にできたのですが、インターネットエクスプローラーで閲覧するとフォントにアンチエイリアスがかかっていませんでした。
原因を調査してみるとjavascriptでの透明度の設定によるものであることがわかりました。
http://www.bpsinc.jp/blog/archives/306

このサイトを見ながらフィルタを削除する方法を自分なりに頑張ってみたのですが、正直なところjavascriptがよくわからないので解決できません。
どなたかjavascriptの知識がある方、以下にソースコードへのリンクを貼っておきますので解決のお力添えをお願いします。

ソースコード
http://sandbox.leigeber.com/dropdown/dropdown.js

余計かもしれませんが、c.style.filter~の行をコメントアウトしたらアンチエイリアスは効いたのですが、透明表示が無くなってしまいました。

よろしくお願いします。

A 回答 (4件)

#4です。



>コードの書き方がわからずに苦悩しておりました。
参考サイトにはnodeのfilter属性削除のコードの例がでているので、そのまま使えばよいのでは?

実際に検証していないのでわかりませんが、そのままを信用するとすれば、
 if (c.style.removeAttribute) c.style.removeAttribute(’filter’);
(IEの削除だけで良さそうなのでその部分のみ)
    • good
    • 0
この回答へのお礼

ありがとうございました。

おかげで意図したとおりの表示にすることができました。
本当にありがとうございます。

お礼日時:2010/03/17 23:17

No1様と同意見なんですが、あれこれ思案をめぐらしてみると、参考に掲げているサイトのように、フェード中はfilterを効かして、終了時にはアンチエイリアスを生かしたいということなのでしょうか?


質問文を読む限りは、No1様と同じ感想しかうかばない…


スクリプトの中身もちゃんと見ていないので、かなりいい加減ですが、一番最後のところで、フェードが終わったときに clearInterval をしているはずなので、その後でcのfilter属性を削除してあげればよいのでは?
(かなり直感的なサジェスチョンのみですが…)

でも、参考サイトの
>しかしIEではなぜかこれが未定義です。代わりにremoveAttributeが使えます。
ってのも、element.removeAttributeは他のブラウザでも使えるので
 http://javascriptist.net/ref/element.removeAttri …
element.style.Attributeも他のブラウザでもいけちゃわないのかなぁ。
(これも未検証です。 CSSはremovePropertyなのかしらん。そもそも、IE以外のブラウザはfilterの設定をうけつけるんだっけ?無視するだけではなかったかと…
どっちにしろ、他のブラウザでは問題がないのでしょうから、削除するのはIEだけでいいってことになりますね。)

この回答への補足

私の質問の仕方が悪くて申し訳ありませんでした。

fujillinさんの直感どおり、"cのfilter属性を削除"したいのですが、コードの書き方がわからずに苦悩しておりました。

もしよろしければフィルター削除についてご教授願えませんでしょうか?

補足日時:2010/03/17 22:02
    • good
    • 0

ところで、何故


「avascript(JQuary)についての質問」
なんですか???

この回答への補足

申し訳ありません。
当該htmlにjquaryを読み込むコードが書いてあったので勘違いしてしまいました。

補足日時:2010/03/17 22:03
    • good
    • 0

難解な質問内容です。


「フィルタを削除する方法を自分なりに頑張ってみた」
<c.style.filter~の行をコメントアウトしたらアンチエイリアスは効いたのですが、透明表示が無くなってしまいました。>
で実現できてます。

<原因を調査してみるとjavascriptでの透明度の設定によるものである>

原因もわかっているようで、

透明表示にする =>アンチエイリアスがきかなくなる。
透明表示にしない =>アンチエイリアスがきいた状態。

このどちらかを選ぶしかないのでは....
※アンチエイリアスってフォントグループで設定してるんですか...
それとも別のfilter指定で作ってるんですか。
filterのバッティングですか、それならCSS3なら、
opacityプロパティが別にあるので、filterのalphaはいらないので、
バッティングしないかも(最近はIE8、Firefox3.6が普及しだしましたね)
filter指定でアンチエイリアスってIEしか出来ないですよね。

この回答への補足

私の質問の仕方が悪くて混乱を招いてしまい申し訳ありませんでした。

質問に貼ったリンク先にて「フィルターを削除してやればIEでも効果を保ったままアンチエイリアスが効かせられる」という一文を発見したので、頑張ってみたのですが、その「javascriptのフィルターの削除のコードの書き方」がわからなかったので、それをご教授願いたいという趣旨の質問でした。

紛らわしい質問で申し訳ありませんでした。

補足日時:2010/03/17 22:05
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!