2012-04-12 4 views
1

CSSからHTML要素を分離する方法はありますか?私は、すべての子どもをドキュメント内で「見えない」ようにしようとしています。CSSからHTMLタグを保護する方法は?

ユーザーはドキュメント上で呼び出されたCSSに通知することができますが、これは失われないことを確認する必要があります。つまり、ディスプレイはありません:none、visibility:hidden、text-indent:-10000px 、左:-10000ピクセル、またはこれらのトリックのいずれか他のもの。

<div class="foo"> 
<a href="#foo">link</a> 
<img src="" /> 
<span>bar</span> 
</div> 

data:text/html; base64 iframeを使用できますが、テキストはフォーマットされません。

免責事項やロゴマークについて考えてみましょう。ユーザーは私のウィジェットに自分のCSS(CSS URLを通知すること)を含めることができます。その免責事項が表示されていても、その免責事項が表示されたままにしておく必要があります。

私はスタイルを使用しようとしていません。<タグ/ >を守る属性があるかどうかを知りたいのですが、 "-moz-user-select:none;"

+0

あなたがしたいことは、CSSからhtml要素を分離することとは関係ありません。あなたが要素を与えるとき、スタイリングは「見えない」という意味ではありません。 –

+0

CSS要素でHTML要素が参照されていない場合は、スタイリングされません。あなたは物事を逆行させます。クラスであなたが何かしたい要素をスタイル付けします(あなたは言いません)。 – SMacFadyen

+1

免責事項やロゴマークについて考えてみてください。私が言ったように、ユーザーは自分のCSSを(CSS URLに通知することによって)私のウィジェットに含めることができ、その免責事項が表示されてもそれを表示する必要があります。子供。 私はスタイルを使用しようとしていません。を保護する属性があるかどうかを知りたいのですが、 "-moz-user-select:none;" – Zanaca

答えて

1

以前の回答が指摘したように、それを行うには属性がありません、と!importantアプローチは、なぜ、いずれかの動作しないのだろうか?

Site.css .copyright {表示:ユーザーが独自のCSSを使用することができ、ユーザーがすべてのスタイル属性に!importantを置くならば、それは以前!important属性をタグ付け上書きされる主な理由は、ここでは一例だブロック重要;!/*他のスタイルはこちら* /}

Uploaded css .copyright {display:none!important;/* ... * /}

あなたはそれがアップロードされたスタイルシートを読んでいる克服し、あなたが上書きされるスタイル属性を避けるために!importantを使用することができ、その場合には、すべての!importantを削除することができる唯一の方法。

EDIT: しかし、あなたは積極的にユーザーが隠す要素に使用することがありますすべての単一の属性を宣言する必要があります。

+1

ユーザはHTMLへのアクセス権を持たないため、インラインの 'style'属性を変更することができないため、'!important'アプローチ*が有効になります。また、 '!important'と組み合わされたインライン' style'属性の特異性のために、ユーザはOPによって宣言されたスタイルの* any *をオーバーライドできません。 – 0b10011

0

いいえ、タグを保護する属性はありません。

1

あり、時間の100%動作するものではありませんが、ここではほとんどのケースで動作するソリューションがあります:

<div class="foo" style="background:#fff !important;color:#000 !important;position:relative !important;display:block !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;"> 
<a href="#foo" style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;">link</a> 
<img src="" style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;" /> 
<span style="background:#fff !important;color:#000 !important;position:relative !important;display:inline !important;visibility:visible !important;opacity:1 !important;float:none !important;left:0 !important;top:0 !important;">bar</span> 
</div> 

基本的に、あなたはあなたがいないすべてのスタイルに!importantを指定したいですstyle属性でオーバーライドします。これは手作業でやると巨大な痛みです。前にも述べたように、で、CSSに慣れ親しんだ人がうまく処理できます。

注:提供されるスタイルは網羅的なリストではなく、私の頭の上から考えることができます。

About CSS Specificity

+0

世界では何ですか?私はあなたが何をしようとしているのか、それをクラスに割り当てて、そのクラスを要素に適用するのはなぜですか?また、なぜたくさんの '!important'sを使用していますか、あなたはすでにインラインコードとしてやっています。インラインスタイルで '!important'を使用する必要があるとは想像できません。 – MetalFrog

+1

CSSセレクターの重みのために@MetalFrog。その方法は上書きすることができます。インラインの重要なスタイルは重く、上書きすることはほとんど不可能です。 +1 bfrohs –

+1

正しい順序で指定されていない場合、クラスを上書きすることができます。インラインスタイルは、外部CSSによってオーバーライドすることはできません。 – 0b10011

関連する問題