2015-05-18 8 views
10

Ich habe derzeit ein Problem mit der line-height Eigenschaft. Derzeit verwende ich dies, um den Text unter die Mitte (~ 2/3 des Weges nach unten div) zu erscheinen.Eingang folgt nicht Linie-Höhe-Eigenschaft

.squ { 
 
    height: 30vw; 
 
    width: 40vw; 
 
    background: gray; 
 
    display: inline-block; 
 
    margin: 5px; 
 
    position: relative; 
 
} 
 
.jbcol3 { 
 
    text-align: center; 
 
    height: auto; 
 
} 
 
.squ input, 
 
.squ a { 
 
    display: inline-block; 
 
    position: absolute; 
 
    top: 0; 
 
    left: 0; 
 
    height: 100%; 
 
    width: 100%; 
 
    line-height: 40vw; 
 
}
<div class="jbcol3"> 
 
    <!--Start Grey Box--> 
 
    <br /> 
 
    <h3>Account Actions</h3> 
 

 
    <div id=""> 
 
    <p class="squ"> 
 
     <input type="submit" value="Make Payment" id="" /> 
 
    </p> 
 
    </div> 
 
    <p class="squ"> 
 
    <input type="submit" value="Get Quote" id="" /> 
 
    </p> 
 
    <p class="squ"> <a id="" href="orderhistory.aspx">Order history</a> 
 
    </p> 
 
    <p class="squ"> <a id="" href="changepassword.aspx">Change password</a> 
 
    </p> 
 
</div>

Wie Sie aus dem Snippet sehen können, bin ich mit Positionierung und inline-block Elemente, um diese Art von Ergebnis zu erzielen.

jedoch die

<input type="submit"/> 

scheint nicht auf die Eigenschaft line-height einzuhalten.

Ist das von Entwurf, dass die Schaltfläche seine Zeilenhöhe nicht ändert, obwohl es überschrieben werden sollte?


Ich habe das background-transparent Einstellung gefunden, diese Einschränkung scheint zu 'entfernen' - und meine Frage daher:

Arbeits Demo:

.squ{ 
 
    height:30vw; 
 
    width:40vw; 
 
    background:gray; 
 
    display:inline-block; 
 
    margin:5px; 
 
    position:relative; 
 
} 
 

 
.jbcol3{ 
 
    text-align:center; 
 
    height:auto; 
 
} 
 

 
.squ input, .squ a{ 
 
    display:inline-block; 
 
    position:absolute; 
 
    top:0; 
 
    left:0; 
 
    height:100%; 
 
    width:100%; 
 
    line-height:40vw; 
 
    background:transparent; 
 
}
<div class="jbcol3"> 
 
    <!--Start Grey Box--> 
 
    <br /> 
 
    <h3>Account Actions</h3> 
 

 
    <div id=""> 
 
     <p class="squ"> 
 
      <input type="submit" value="Make Payment" id=""/> 
 
     </p> 
 
    </div> 
 
    <p class="squ"> 
 
     <input type="submit" value="Get Quote" id="" /> 
 
    </p> 
 
    <p class="squ"> <a id="" href="orderhistory.aspx">Order history</a> 
 
    </p> 
 
     <p class="squ"> <a id="" href="changepassword.aspx">Change password</a> 
 
    </p> 
 
</div>


Es ist auch gewesen bemerkte, dass die Einstellung -webkit-appearance: none; auch dieses Verhalten entfernen wird - also würde es vorschlagen, dass dies das Standardverhalten ist, in dem Sie andere Eigenschaften überschreiben müssen, damit dies angezeigt wird?


Warum ist es, dass eine Hintergrundfarbe Einstellung der Taste können diese Zeilenhöhe zu benutzen? Warum funktioniert das nicht automatisch?

+0

Ich sehe beide Schnipsel in FF38 gut funktioniert. – dippas

+1

** Hinweis: ** Es gab eine Diskussion zu diesem Thema auf [normalize.css] (https://github.com/necolas/normalize.css/issues/377). Jedoch [normalize.css] (https://github.com/necolas/normalize.css/blob/master/normalize.css#L293) fügt '-webkit-appearance: button;' hinzu, das das Problem zu beheben scheint. [Hier ist eine Geige Ihres ersten Beispiels mit normalize.css enthalten] (http://jsfiddle.net/4akq2r90/). – Vucko

+0

Versuchen Sie, den Submit-Button zu isolieren, indem Sie ihm nur eine CSS-Eigenschaft zuweisen, da die Zeilenhöhe normalerweise für das Eingabe-Tag funktioniert. Sie haben mehrere andere Untereigenschaften und Stile, die mit der Schaltfläche im obigen Code verknüpft sind. Sobald Sie die Schaltfläche isoliert haben und der Code funktioniert, fügen Sie die Eigenschaften, die Sie benötigen, einzeln hinzu, bis Sie den Schuldigen gefunden haben, der den Code nicht wie vorgesehen funktioniert. – userDEV

Antwort

3

Nicht sicher, ob dies Ihre Frage von beantworten wird, warum es geschieht.

Aber nach ein wenig und schnelle Untersuchung habe ich einige Ergebnisse gefunden. Wenn der Eingang den Typ submit hat, erhält er -webkit-appearance: push-button. Und die line-height ist gezwungen, normal. Und wenn ich gezwungen sage, ist es wirklich gezwungen, normal.

In den berechnet Arten Sie erhalten:

line-height: normal; 
.squ button, .squ input, .squ a - 40vw!important 
input[type="submit"] - 40vw!important 
input, textarea, keygen, select, button - normal user agent stylesheet 

Auch wenn ich es mit 40vw!important bin überschreiben es als normal macht. Ich habe es sogar mit 40px!important versucht. normal bezieht sich auf die font-size .. so versuchte ich, das durch Ändern der font-size zu decken und nichts passieren würde.

Jetzt, wenn wir die -webkit-appearance: push-button durch Überschreiben mit none entfernen, verliert es die erzwungene line-height: normal.

Aber was passiert, wenn Sie die background-color ändern? Der Browser platziert standardmäßig -webkit-appearance mit none, so dass Sie die line-height überschreiben können.

Die line-height wird vom Browser in der push-button Darstellung erzwungen. Also, versuchen Sie es mit einem button Tag stattdessen.

<button type="submit">Make Payment</button> 

Was bekommen wir?

-webkit-appearance: button; 
line-height: 334.799987792969px; 

Schlussfolgerungen:

  • -webkit-appearance: push-button macht der Browser die line-height: normal
    erzwingen.
  • -webkit-appearance: button ermöglicht das Bearbeiten der line-height.
  • background-color Sätze -webkit-appearance zu none

Sie wissen nicht, ob es die Antwort ist man wollte, aber ich denke, diese Ergebnisse sehr interessant sind.

+2

Entlang sehr ähnlichen Linien wie zu dem, was ich gerade schrieb. Ich würde stattdessen ein Knopfelement verwenden. Habe keine Eingabe vom Typ submit verwendet, da ie6 von allen Projekten, an denen ich arbeite, gelöscht wurde :) – alexrogins

+0

Prost für deine Untersuchung - es ist sowohl eine ziemlich interessante Lektüre als auch ziemlich informierend - obwohl ich immer noch gerne wissen wollte * warum * das das passiert. – jbutler483

+0

@ jbutler483 Ich denke, es ist Standard aus dem Browser, zumindest kann ich nichts anderes finden, das Gegenteil zu sagen. Ich habe es gerade als Antwort gepostet, weil ich es interessant fand, obwohl ich nicht ganz auf deine Frage antwortete. aber ich werde versuchen, mehr über dieses Problem zu finden –