Frage

Während eine Desktop-Anwendung auf einen Web-App konvertieren, ich habe über meine Unwissenheit ausgeführt werden, wenn ein mehrspaltige Dateneingabeformular zu implementieren versucht, mit Hilfe von CSS. Ich bin mit Tabellen für diese Art der Sache zu vermeiden, gelöst, und während ich ein gutes

Kann mir jemand Punkt mich in die richtige Richtung?

War es hilfreich?

Lösung

Hier ist ein Bildschirmfoto, beachten Sie bitte, wie ich gezeigt, die Tab-Reihenfolge mit Zahlen:

alt text

Bitte beachten Sie, dass RedFilter's Antwort auf einen anderen Registerkarte Auftrag hat, die ich im Screenshot gezeigt habe, unter:

alt text

(Code unten komplett mit ASP.NET Validatoren)

CSS (Cross-Browser-freundlich)

p
{
 margin:1em 0;
}
label
{
 float:left;
 width:5em;
 text-align:right;
 margin-right:0.5em;
}
input[type="text"]
{
 width: 10em;
}
.left-column, right-column
{
 float:left;
}
.left-column
{
 margin-right:1em;
}​
.textarea-label
{
 float:none;
}
textarea
{
 height:5em;
 width:35em;
}​

HTML

<div class="left-column">
  <p>
    <label for="tbDepartment">Department:</label>
    <asp:TextBox ID="tbDepartment" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valDepartment" TabIndex="-1" runat="server" ControlToValidate="tbDepartment">&nbsp;*</asp:RequiredFieldValidator>
  </p>
  <p>
    <label for="tbFund">Fund:</label>
    <asp:TextBox ID="tbFund" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valFund" TabIndex="-1" runat="server" ControlToValidate="tbFund">&nbsp;*</asp:RequiredFieldValidator>
  </p>
  <p>
  <label for="tbProgram">Program:</label>
    <asp:TextBox ID="tbProgram" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valProgram" TabIndex="-1" runat="server" ControlToValidate="tbProgram">&nbsp;*</asp:RequiredFieldValidator>
  </p>
</div>
<div class="right-column">
  <p>
    <label for="tbProject">Project:</label>
    <asp:TextBox ID="tbProject" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valProject" TabIndex="-1" runat="server" ControlToValidate="tbProject">&nbsp;*</asp:RequiredFieldValidator>
  </p>
  <p>
    <label for="tbSpeedKey">Speed Key:</label>
    <asp:TextBox ID="tbSpeedKey" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valSpeedKey" TabIndex="-1" runat="server" ControlToValidate="tbSpeedKey">&nbsp;*</asp:RequiredFieldValidator>
  </p>
  <p>
    <label for="tbAward">Award:</label>
    <asp:TextBox ID="tbAward" runat="server" MaxLength="255" />
    <asp:RequiredFieldValidator ID="valAward" TabIndex="-1" runat="server" ControlToValidate="tbAward">&nbsp;*</asp:RequiredFieldValidator>
  </p>
</div>​
<div>
  <p>
    <label class="textarea-label" for="taProjectDesc">Project Description:</label>
  </p>
  <p>
    <asp:TextBox ID="taProjectDesc" runat="server" TextMode="MultiLine" />
    <asp:RequiredFieldValidator ID="valProjectDesc" TabIndex="-1" runat="server" ControlToValidate="taProjectDesc">&nbsp;*</asp:RequiredFieldValidator>
  <p>
</div>

Andere Tipps

Es gibt viele Möglichkeiten, dies zu tun - ich habe sie gegeben eine sehr abgespeckte Lösung unten. Es gibt eine Reihe von Optimierungen Sie tun müssen, um diese Cross-Browser-konform zu machen, verbessern Abstand, etc., aber diese sollten Sie die grundlegende Idee geben, wie Sie die Elemente aus legen kann:

<html>
    <head>
        <style>
            body {
                font-family:arial;
                font-size: 0.8em;
            }
            div.form p {
                clear: both;
            }
            div.form label {
                float: left;
                width: 10em;
            }
            div.form input[type="text"] {
                float: left;
                width: 16em;
                font-family:arial;
                font-size: 1.0em;
            }
            div.form textarea {
                width: 52em;
                font-family:arial;
                font-size: 1.0em;
            }
        </style>
    </head>
    <body>
        <div class="form">
            <p>
                <label>Department:</label>
                <input type=text>
                <label>Project:</label>
                <input type=text id=Project name=Project>
            </p>
            <p>
                <label>Fund:</label>
                <input type=text id=FundID name=FundID>
                <label>SpeedKey:</label>
                <input type=text id=SpeedKey name=SpeedKey>
            </p>
            <p>
                <label>Program:</label>
                <input type=text id=Program name=Program>
                <label>Award:</label>
                <input type=text id=Award name=Award>
            </p>
            <p>
                <label>Project Description:</label>
            </p>
            <p>
                <textarea id=ProjectDescription name=ProjectDescription></textarea>
            </p>
        </div>
    </body>
</html>

Ganz ähnlich wie die vorherigen Antworten, biete ich Ihnen:

CSS:

fieldset {
    clear: both;
    padding: 0.4em;
    border: 1px solid #000;
    width: 80%;
    min-width: 600px;
    margin: 1em auto;
    overflow: hidden;

}

ul {
    width: 48%;
    border: 1px solid #ccc;
    margin: 0.5em;
    }

ul:nth-child(odd) {
    float: right;
    }

label {
    display: inline-block;
    width: 30%;
    text-align: right;
}

html:

<fieldset>
<ul>
    <li><label for="fieldOne">Field One:</label> <input type="text" id="fieldOne" name="fieldOne" /></li>
    <li><label for="fieldTwo">Field Two:</label> <input type="text" id="fieldTwo" name="fieldTwo" /></li>
</ul>

<ul>
    <li><label for="fieldThree">Field Three:</label> <input type="text" id="fieldThree" name="fieldThree" /></li>
    <li><label for="fieldFour">Field Four:</label> <input type="text" id="fieldFour" name="fieldFour" /></li>
</ul>
</fieldset>

<fieldset>
    <input type="submit" value="Submit" />
</fieldset>

</form>

Demo unter: http://www.davidrhysthomas.co.uk/so/formCols.html

Diese Lösung macht Gebrauch CSS3 (die nth-child(odd)), die ihre Cross-Browser Freundlichkeit begrenzt (wenn auch Werke in Opera, Chrome, Safari und Firefox auf Ubuntu 10.04), so dass für IE Freundlichkeit Sie explizit eine Klasse hinzufügen haben würden Name zu welcher Spalte (n) Sie wollten float: right.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top