我在Safari和台式机和iOS中都有这个非常奇怪的问题。这是当前情况的屏幕截图(同样,iOS和桌面Safari):
[这是应该发生的情况的图片(从Mac上的Chrome拍摄,但在Android Chrome和Firefox中也得到了确认):
这里是HTML:
<label class="radio-selections" for="maleSelection">Male
<input type="radio" value="male" id="maleSelection" name="gender">
</label>
这是CSS:
label.radio-selections {
width: 95%;
max-width: 400px;
height: 55px;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
color: var(--dark-gray);
transition: box-shadow 100ms;
border-radius: 6px;
input[type=radio] {
apperance: none;
-webkit-appearance: none;
height: inherit;
width: inherit;
max-width: inherit;
position: absolute;
border-radius: 6px;
z-index: -1;
background-color: transparent;
cursor: pointer;
}
&[for=femaleSelection] {
box-shadow: 0 1px 7px 3px rgba(147,64,169,.65);
&:active {
box-shadow: 0 1px 7px 1px rgba(147,64,169,.35);
}
input[type=radio]:checked {
background-color: rgba(147,64,169,.15)
}
}
&[for=maleSelection] {
box-shadow: 0 1px 7px 3px rgba(64,93,169,.65);
&:active {
box-shadow: 0 1px 7px 1px rgba(64,93,169,.35);
}
input[type=radio]:checked {
background-color: rgba(64,93,169,.15)
}
}
}
我认为应该很好理解我在这里缺少的东西,但是为什么iOS和Safari中的“选中”样式会偏移,而在所有其他浏览器中它会按需重叠呢?
这里也是一个非常简单的代码库,几乎概述了我要寻找的内容(显然适用于Chrome,但不适用于Safari):
当您制作任何元素position: relative;
时,请在父项上使用absolute
,以便其根据其父项进行调整。
label.radio-selections {
position: relative;
}
然后在子项上制作left right top
和bottom
至0
input[type=radio] {
left: 0;
right: 0;
bottom: 0;
top: 0;
}