0

I'm trying to get a label to line up with a div vertically. I think a picture describes what I'm trying to do; the way it's rendered is how it looks. The MS Paint-style corrections in blue are what I'd like it to be. I have included the HTML and CSS below and removed as much extraneous code as I can to get to just the problem.

How can I get that label to go to the top of the type options?

Thanks!

Screenshot

<!DOCTYPE html>
<html>
    <head>
        <title>Title</title>
        <style type="text/css">
        /* <![CDATA[ */

/* from reset.css */

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}


/* from Application.css */

html {
        min-height: 100%;        
        background-color: White;
        color: Black;
    }

    body {
            margin: 0;
            margin-left: auto;
            margin-right: auto;
            color: #383838;
            font-family: arial, helvetica, verdana, sans-serif;
            font-size: 0.8em;
            background-color: transparent;
        }

        input, textarea, select { 
                font-family: inherit;
                font-size: inherit
            }

        div#EverythingDiv {
                width: 960px;
                margin-left: auto;
                margin-right: auto;
                background: #FFF;
            }    

            div.MainContent {
                    margin: 0px auto 0px auto;
                    padding: 0;
                    min-height: 425px;

                    text-align: left;
                    clear: both;
                }

/* from MyPage.css */

div.MainContent div.BasicInformationField {

    }

    div.MainContent div.BasicInformationField label {
            display: inline-block;
            width: 155px;
            vertical-align: baseline;
        }

    div.MainContent div.BasicInformationField label.RadioLabel {
            display: block;
            font-weight: normal;
            width: auto;
        }

    div.MainContent div.BasicInformationField textarea {
            vertical-align: baseline;
            font-family: inherit;
            font-size: inherit;
        }

    div.MainContent div.BasicInformationField textarea#AddressTextArea {
            height: 3.3em;
            width: 250px;
        }

    div.MainContent div.BasicInformationField div#TypeOptionsDiv {
            height: 3.3em;
            width: 250px;
            vertical-align: baseline;
            font-family: inherit;
            font-size: inherit;
            display: inline-block;
        }

    div.MainContent div.BasicInformationField input.WebSite {
            width: 250px;
        }

        /* ]]> */
        </style>
    </head>
    <body>
        <div id="EverythingDiv">
            <h1 id="PageTitleH1">Title</h1>

            <div class="MainContent">
                <!-- view -->


<form action="MyPage" method="post">
<div class="validation-summary-valid" data-valmsg-summary="true"><ul><li style="display:none"></li>
</ul></div>

<h2>Basic Information</h2>
<div class="BasicInformationField">
    <label for="WebSiteTextBox">Web Site:</label> <input type="text" id="WebSiteTextBox" class="WebSite"/>
</div>
<div class="BasicInformationField">
    <label for="AddressTextArea">Address:</label> <textarea id="AddressTextArea"></textarea>
</div>
<div class="BasicInformationField">
    <label for="PhoneNumberTextBox">Phone Number:</label> <input type="text" id="PhoneNumberTextBox" class="WebSite"/>
</div>
<div class="BasicInformationField">
    <label>Type:</label>
    <div id="TypeOptionsDiv">
        <label class="RadioLabel"><input type="radio" name="Type"/>Type 1 - Lorem ipsum dolor sit amet, consectetur adipiscing elit.</label>
        <label class="RadioLabel"><input type="radio" name="Type"/>Type 2 - Curabitur non odio hendrerit, hendrerit ante quis, rhoncus neque. Nam ac nisi non lorem accumsan dictum. </label>
        <label class="RadioLabel"><input type="radio" name="Type"/>Type 3 - Morbi volutpat at eros ut dictum. Nam non arcu ornare, sodales eros nec, semper ante. Nunc tempor augue a est eleifend suscipit. Nam vel ornare leo.</label>
        <label class="RadioLabel"><input type="radio" name="Type"/>Type 4 - Nam vel ornare leo.</label>
    </div>
</div></form>
                <!-- weiv -->
                <div class="Clear"></div>
            </div>
        </div>
    </body>
</html>
4

2 回答 2

3

你可以改变这个:

div.MainContent div.BasicInformationField label {
        vertical-align: baseline;
    }

对此:

div.MainContent div.BasicInformationField label {
        vertical-align: top;
    }
于 2013-09-25T19:07:05.427 回答
0

所以我最终通过浮动所有剩下的东西,让标签都清晰,并调整边距以使基线匹配来完成此操作。感谢您的对话和链接。

jsfiddle.net/6Zjqh/

<!DOCTYPE html>
<html>
    <head>
        <title>Title</title>
        <style type="text/css">
        /* <![CDATA[ */

/* from reset.css */

/* http://meyerweb.com/eric/tools/css/reset/ 
   v2.0 | 20110126
   License: none (public domain)
*/

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed, 
figure, figcaption, footer, header, hgroup, 
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}
/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure, 
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}
table {
    border-collapse: collapse;
    border-spacing: 0;
}


/* from Application.css */

html {
        min-height: 100%;        
        background-color: White;
        color: Black;
    }

    body {
            margin: 0;
            margin-left: auto;
            margin-right: auto;
            color: #383838;
            font-family: arial, helvetica, verdana, sans-serif;
            font-size: 0.8em;
            background-color: transparent;
        }

        input, textarea, select { 
                font-family: inherit;
                font-size: inherit
            }

        div#EverythingDiv {
                width: 960px;
                margin-left: auto;
                margin-right: auto;
                background: #FFF;
            }    

            div.MainContent {
                    margin: 0px auto 0px auto;
                    padding: 0;
                    min-height: 425px;

                    text-align: left;
                    clear: both;
                }

/* from MyPage.css */

fieldset > label {
    float: left;
    display: block;
    width: 150px;
    clear: both;
    margin-top: 5px;
}

fieldset > input[type=text] {
    float: left;
    margin-top: 1px;
}

fieldset > textarea {
    float: left;
}

fieldset > div.Group {
    float: left;
    width: 300px;
    padding-top: 5px;
}

fieldset > div.Group input[type=radio] {
    /*margin: 0;
    vertical-align: top;
    padding: 0;*/
    margin-top: -3px;
    vertical-align: middle;
}

fieldset > div.Group > label {
    display: block;
    margin-bottom: 3px;
    line-height: 1.2em;
}
        /* ]]> */
        </style>
    </head>
    <body>
        <div id="EverythingDiv">
            <h1 id="PageTitleH1">Title</h1>

            <div class="MainContent">
                <!-- view -->
                <form action="MyPage" method="post">
                    <div class="validation-summary-valid" data-valmsg-summary="true"><ul><li style="display:none"></li>
                    </ul></div>

                    <fieldset>
                        <legend>Basic Information</legend>
                        <label for="WebSiteTextBox">Web Site:</label>
                        <input type="text" id="WebSiteTextBox" value="http://www.google.com/" />
                        <label for="AddressTextArea">Address:</label>
                        <textarea id="AddressTextArea" style="float: left; width: 350px; height: 4.4em;">Sample Address</textarea>
                        <label>Type</label>
                        <div class="Group">
                            <label class="RadioLabel"><input type="radio" name="Type"/>Type 1 - Lorem ipsum dolor sit amet, consectetur adipiscing elit.</label>
                            <label class="RadioLabel"><input type="radio" name="Type"/>Type 2 - Curabitur non odio hendrerit, hendrerit ante quis, rhoncus neque. Nam ac nisi non lorem accumsan dictum. </label>
                            <label class="RadioLabel"><input type="radio" name="Type"/>Type 3 - Morbi volutpat at eros ut dictum. Nam non arcu ornare, sodales eros nec, semper ante. Nunc tempor augue a est eleifend suscipit. Nam vel ornare leo.</label>
                            <label class="RadioLabel"><input type="radio" name="Type"/>Type 4 - Nam vel ornare leo.</label>
                        </div>
                    </fieldset>
                </form>
                <!-- weiv -->

                <div class="Clear"></div>
            </div>
        </div>
    </body>
</html>
于 2013-09-26T19:51:38.930 回答