如何在选中状态下保留 CSS 变换比例
How to retain CSS transform scale on checked state
我正在寻找一种仅 CSS 的简单方法来创建 :hover
scale
转换,以根据 :checked
状态保留其规模。这就是我所追求的:
目前,我示例中的 itemB 在 :hover
上有一个 scale(2)
,工作正常。我的问题是,当项目为 checked
时,我似乎无法想出一个 CSS-only 保留比例的方法(这些图标由隐藏的单选按钮)。
这是我正在使用的 HTML 结构:
...
<ul>
<li>
<input type="radio" id="itemA" />
<label class="icon" for="itemA">
<img src="..." />
</label>
</li>
<li>
<input type="radio" id="itemB" />
<label class="icon" for="itemB">
<img src="..." />
</label>
</li>
<li>
<input type="radio" id="itemC" />
<label class="icon" for="itemC">
<img src="..." />
</label>
</li>
</ul>
...
和我的 CSS:
li input[type="radio"] + label img {
width: 50px;
margin: 50% auto;
transition: all .3s;
}
li:hover input[type="radio"] + label img {
transform: scale(2);
}
我认为最简单的方法是为选中状态添加另一个选择器:
li input[type="radio"]:checked + label img {
transform: scale(2);
}
但这似乎不起作用,我不明白为什么。有什么想法吗?请不要 jQuery 或其他 JS 建议。我试图仅使用 CSS3 来完成这个简单的效果。感谢您的帮助。
你在第二个块中的比例也是 2。我用 li input[type="radio"]:checked + label img 的比例 1 试过了,它成功了。
选中状态
将选中状态添加到输入元素应该保持图像的比例。
检查代码:
li input[type="radio"]:checked + label img {
transform: scale(2);
transform-origin: center left;
}
示例fiddle:
ul {} li input[type="radio"] + label img {
width: 50px;
transition: all .3s;
}
li:hover input[type="radio"] + label img {
transform: scale(2);
transform-origin: center left;
}
li input[type="radio"]:checked + label img {
transform: scale(2);
transform-origin: center left;
}
<ul>
<li>
<input type="radio" id="itemA" />
<label class="icon" for="itemA">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
<li>
<input type="radio" id="itemB" />
<label class="icon" for="itemB">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
<li>
<input type="radio" id="itemC" />
<label class="icon" for="itemC">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
</ul>
我正在寻找一种仅 CSS 的简单方法来创建 :hover
scale
转换,以根据 :checked
状态保留其规模。这就是我所追求的:
目前,我示例中的 itemB 在 :hover
上有一个 scale(2)
,工作正常。我的问题是,当项目为 checked
时,我似乎无法想出一个 CSS-only 保留比例的方法(这些图标由隐藏的单选按钮)。
这是我正在使用的 HTML 结构:
...
<ul>
<li>
<input type="radio" id="itemA" />
<label class="icon" for="itemA">
<img src="..." />
</label>
</li>
<li>
<input type="radio" id="itemB" />
<label class="icon" for="itemB">
<img src="..." />
</label>
</li>
<li>
<input type="radio" id="itemC" />
<label class="icon" for="itemC">
<img src="..." />
</label>
</li>
</ul>
...
和我的 CSS:
li input[type="radio"] + label img {
width: 50px;
margin: 50% auto;
transition: all .3s;
}
li:hover input[type="radio"] + label img {
transform: scale(2);
}
我认为最简单的方法是为选中状态添加另一个选择器:
li input[type="radio"]:checked + label img {
transform: scale(2);
}
但这似乎不起作用,我不明白为什么。有什么想法吗?请不要 jQuery 或其他 JS 建议。我试图仅使用 CSS3 来完成这个简单的效果。感谢您的帮助。
你在第二个块中的比例也是 2。我用 li input[type="radio"]:checked + label img 的比例 1 试过了,它成功了。
选中状态
将选中状态添加到输入元素应该保持图像的比例。
检查代码:
li input[type="radio"]:checked + label img {
transform: scale(2);
transform-origin: center left;
}
示例fiddle:
ul {} li input[type="radio"] + label img {
width: 50px;
transition: all .3s;
}
li:hover input[type="radio"] + label img {
transform: scale(2);
transform-origin: center left;
}
li input[type="radio"]:checked + label img {
transform: scale(2);
transform-origin: center left;
}
<ul>
<li>
<input type="radio" id="itemA" />
<label class="icon" for="itemA">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
<li>
<input type="radio" id="itemB" />
<label class="icon" for="itemB">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
<li>
<input type="radio" id="itemC" />
<label class="icon" for="itemC">
<img src="http://www.lorempixel.com/50/50" />
</label>
</li>
</ul>