输入内的位置跨度 - 不适用于占位符

发布于 2024-12-05 13:21:59 字数 1468 浏览 0 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩一世无双 2024-12-12 13:21:59

创建一个容器,并将 position CSS 属性设置为 relative,以便任何内部绝对定位元素都是相对于容器的。还要添加 display:inline-block,以便容器缩小到所需的最小尺寸(=输入字段的尺寸)。

然后,将 padding-right:42px 添加到密码字段,以便按钮不会与字段内容重叠。最后,添加 position:absolute; right:0; 到锚点,以便它位于输入字段的右侧。

小提琴: http://jsfiddle.net/LyfTJ/1/

HTML:

<div class="zpass">
    <input type="password" name="zpass" />
</div>

JS:

$(document).ready(function(){
    $(".zpass").each(function(){
        $(this).append("<a>Show</a>");
        var zpass = $("input", this)[0];
        $("a", this)[0].href = "javascript:;";
        $("a", this).click(function(){
            if(zpass.type == "password"){
                zpass.type = "text";
                this.innerHTML = "Hide";
            } else {
                zpass.type = "password";
                this.innerHTML = "Show";
            }
        });
    });
});

CSS:

.zpass {
    position: relative;
    display: inline-block;
}
.zpass > input {
    padding: 8px 42px 8px 8px;
    width: 250px;
    border: 1px solid #ccc;
}
.zpass > a {
    position: absolute;
    right: 0px;
    padding: 9px 4px 8px;
    font-size: .85em;
    color: #a5a5a5;
    background: #eee;
    border: 1px solid #ccc;
    border-left: 0;
    text-decoration: none;
    cursor: pointer;
    text-align: center;
    width: 33px;
}
.zpass > a:hover {
    background-color: #ccc;
}

Create a container, and set the position CSS attribute to relative, so that any inside absolutely-positioned element is relative to the container. Also add display:inline-block, so that the container shrinks to the minimum required size (=the size of the input field).

Then, add a padding-right:42px to the password field, so that the button does not overlap the contents of the field. Finally, add position:absolute; right:0; to the anchor, so that it's positioned at the right side of the input field.

Fiddle: http://jsfiddle.net/LyfTJ/1/

HTML:

<div class="zpass">
    <input type="password" name="zpass" />
</div>

JS:

$(document).ready(function(){
    $(".zpass").each(function(){
        $(this).append("<a>Show</a>");
        var zpass = $("input", this)[0];
        $("a", this)[0].href = "javascript:;";
        $("a", this).click(function(){
            if(zpass.type == "password"){
                zpass.type = "text";
                this.innerHTML = "Hide";
            } else {
                zpass.type = "password";
                this.innerHTML = "Show";
            }
        });
    });
});

CSS:

.zpass {
    position: relative;
    display: inline-block;
}
.zpass > input {
    padding: 8px 42px 8px 8px;
    width: 250px;
    border: 1px solid #ccc;
}
.zpass > a {
    position: absolute;
    right: 0px;
    padding: 9px 4px 8px;
    font-size: .85em;
    color: #a5a5a5;
    background: #eee;
    border: 1px solid #ccc;
    border-left: 0;
    text-decoration: none;
    cursor: pointer;
    text-align: center;
    width: 33px;
}
.zpass > a:hover {
    background-color: #ccc;
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文