html - 如何从增加高度的相对位置中删除额外的空间?
问题描述
我有一个悬停,允许用户从显示/隐藏更改密码类型输入:
<label for="Password">Create a Password</label>
@Html.PasswordFor(m => m.Password)
<span class="input-hover password-show">SHOW</span>
<div class="validation-rules"></div>
<label for="ConfirmPassword">Confirm Password</label>
@Html.PasswordFor(m => m.ConfirmPassword);
<span class="input-hover confirmpassword-show">SHOW</span>
input + .input-hover{
position: relative;
display: inline-block;
height: 46px;
width: 50px;
top: -46px;
left: calc(100% - 70px);
line-height: 46px;
padding: 0;
margin: 0;
cursor: pointer;
color: #B2B4B2;
font-weight: bold;
text-align: right;
z-index: 10;
}
这会将 46px 添加到流中。所以我的输入和下一个标签之间的元素有 46px 的高度......即使我的元素设置为 top: -46px;
我不能使用 absolute,因为我希望它与当前输入相关,而不是与祖父容器相关(必须响应并允许添加/删除 DOM 元素......验证规则。)。
边距:-46px;将高度拉回到正常水平......有点。它似乎弄乱了左计算。
我可以调整它使这个词适合,但是为什么当你设置边距时它会向左移动:-46px; ? 这没有任何意义。知道如何正确执行此操作吗?
这是一个小提琴,看看我有什么:FIDDLE
谢谢!
解决方案
我认为当您设置时,margin: -46px
您正在设置所有边距。所以你得到了margin-top: -46px
你想要的,但你也得到了margin-left: -46px
。
当我只设置下边距时,它对我有用:
margin: 0 0 -46px 0;
或者:margin-left: -46px
PS。我认为您还获得了额外的空间,因为您的显示是内联块。如果将其设置为display: block
with margin-top: -46px;
,则可以使其与 div 的底部齐平。
推荐阅读
- asp.net - 如何使用 Ajax 发送到控制器?
- javascript - 我们如何在这段代码中集成一个“有效的电子邮件”系统?
- javascript - @microsoft/teams-js 移动客户端中的视频录制
- git - 如何同步另一台电脑的未提交代码?
- mongodb - Mongoose 从数组中删除一个简单的值
- apache-spark - pyspark中的累积百分位数计算
- xamarin.forms - 在 Xamarin 表单中,将文本放在在 android 中工作但不能按预期工作 ios 的视图中
- javascript - 选择日期选择器的年份
- uikit - UIImagePickerViewController 编辑问题
- javascript - 如何通过单击 puppeteer 打开和控制新选项卡 TARGET _BLANK