2016-09-10 5 views
0

UPDATEWarum ist der Umriss größer als sein div?

Um die Eingabe zurück auf die Größe bekommt ich es sein will, hatte ich von Polsterung und Grenzen loszuwerden. Das dies erreicht folgendes:

*{padding:0; margin:0; border:0;} 

Dank CBroe, entdeckte ich, das ist einzigartig für FF, die eine Standard-Grenze von .75px und eine Polsterung von 1.5px zum input hinzufügt. Für eine Gesamtmenge von ungefähr 4.5px. Chrome nicht.

UPDATE 2

Die oben fix das untergeordnete Element I auf die Größe dachte nur zurückkommt es sein sollte. Die folgende akzeptierte Antwort zeigt, dass FF einen Fehler hat, der erklärt, warum sich die Gliederung nicht wie gewünscht verhält, die Gliederung nur für die übergeordneten Elemente und nicht für absolute positionierte Nachkommen.


Ich habe zwei div Elemente vertikal gestapelt mit ihrem outline Eigenschaft auf 1px. Die div Elemente haben eine height von 117px.

Ich erwarte, wo die beiden div Elemente treffen, um ihre Konturen zusammenhängend zu haben. Es tut so ohne Inhalt.

Wenn ich einen absolute positionierten Eingang mit top = 97px und Höhe = 20px in den oberen div platziere, wird der Umriss dieses div nach unten geschoben.

Hier ist a fiddle, die dies zeigt. Wenn Sie die input entfernen, werden Sie sehen, wie die obere div Gliederung neben der unteren div sitzt.

Es gibt zwei Dinge (zumindest), die ich nicht verstehe:

1) in das Feld Prüfung des Browsers Entwickler-Tools (Firefox) verwendet wird, sehe ich, dass die oben div in der Tat ist noch 117px hoch. Der Umriss sollte um das div gezogen werden, scheint aber nicht zu sein. Warum?

2) Der Eingang hat eine Spitze von 97px plus eine Höhe von 20px. Warum würde dies die Position des Umrisses beeinflussen? Es sieht so aus, als ob der Umriss um 4 Pixel nach unten geschoben wurde.

+0

Ich kann jetzt nur in einem Chrome-basierten Browser testen und sehe nicht den Effekt, den Sie beschreiben. Das Eingabefeld verdeckt den oberen Umriss des unteren Div nur teilweise, was sich deutlich bemerkbar macht, wenn Sie den weißen Standardhintergrund für Transparent deaktivieren. – CBroe

+0

@CBroe - Danke für die Erwähnung von Chrome. Ich habe mit Chrome getestet und es zeigt nicht das gleiche Verhalten wie Firefox - was mir sagt, dass die Standardeinstellungen für Padding, Rand und Rahmen unterschiedlich sein müssen. Dies würde erklären, warum das Setzen von explizit standardmäßig in Firefox behoben wird. Ich habe überprüft, dass dies eine Gesamtbreite von 1,5 Pixeln und eine Gesamtfüllung von 3 Pixeln ist. – mseifert

Antwort

3

Das ist, weil outlines Implementierung abhängig sind. Es ist nicht nur die Größe:

Umrisse können nicht rechteckig sein.

Von CSS3 UI,

Diese Spezifikation definiert nicht die genaue Position oder die Form des Umrisses, aber es ist in der Regel unmittelbar vor der Grenze Feld gezogen.

Firefox hatte historisch eine Tendenz, Umrisse in verschiedenen Situationen, z.

Der ehemalige fixiert wurde, scheint diese das gleiche wie Ihr Problem.

+0

Sie haben Recht - Umrisse, die durch nachkommende Elemente erweitert werden, erklären das Herz meiner Frage. Meine anfängliche Korrektur ('* {padding: 0; margin: 0; border: 0;}') brachte das Kindelement nur auf die Größe zurück, die ich dachte. Aber Ihr Fehlerbericht erklärt, warum die Gliederung sich nicht so verhalten hat, wie ich es verstanden habe. Danke, dass du das Geheimnis gelöst hast. – mseifert

0

Ich habe 2 Antworten für Sie:

1) In der Box Prüfung des Browsers Entwickler-Tools (Firefox) verwendet wird, sehe ich, dass die oben div in der Tat ist noch 117px hoch. Der Umriss sollte um das div gezogen werden, scheint aber nicht zu sein. Warum?

Der Umriss scheint um alles herum gezeichnet zu sein. Also, wenn ein Element 100px an der Unterseite hervorsteht. Der Umriss wird ebenfalls um 100 Pixel verschoben. In diesem Fall steht das Eingabeelement 8px. Der Umriss ist also 8 Pixel länger als erwartet.

Der Eingang hat eine Spitze von 97px plus eine Höhe von 20px. Warum würde dies die Position des Umrisses beeinflussen? Es sieht so aus, als ob der Umriss um 4 Pixel nach unten geschoben wurde.

Sie waren fast genau dort, 97px + 20px ist tatsächlich 117px Höhe. Aber Sie haben vergessen, 8px aus dem Eingabeelement zu zählen. Dies kommt von einem 3px dicken Rand + 1px dicke Polsterung.

+0

Danke für Ihre Antwort. Ich habe überprüft, dass Firefox eine Standardfüllung und einen Rahmen für die Eingabe festgelegt hat, was das Problem verursacht. Sie können meine aktualisierte Frage für Details sehen. – mseifert

Verwandte Themen