13

CSS をフラッシュ (Rails などでログインしたり、アクションを確認するために何かを実行したりするときに表示される小さなメッセージ) のように機能させるのに苦労しています。

私はそれをしたい:

  • 任意の div 内に住む
  • テキストが入った中央のボックスのように見える
  • テキストに合わせて(指定された最大幅よりも小さい場合)、またはテキストを折り返す(大きい場合)のに必要なだけの大きさにする
  • フラッシュに応じて、中央揃えまたは左揃え (または組み合わせ) のテキストがあります (たとえば、短いエラーは中央に配置され、長いハウツー イントロは左揃えに配置されます)。これをサポートする追加の CSS クラス (「flash info left」など) は問題ありません
  • (例のように)ページ上で複数のフラッシュが隣り合っているとうまくいきます
  • ラッパー要素内の要素内のテキストではなく、テキストの周りのクラスを持つ単一の要素で構成されることが望ましい
  • YUI CSS と互換性があり、純粋な CSS (JS ではない) であることが望ましい
  • IE7 以降、FFx 3 以降、Safari 3 以降で正しく動作します。古いブラウザで「十分」に動作する

これについて私が見た CSS のほとんどは、これらのいずれも行いません。たとえば、固定幅を指定するものがほとんどです。これは、ラップが不十分であるか、パディングが多すぎることを意味します。

これどうやってするの?(または: なぜできないのですか?)

これが私の現在のCSSです:

<div class="flash info">
  <span class="close"><a href="AJAX callback">X</a></span>
  Some informational text here that can be closed w/ the X
</div>
<div class="flash error">
  Some other simultaneous error
</div>

.flash {
    text-align: center;
    padding:    .3em .4em;
    margin:     0 auto .5em;
    clear:      both;
    max-width:  46.923em; /* 610/13 */  
    *max-width: 45.750em; /* 610/13.3333 - for IE */
}

.flash.error {
    border: thin solid #8b0000;
    background: #ffc0cb;
}

.flash.notice, .flash.info {
    border: thin solid #ff0;
    background: #ffe;
}

.flash.warning {
    border: thin solid #b8860b;
    background: #ff0;
}

.flash .close {
    float:  right;
}

.flash .close a {
    color:              #f00;
    text-decoration:    none;
}

ボーナス ポイント: 以下のツールチップ コードを使用して、部分的にしか目的を達成できませんでした。つまり、ラッピングできません。

何らかの理由で、nowrap または幅が指定されていない限り、デフォルトで非常に小さい幅になります。理由や、特定の広い幅でラップする方法がわかりませんでした(フラッシュで実現したいように)。

Some text with <span class="tooltip">info <span>i can has info?</span></span> about a word

.tooltip {
  position: relative; /*this is the key*/
    background-color: #ffa;
}

.tooltip:hover{
    background-color: #ff6;
}

.tooltip span {
    display: none
}

.tooltip:hover span { /*the span will display just on :hover state*/
    z-index:        1; 
    display:        block;
    position:       absolute;
    top:            1.6em; 
    left:           0;
    border:         thin solid #ff0;
    background:     #ffe;
    padding:        .3em .6em;
    text-align:     left;
    white-space:    nowrap;
}

ありがとう!

  • サイ
4

4 に答える 4

4

これらは Javascript での通知の興味深い試みです。最初の通知は中央に配置されています。そこからインスピレーションを得ることができるかもしれません。

うなり声のように (mootools)

ROAR(これは本当に良いです)

于 2009-05-28T07:14:00.973 に答える
2

まず、そのようなスタイルを探すときは、それらのポップアップを「Growls」と呼ぶ必要があります。これは Apple が使用している名前であり、非常に積極的に使用しているため、この名前を探す必要があります。

次に、Roar のスタイルシートは非常にアクセスしやすいので、ダウンロードしてコピーしてみてはいかがでしょうか。ポップアップは JS ですが、生成されたスクリプトは純粋な html です。

mootools、JQ、および Ext には、独自の Growl 通知プロジェクトがあります。

第三に、自分で作成したいだけで、常に使用する寸法がある場合は、グラフィックを 1 つまたは 2 つ作成し、その中央にテキストを並べるのがおそらく最善です。

于 2009-06-02T06:32:29.857 に答える
1

これは大きな問題ですが、分解してみます。

最初に、最初の 3 つの要件に関しては、ブラウザ プラットフォームを指定する余裕がない限り、行き詰まっている可能性があります。ほとんどのブラウザーで、任意の DIV 内でボックスを中央に配置するには、内側のブロック要素の幅を指定する必要があります。ボックスのように見えるようにするには、ブロック要素にする必要があります (色付け、境界線)。をサポートするブラウザーでは、幅がなくても問題ありませんdisplay: inline-block。必要に応じて、スクリプトを使用してこれをハッキングし、内部テキストの長さに基づいて幅を最大値まで設定することができます。

次の 3 つの要件は互いに矛盾しています。中央揃えと左揃えの複数のフラッシュを許可する場合、両端揃えだけでは、各フラッシュを独自のブロック要素内に配置して、両端揃えスタイルを適用できるようにする必要があります。

notice明らかではありませんが、 、warningまたはのフラッシュ タイプの例を保持するものは何もありませんerror。中央揃えにする必要があるもの (短いエラー) と左揃えにする必要があるもの (初心者イントロ) を区別したい場合は、それらを別のキーでフラッシュに入れます。各キーに必要なスタイルを取得するために必要なクラス名を適用して、フラッシュを繰り返します。複数のエラー メッセージをサポートする必要flash[:error]がある場合は、配列にすることができます。メッセージをフラッシュに追加しやすくするためのヘルパー メソッドを作成すると、ビュー内の条件付きコードが少なくなります。

于 2009-06-01T15:52:30.650 に答える
1

Alertify.js は UI が優れていて使いやすいので、ぜひお試しください。

http://fabien-d.github.com/alertify.js/

于 2013-04-01T12:57:52.847 に答える