2009-03-13 7 views
1

Zwei Teile zu meiner Frage:CSS Kontrolle Vererbung - Vererben Sonstiges Steuerung Styles

1) Gibt es eine Möglichkeit eines anderen Steuer Attribute und Stile in CSS zu erben? Es sei angenommen, die Steuerung keine Eltern/Kind-Hierarchie haben und völlig verschiedene Steuerungstypen sein kann:

IE:

#MyFirstControl 
{ 
    width: 100px; 
} 

#MySecondControl 
{ 
    width: MyFirstControl.styles.width; /* This doesn't work */ 
} 

2) Angenommen, ein Label-Tag ist ein Kind von jedem anderen Tag. Das Attribut width funktioniert weder mit "inherit" noch "auto". Was ist los mit dir?

IE:

<style> 
    div 
    { 
    width: 100px; 
    } 
</style> 

<div> 
    <!-- This label does what it wants for width. It's not the width of the containing div --> 
    <label style="width: inherit">Some Text</label> 
<div> 

Antwort

2

Teil 1: wollen Sie Klassennamen verwenden, nicht-IDs, um die Arten zu steuern:

.control_a { 
    width: 100px; 
} 

<blah id='MyFirstControl' class='control_a'/> 
<blah id='MySecondControl' class='control_a'/> 

Auf diese Weise können Sie Stile über eine beliebige Anzahl von Tags teilen. Auch im Auge behalten, können Sie mehr als einen Klassennamen auf einem einzigen Element verwenden:

.control_a { 
    width: 100px; 
} 

.red { background: #f00; }  
.blue { background: #00f; } 

<blah id='MyFirstControl' class='control_a red'/> 
<blah id='MySecondControl' class='control_a blue'/> 

Auf diese Weise können Sie viele verschiedene Quellen Stil für ein einzelnes Element auswählen.

+0

Danke für Ihre Antwort und Zeit Ned. Ich benutze Klassen ziemlich viel. Ich gab keinen Hinweis, aber ich kenne CSS ziemlich gut. Das war mehr philisophisch als alles andere. Ich habe versucht, ein Problem mit CSS- und JavaScript-Manipulationen von Steuerattributen zu lösen. Danke, Mann! – Boydski

1

Es gibt keine Möglichkeit, CSS "Objekte" zu erben. Sie können Stile aus Tags in anderen Tags erben, aber es ist das erbende Tag und nicht der Stil selbst. Wenn Sie ein Tag innerhalb eines Tags mit einem anderen Stil platzieren, wird es von diesem Stil übernommen.

Es könnte interessant sein, CSS-Stile als Objekte zu behandeln, da Sie viel Code vermeiden könnten, aber Sie können eine Klasse erstellen, die auf verschiedene Objekttypen angewendet werden kann und sogar mehrere Klassen auf ein Tag anwenden kann Es ist interessanter als nötig.

Ich bin mir nicht sicher über die zweite Frage, aber ich würde mir vorstellen, dass es damit zu tun hat, dass Sie sich auf einen Tag-Namen bewerben und keine Klasse oder ID verwenden. Ich müsste noch etwas damit spielen, um zu sehen, ob ich etwas herausfinden kann.

0

1) Da CSS nicht für Selbstreferenz ermöglicht es Ihnen, im gleichen Stil angegebenen gemeinsamen Aspekte von zwei getrennten Elementen haben könnte:

#MyFirstControl, #MySecondControl 
{ 
    width: 100px; 
} 

2) Wenn meine IDE und Browser, um es zu glauben inherit ist kein gültiger Wert für width in diesem Kontext, aber ich bin mir nicht sicher warum. Das könnte der Grund sein, warum dein Beispiel nicht funktioniert.