【问题标题】:Box shadow CSS with a <fieldset>. Firefox vs Chrome带有 <fieldset> 的框阴影 CSS。火狐与 Chrome
【发布时间】:2011-11-09 11:55:00
【问题描述】:

我在 Firefox 上遇到了 CSS 问题。在 Chrome 上完美呈现的字段集:

在 Firefox 中显示如下:

我发现从 CSS 顶部删除 boxshadow,字段集边框上方,在 Firefox 上消失了,但是我没有阴影。怎么能把它们都一样?

代码如下:

<div id="wrapper" style="position: relative;">
        <fieldset style="width: 17em;" class="loginField"><legend align="right">Log in</legend>
        <table cellspacing="0" cellpadding="0" class="loginVerticalPanel" style="height: auto;">
            <tbody>
                <tr>
                    <td align="left" style="vertical-align: top;"><div class="gwt-Label" style="height: auto; width: 100%;">Username:</div></td>
                </tr>
                <tr>
                    <td align="left" style="vertical-align: top;"><input type="text" class="gwt-TextBox" style="height: auto; width: 100%;"></td>
                </tr>
                <tr>
                    <td align="left" style="vertical-align: top;"><div class="gwt-Label" style="height: auto; width: 100%;">Password:</div></td>
                </tr>
                <tr>
                    <td align="left" style="vertical-align: top;"><input type="password" class="gwt-PasswordTextBox" style="height: auto; width: 100%;"></td>
                </tr>
                <tr>
                    <td align="left" style="vertical-align: top;">
                        <table cellspacing="0" cellpadding="0" style="width: 100%;">
                            <tbody>
                                <tr>
                                    <td align="left" style="vertical-align: top;">
                                        <img class="gwt-Image" title="Loading" style="display: none;" alt="Loading" src="assets/square_circles.gif">
                                    </td>
                                    <td align="right" style="vertical-align: top;">
                                        <button type="button" class="loginButton" style="height: 25px;">&gt;&gt;&nbsp;&nbsp;&nbsp;GO</button>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </td>
                </tr>
                <tr>
                    <td align="left" style="vertical-align: top;"><div class="loginWarning" style="display: none; width: 100%;"></div></td>
                </tr>
            </tbody>
        </table>
        </fieldset>
    </div>

还有 CSS:

.loginButton {
    background: -moz-linear-gradient(90deg, #0459B7, #08ADFF) repeat scroll 0 0 transparent;
    background: -webkit-linear-gradient(90deg, #0459B7, #08ADFF) repeat scroll 0 0 transparent;
    border: 1px solid #093C75;
    border-radius: 3px 3px 3px 3px;
    box-shadow: 0 1px 0 #FFFFFF;
    color: #FFFFFF;
    cursor: pointer;
    font-family: Arial,sans-serif;
    font-size: 12px;
    font-weight: bold;
    margin-right: -1em;
    margin-top: 1em;
    padding: 5px 10px;
    text-decoration: none;
    text-shadow: 0 1px 1px #333333;
    text-transform: uppercase;

}
.loginButton:hover {
            background: -moz-linear-gradient(90deg, #067CD3, #0BCDFF) repeat scroll 0 0 transparent;
            background: -webkit-linear-gradient(90deg, #067CD3, #0BCDFF) repeat scroll 0 0 transparent;
        border-color: #093C75;
        text-decoration: none;
}
.loginButton:active {
    background: -moz-linear-gradient(90deg, #0BCDFF, #067CD3) repeat scroll 0 0 transparent;
    background: -webkit-linear-gradient(90deg, #0BCDFF, #067CD3) repeat scroll 0 0 transparent;
    border-color: #093C75;
    outline: medium none;;  
}
.loginWarning {
    padding-top: 0.2em;
    font-family: 'Aldrich', sans-serif;
    color:#FE2E2E;
    font-size: 12px;
    font-weight: 400;
}
.loginField {
    padding-left: 2em;
    padding-right: 2em;
    padding-top: 1em;
    border: 0;
    background: -webkit-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
    background: -moz-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
    border: 1px solid #AAAAAA;
        border-radius: 10px 10px 10px 10px;
            box-shadow: 0 0 15px #AAAAAA;
        margin: 60px auto 0;
        padding: 20px;
}
.loginField legend {
    text-align: right;
    background: -webkit-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
    background: -moz-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
    border-radius: 10px 10px 10px 10px;
            box-shadow: 0 0 15px #AAAAAA;
    padding-right: 1em;
    padding-left: 1em:
}
.loginField img {
    max-width: 24px;
}

.loginVerticalPanel {
    margin: 0 auto 0 auto;      
}
.loginVerticalPanel input {
    background: -webkit-linear-gradient(90deg, #FFFFFF, #EEEEEE) repeat scroll 0 0 transparent;
    background: -moz-linear-gradient(90deg, #FFFFFF, #EEEEEE) repeat scroll 0 0 transparent;
    border: 1px solid #AAAAAA;
    border-radius: 3px 3px 3px 3px;
    box-shadow: 0 0 3px #AAAAAA;
    padding: 5px;
}

【问题讨论】:

    标签: html css firefox google-chrome


    【解决方案1】:

    顺便说一句,非常不错!绝对是一个未来帮助类型的问题。

    在快速运行中,我发现了一个非常替代的修复方法:

    .loginField legend {
        text-align: right;
        background: -webkit-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
        background: -moz-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
        border-radius: 10px 10px 10px 10px;
        -webkit-box-shadow: 0 0 15px #AAAAAA;
        -moz-box-shadow: 0 0 15px #AAAAAA;
        box-shadow: 0 0 15px #AAAAAA;
        padding-right: 1em;
        padding-left: 1em;
        position: absolute;
        margin: -30px 0px 0px 200px;
    }
    

    还有活生生的例子:http://jsfiddle.net/xDE4x/1/

    我修复了您的一些 CSS 语法(: 而不是 ; 等)。我还添加了 CSS3 语法的 -moz--webkit- 版本。

    我会继续挖掘,但这是第一种方法。它效果很好,应该比您的 CSS3 功能更兼容浏览器。但是,它会取消设置图例位置,您需要将其设置为负边距。

    【讨论】:

    • TL;DR 将图例设置为 position:absolute,并应用负上边距以将其从原处向上凸出。
    【解决方案2】:

    我所做的是将图例的边距顶部设置为负值,以便它看起来与字段集的高度为零;然后我在相反方向应用负边距以抵消第一个负边距。然后,我向字段集添加了相等值的填充,以使它们像往常一样定位。

    fieldset  
    {
        padding-top: 14px;
    }
    
    fieldset legend  
    {    
        margin-top: -14px;
        margin-bottom: -14px;
    }
    

    【讨论】:

      【解决方案3】:

      或者,您也可以“浮动”图例,维护布局不需要太多工作,特别是当您有多个字段集时。在提问者的情况下,它将是:

      .loginField legend {
          float: right;
          margin-top: -30px;
          background: -webkit-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
          background: -moz-linear-gradient(90deg, #CCCCCC, #FFFFFF) repeat scroll 0 0 transparent;
          border-radius: 10px 10px 10px 10px;
          box-shadow: 0 0 15px #AAAAAA;
          padding-right: 1em;
          padding-left: 1em;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-11-29
        • 2018-08-05
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多