7

私はこれに対する満足のいく答えを高低で探していましたが失敗しました。StackOverflowが私に提供できることを願っています!

私はSharePointFoundation2010(SharePointを深く掘り下げる最初の実際の試み)を(とりわけ)カスタムWebパーツとともに使用しています。サイトのマスターページは、クライアントから提供されたCSSファイルを使用しており、これを順守する必要があります。私が抱えている問題は、SharePointがWebパーツのHTML構造にいくつかのSharePoint固有のCSSクラスを追加することにより、クライアントのスタイルと競合していることです。少し掘り下げてみると、ms-WPBodyクラスとそのさまざまな要素セレクターが主な原因であることがわかりました。

!importantクライアントスタイルシートのすべてに追加することもできますが、それは冗長です。最近追求してきたコースであるSharePointのスタイルを上書きするために、Webパーツの子コンテンツに非常に厄介なスタイルを挿入することができましたが、それは厄介になっています。または、Webパーツからクラスを削除しようとすると、次の質問が発生します。

SharePoint WebパーツのHTML構造に挿入されたCSSクラス名を削除またはオーバーライドするにはどうすればよいですか?この変更を行うために何をフックするかを知るには、SharePointの内部動作について十分に理解していません。また、私のgoogle-fuはこの件に関して失敗しています。CssClassASP.NET Webコントロールのマークアップは明らかに無視され、おそらく一部のホールドオーバーはから継承されWebControlます。

StackOverflowを手伝ってください!あなたは私の唯一の希望です!

編集
以前に明確にしなかったことをお詫びしますが、私はCSSを理解しており、スタイリングの助けを求めていないことを述べたいと思います。私が本当に探しているのは、SharePointによって発行されたCSSクラスを削除する方法です。誰かがそこで助けることができますか?CSSタグを削除します。これは、混乱を招くように思われるためです。この質問は実際にはCSSに関するものではなく、SharePointに関するものです。

4

5 に答える 5

3

CSSは、適用されるhtmlと一致する必要があります。SharePoint(または、さらに言えば、標準のasp.net Webフォーム)によって生成されるような生成されたhtmlを使用すると、通常、cssを変更する方がはるかに簡単です。重要な追加がオプションでない場合は、通常、より具体的なセレクターを使用して何かを行うことができます。つまり、「table td」として定義されたスタイルは、実際にはすべて同じ要素を選択しますが、「td」のスタイルをオーバーライドします。このアプローチを使用して、causignの問題であるSharePointのスタイル設定を元に戻すことができます。

本当にSharePointがページに配置するクラスを変更したい場合は、jqueryを使用してください。そのサーバー側を実行しようとすることは、最初のSharePointプロジェクトで実際にやりたいことではありません。

于 2010-10-20T02:58:19.993 に答える
3

フォローするかどうかはわかりませんが、Webパーツをコンテナーdivでラップして、心ゆくまでスタイルを設定してみませんか。

<style type="text/css">
.ms-WPBody {
background-color:red;
}

#myCustomCss p
{
    background-color:Blue;
}

</style>
<div class=ms-WPBody>
<div id=MyCustomCSS>
<p>Hello world</p>
</div>
</div>

2007年には、スタイルシートが正しく適用されるように、最後にアルファベット順に名前が付けられていることを確認する必要がありました。cssファイルの前にzを付けて、役立つかどうかを確認します。

この問題に関するリファレンス記事は次のとおりです。http: //singchan.com/2009/12/29/branding-sharepoint-2010-collaboration-sites-part-2-in-a-series/

于 2010-10-19T22:37:33.490 に答える
3

典型的なWebパーツのHTMLは次のとおりです。

<div style=""
    allowexport="false"
    allowdelete="false"
    class="ms-WPBody ms-wpContentDivSpace"
    width="100%"
    id="WebPartctl00_m_g_d0420a1c_44b7_4009_81c9_2bbcf9b325e9"
    haspers="false"
    webpartid="d0420a1c-44b7-4009-81c9-2bbcf9b325e9">
    <div id="ctl00_m_g_d0420a1c_44b7_4009_81c9_2bbcf9b325e9">
        Web Part Content goes here...
    </div>
</div>

秘訣は、Webパーツ自体が内部DIV(およびそのすべての子)であるということです。外側のDIV(ms-WPBodyクラスを持つDIV)はWebPartZoneです。このコントロールは封印されていますが、WebPartZoneを好きなようにレンダリングするアダプターを作成できます。ほとんどのはテーブルレスレンダリング用です。既存の構造を維持しながらクラスを削除するものを作成できます。

私には、これらすべてをコーディングしてから、Webアプリケーション用のApp_Browsersのcompat.browserに登録するのはやり過ぎのように思われるので、おそらくjQueryを使用します(ただし、Adapterを実行する場合は、それを見てみたいと思います)。

于 2010-10-20T18:26:24.510 に答える
1

または、コンテンツエディタのWebパーツを追加して、HTMLのCSSスタイル要素を上書きします。

<style type="text/css">
.ms-stylebox {
 border:o important;
}
</style>

- 平和!

于 2014-02-27T01:48:18.713 に答える
0

CSSファイルをどのようにロードしていますか?マスターページのヘッドの一部にロードする場合、またはcustom.cssを設定するだけでロードする場合は、ヘッドの外側にロードしてみることができます。これにより、core.cssの後にロードされるため、必要に応じて標準クラスをオーバーライドできます。

于 2010-10-20T00:41:54.880 に答える