1

フォームを使用して Web サイトを開発していますが、対象となるブラウザーの 1 つが残念ながら IE 6 および 7 です。スタイル設定されたフォーム要素の CSS および IE のレンダリングに問題があります。

私はテスト ケースを書きましたが、それはそのままです ( http://xistence.osnn.net/testcases/ie67fieldset/でオンラインでも入手できます):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
    <title>IE [6|7] Wha?</title>
    <style type="text/css">

    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, font, img, ins, kbd, q, s, samp,
    small, strike, strong, sub, sup, tt, var,
    dl, dt, dd, ol, ul, li,
    fieldset, form, label, legend,
    table, caption, tbody, tfoot, thead, tr, th, td {
        margin: 0;
        padding: 0;
        border: 0;
        outline: 0;
        font-weight: inherit;
        font-style: inherit;
        font-size: 100%;
        font-family: inherit;
        vertical-align: baseline;
    }

    /* remember to define focus styles! */
    :focus {
        outline: 0;
    }

    body {
        line-height: 1;
        color: black;
        background: white;
    }

    #req fieldset {
        border: 0;
        border-top: 1px solid #000;
        padding: 0em 1em 0em 1em;
    }

    #req legend + label {
        margin-top: 0.5em;
    }

    #req legend {
        font-size: 1.2em;
    }

    #req label {
        display: block;
        background: none;
    }

    #req input, #req textarea {
        position: relative;
        display: block;
        left: 200px;
        top: -1em;
        margin-bottom: -0.3em;
    }

    #req input[type="text"], #req textarea {
        width: 300px;
    }

    #req textarea {
        height: 3.6em;
    }

    #req input[type="text"], #req textarea {
        border: 1px solid #0a0;
    }

    #req label.required + input[type="text"], #req label.required + textarea {
        border: 1px solid #a00;
    }

    #req input[type="submit"] {
        position: relative;
        top: 0;
        margin: 0;
        left: 200px;
        margin-top: 0.5em;
    }

    #req input[type="hidden"] {
        display: none;
    }
    </style>
</head>
<body>
<form id="req">
    <fieldset>
        <legend>Contact Information</legend>
        <label for="name" class="required">Name: </label> <input type="text" id="name" name="name"></input>
        <label for="phone" class="required">Phone Number: </label> <input type="text" id="phone" name="phone"></input>
        <label for="email">Email: </label> <input type="text" id="email" name="email"></input>
    </fieldset>
    <fieldset>
        <legend>Personal Info</legend>
        <label for="sports">Sports:</label> <input type="text" id="sports" name="sports"></input>
        <label for="spentonline">Hours spent online: </label> <input type="text" id="spentonline" name="spentonline"></input>
        <label for="moreinfo">Tell us about yourself: </label> <textarea id="moreinfo" name="moreinfo"></textarea>
    </fieldset>
    <fieldset>
        <input type="submit" value="Submit" />
    </fieldset>
</form>
</body>
</html>

また、IE 7 のスクリーン ショットと IE 8 のスクリーン ショットを 2 枚撮りました。

IE [6|7]: ここに画像の説明を入力

IE8:

ここに画像の説明を入力

誰もこのバグを見たことがありますか? どこで私は間違えましたか?入力ボックスに余分な行を入れずに IE 6/7 で動作させるには、何を削除する必要がありますか。フィールドセットでボーダートップがなくなると、余分な行が削除されますが、視覚的な分離全体が削除されるため、これは解決策ではありません。


固定されています。textarea と input[type="text"] の margin-bottom により、IE 6/7 でレンダリング バグが発生していました。それらを削除し、すべてが順調です。ページ上の要素間の余分なスペースを処理できると思います!

4

1 に答える 1

1

私はあなたが使用するのを見ます

input[type="submit"]

これがIE6でサポートされているとは思えません...さまざまな種類の入力を区別するために、すべてのフィールドにクラスを配置することをお勧めします。

編集

margin-bottom: -0.3em;

現在、IEで問題が発生することが多い負のマージンを使用しているため、削除する必要があります

于 2009-05-06T18:17:03.147 に答える