【问题标题】:How to use CSS to style Textbox and Label in ASP.NET如何在 ASP.NET 中使用 CSS 设置文本框和标签的样式
【发布时间】:2015-03-07 02:10:31
【问题描述】:

我想在 ASP.NET ( 和 ) 中设置文本框和标签的样式,我有一个 CSS 样式,它适用于普通输入和标签,但不适用于 ASP 文本框和标签。 首先是 CSS 样式:

form h1 {
color: #ff4a56;
font-weight: 100;
letter-spacing: 0.01em;
margin-left: 15px;
margin-bottom: 35px;
text-transform: uppercase;
}

form button {
margin-top: 35px;
background-color: white;
border: 1px solid #ff4a56;
line-height: 0;
font-size: 17px;
display: inline-block;
box-sizing: border-box;
padding: 20px 15px;
border-radius: 60px;
color: #ff4a56;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
}

form button:hover, form button:focus {
    color: white;
    background-color: #ff4a56;
}

form .question {
position: relative;
padding: 10px 0;
}

form .question:first-of-type {
    padding-top: 0;
}

form .question:last-of-type {
    padding-bottom: 0;
}

form .question label {
    transform-origin: left center;
    color: #ff4a56;
    font-weight: 100;
    letter-spacing: 0.01em;
    font-size: 17px;
    box-sizing: border-box;
    padding: 10px 15px;
    display: block;
    position: absolute;
    margin-top: -40px;
    z-index: 2;
    pointer-events: none;
}

 form .question input[type="text"] {
    -webkit-appearance: none;
    background-color: none;
    border: 1px solid #ff4a56;
    line-height: 0;
    font-size: 17px;
    width: 100%;
    display: block;
    box-sizing: border-box;
    padding: 10px 15px;
    border-radius: 60px;
    color: #ff4a56;
    font-weight: 100;
    letter-spacing: 0.01em;
    position: relative;
    z-index: 1;
}

    form .question input[type="text"]:focus {
        outline: none;
        background: #ff4a56;
        color: white;
        margin-top: 30px;
    }

    form .question input[type="text"]:valid {
        margin-top: 30px;
    }

    form .question input[type="text"]:focus ~ label {
        -moz-transform: translate(0, -35px);
        -ms-transform: translate(0, -35px);
        -webkit-transform: translate(0, -35px);
        transform: translate(0, -35px);
    }

    form .question input[type="text"]:valid ~ label {
        text-transform: uppercase;
        font-style: italic;
        -moz-transform: translate(5px, -35px) scale(0.6);
        -ms-transform: translate(5px, -35px) scale(0.6);
        -webkit-transform: translate(5px, -35px) scale(0.6);
        transform: translate(5px, -35px) scale(0.6);
    }

  form .question input[type="password"] {
    -webkit-appearance: none;
    background-color: none;
    border: 1px solid #ff4a56;
    line-height: 0;
    font-size: 17px;
    width: 100%;
    display: block;
    box-sizing: border-box;
    padding: 10px 15px;
    border-radius: 60px;
    color: #ff4a56;
    font-weight: 100;
    letter-spacing: 0.01em;
    position: relative;
    z-index: 1;
  }

    form .question input[type="password"]:focus {
        outline: none;
        background: #ff4a56;
        color: white;
        margin-top: 30px;
    }

    form .question input[type="password"]:valid {
        margin-top: 30px;
    }

    form .question input[type="password"]:focus ~ label {
        -moz-transform: translate(0, -35px);
        -ms-transform: translate(0, -35px);
        -webkit-transform: translate(0, -35px);
        transform: translate(0, -35px);
    }

    form .question input[type="password"]:valid ~ label {
        text-transform: uppercase;
        font-style: italic;
        -moz-transform: translate(5px, -35px) scale(0.6);
        -ms-transform: translate(5px, -35px) scale(0.6);
        -webkit-transform: translate(5px, -35px) scale(0.6);
        transform: translate(5px, -35px) scale(0.6);
    }

当我用这段代码尝试这种风格时,它工作得很好:

   <div class="question">
        <input type="text" required="">
        <label>Last Name</label>
    </div>
    <div class="question">
        <input type="text" required="">
        <label>Email Address</label>
    </div>

但是当我尝试使用此代码时,转换将不起作用:

<li class="question">
                        <asp:Label runat="server" AssociatedControlID="UserName">User name</asp:Label>
                        <asp:TextBox runat="server" ID="UserName" />
                        <asp:RequiredFieldValidator runat="server" ControlToValidate="UserName" CssClass="field-validation-error" ErrorMessage="The user name field is required." />
                    </li>
                    <li class="question">
                        <asp:Label runat="server" AssociatedControlID="Password">Password</asp:Label>
                        <asp:TextBox runat="server" ID="Password" TextMode="Password" />
                        <asp:RequiredFieldValidator runat="server" ControlToValidate="Password" CssClass="field-validation-error" ErrorMessage="The password field is required." />
                    </li>

【问题讨论】:

  • 您的第一个代码大约是两个分开的
    但第二个代码,您的控件位于列表项
  • 内?不一样的人
  • 相同的东西,过渡不起作用
  • 标签: css asp.net


    【解决方案1】:

    您将 CssClass="field-validation-error" 设置为此类,但在您的 CSS 中您没有名为 ".field-validation-error" 的类。

    你可以给你的标签一个CssClass,叫做"label"

    像这样:CssClass="label"

    然后在您的 CSS 中,您可以使用您在 CSS 中定义的类来设置标签的样式,如下所示。

    .labels
    {
      color: grey;
      width: 150px;
      display:inline-block;
    }
    

    你可以对你的文本框、错误信息等做同样的事情,方法是给元素一个定义的CssClass。这样做也可以更容易阅读和理解,并在以后进行更改。

    【讨论】:

    • 我只是没有在我的代码中显示类字段验证错误,无论如何我用 CssClass="question" 替换它并且仍然有同样的问题
    【解决方案2】:

    去掉,你会发现和第一个代码一样的结果,因为它会生成一个隐藏的 html 代码。

     <div class="question">
     <asp:Label runat="server" AssociatedControlID="UserName">User name</asp:Label>
     <asp:TextBox runat="server" ID="UserName" />           
    </div>
    <div class="question">
    <asp:Label runat="server" AssociatedControlID="Password">Password</asp:Label>
    <asp:TextBox runat="server" ID="Password" TextMode="Password" />
     </div>
    

    【讨论】:

    • 我应该删除什么?
    • 感谢您的回复,但我试过了,但总是同样的问题,转换不起作用
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签