我有一个tile
,类型为input
的{{1}},在这两个元素下面有一个radio
和一个label
文字。 span
和input
与label
连接。它们应该彼此相邻。 id
应该在span
的正下方。到目前为止,该方法有效,并且我的布局匹配。如果我在label
或click
上input
,则label
得到radio
。现在,我想做的是,通过单击selected
来select
radio
,在任何地方都可以。因此,每次点击tile
都应选择我的tile
。我想用纯radio
解决这个问题,如果可能的话,不使用HTML/CSS
。我唯一的想法是将JS
赋予position: relative;
,将radio
和position: absolute;
赋予radio__wrap
并使它们具有label
width/height
中的100%
,因此我可以将label
覆盖整个tile
。这个想法使我的布局崩溃了(很难正确放置span
)。有没有一种方法可以通过使用纯HTML/CSS
来解决。以下是我的代码段:
.tile {
border: 1px solid transparent;
border-radius: 10px;
box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.2);
cursor: pointer;
margin-bottom: 30px;
}
.tile__wrap {
position: relative;
}
.radio {
padding: 24px 16px 16px;
display: flex;
flex-direction: column;
position: relative;
}
.radio__wrap {
margin-bottom: 10px;
}
.radio__label {
background-color: lightblue;
position: relative;
}
.radio__text {
padding-left: 24px;
display: block;
}
.tile--clickable .radio__wrap {
position: relative;
width: 100%;
height: 100%;
z-index: 5;
}
.tile--clickable .radio__label {
width: 100%;
height: 100%;
}
<div class="tile">
<div class="tile__wrap">
<div class="radio">
<div class="radio__wrap">
<input class="radio__input" id="radio01" type="radio">
<label class="radio__label" for="radio01">I'm the label</label>
</div>
<span class="radio__text">I'm the text</span>
</div>
</div>
</div>