0

<a>background-image: CSS を持つタグに特別なリンク効果を使用しています。リンクは見栄えがしますが、Web サイトには多くの<img>リンクも含まれており、これらも CSS を取得します。

私は現在、jQuery の問題を解決しています:$("img").parent().css("background", "none"); この CSS をタグに影響させないように、CSS でこれを行う正しい方法はありますか?

コード:

a:link ,a:visited {
    text-decoration: none;
    background-image: url(/underline.png);
    background-repeat: repeat-x;
    background-position: bottom;
}

コードの観点からは他の回答が適切だと思いますが、そこにたどり着く方法を理解するのに役立つ理論を追加したかっただけです。再帰を行うときは、基本ケースと再帰ケースの 2 つが常に必要です。基本ケースは解決するのが信じられないほど単純なものであり、再帰ケースは、解決可能な単純なケースに向かって作業する方法です。

Linked List は、一種の再帰的なデータ構造そのものです。たとえば、10 個のアイテムのリンク リストがある場合、9 個のアイテムのリンク リストが関連付けられた単一のノードとして描くことができます。

したがって、基本ケース(@Chrisの回答から借りる)の場合、 on を実行する最も単純なリストtoString()は空のリストです。したがって、基本ケースは次のようになります(疑似コード):

if(list is empty)
{
   return "";
}

次に、再帰ケースは、既存のリンク リストを取得し、基本ケースに向かって下向きに作業する必要があります。これを行う最も簡単な方法は、解決できることがわかっている問題の小さな部分を切り離して解決し、残ったわずかに小さな問題に取り組むことです。Linked List を印刷する場合、つまり、リストから 1 つの項目を取得し、それを文字列に変換してから、残りのリストを気にすることができます。したがって、再帰的なケースは次のようになります (疑似コード):

if(list is not empty)
{
   String x = take the current node and translate it to a string;

   Add x to your running value of the String value of the entire list

   Recursively call this function with the next node in the list
   (you reduce your list size by 1 with each call and work down to your base case of an empty list)
}

この問題を再帰的に解決する方法を理解するのに役立つことを願っています。それを機能させる方法には確かにたくさんのバリエーションがあります。ループを記述する「正しい」方法が 1 つとないように、再帰的に行う「正しい」方法は 1 つではありませんが、通常は、一般的な「基本ケース」および「再帰ケース」の考え方から始めるのが最適です。

4

4 に答える 4

1

CSS4 では、次の構文が定義されています。

!a>img {background-image:none}

ただし、私が知る限り、まだサポートしているブラウザはありません。また、すべてが提案されているよう!に、どこに行くかについても最終的なものではありません.a!>img!a!>img

したがって、基本的に、これに対する CSS ソリューションはありません。ただし、「ハック」ソリューションがあります。

と仮定するとbody {background:white}、これを行うことができます:

a>img {background:white}

これにより、リンクの背景が白い背景で覆われ、実質的に非表示になります。必要に応じて色を調整します。コンテンツ領域に背景画像がある場合、これは機能しないことに注意してください...

于 2013-06-02T21:20:50.020 に答える
0

これを見たとき:background-image: url(/underline.png);とても緊張しました。ここで採用する必要がある特別な効果はありますか? CSS の下線プロパティの何が問題になっていますか?

CSS2 でこれを解決するには、コードを再設計する必要があります。したがって、これは少し非現実的かもしれません。

リンク用の CSS コードを保持します。

次に、そこに画像を含むリンクがある場合は、クラスを追加する必要があります。このクラスを使用して、通常の動作をオーバーライドする CSS をリンクします。

現在の CSS 機能では、やりたいことを行う方法はありません。Jquery は動作しますが、ハックです。

 a {
   code here that you want
 }
 a.img {
   override properties
 }

 <!-- Html -->
 <a href="#">Normal Text</a>
 <a class="img" href="#"><img src="image.png" width="x" height="y" alt="" /></a>

考察の材料 -> CSS があなたが求めるものをサポートしない理由は、子が親のスタイルを定義してはならないからです! 結局のところ、私たちは(人として)両親の特徴を定義しませんが、継承したものを確実に上書きします。

于 2013-06-02T22:37:25.860 に答える