2

ユーザーが Web ボタンを作成するための GUI を設計しています。CSS プロパティに値を入力しなくてもよいのでしょうか。

ユーザーがプロパティを選択しない場合、プロパティのデフォルト値を挿入することを検討しました。しかし、「色」のようなデフォルト値がないプロパティで問題が発生しました。すべての CSS プロパティのリファレンスをhttps://developer.mozilla.org/en/CSS/CSS_Referenceで見つけました。

5 つの主要ブラウザすべての最新バージョンでテストしたところ、問題なく動作するようです。しかし、それが将来常に当てはまるかどうかはわかりません。ユーザーが値を選択しない場合、PHP を使用して、プロパティ全体を削除することをプログラムで検討しました。しかし、それを行う前に、値を指定せずに CSS プロパティを使用することについて、あなたの考えを知りたいですか?

CSS:

.btn {
    background-color: #000000;
    border-color: #666666;
    border-style:;
    border-width:2px;
    color:;
}

編集

これが私の解決策です:

ユーザーが PHP で定義していない CSS プロパティを削除するだけです。

$css = preg_replace('/[\n\r].+:;/i', '', $css);
4

3 に答える 3

8

などの値のない宣言はcolor:;、CSS 構文に違反するため、原則として OK ではありません。一方、CSS 2.1 仕様では、強制的なエラー処理の原則が定義されており、そのような規則はユーザー エージェントによって無視されるものとされています (仕様では、「不正な宣言」の例として、プロパティ値の欠落が明示的に言及されていることに注意してください)。

これは、スタイル シートのこの部分が存在しないかのように、プロパティの値がユーザー エージェントによって決定されることを意味します。したがって、値は、適用される可能性のある他のスタイル シート (ブラウザーのプロパティの既定値を定義するブラウザーの既定のスタイル シートを含む) によって定義されるか、他のスタイル シートに関連する設定がない場合は、プロパティの初期値によって次のように定義されます。 CSS仕様で指定されています。

于 2012-07-24T22:29:30.657 に答える
6

プロパティには場合によってはデフォルト値がありますが (*)、通常はそのようには機能しません。仕様が行うことは、通常仕様で言及されている初期値を提供することです。colorデフォルト値がユーザー設定の値であるという点で、数少ない例外の 1 つです (Firefox では、[編集] -> [設定] -> [コンテンツ] -> [色] -> [テキスト])。他のほとんどは、明確に定義された初期値を持っていborder-styleますnone

これは、標準である公式の W3C ドキュメントです: http://www.w3.org/TR/CSS21/

明確にするために、プロパティはルールに従って値を持つ必要があります。値のないプロパティはエラーであり、無視されます。

(*) 例: のような短縮形では、andborder:greenを指定する必要はなく、それらはデフォルト (初期) 値に設定されます。border-styleborder-width

于 2012-07-24T21:32:02.423 に答える
0

プロパティに初期値を使用させる初期プロパティ値、またはブラウザのデフォルト値を使用できます。サポートについてはよくわかりませんが、長い間使用していて、少なくとも IE8+ では常に機能していると確信しています。

color: initial;
于 2013-07-11T12:21:59.077 に答える