单独使用 css 增加 div 尺寸
Increase a div size on click with css alone
我想在单击时增加 div 的宽度。我想单独使用 CSS 来实现这一点。可能吗?我通过悬停使它的宽度增加,但我需要在单击 div 时发生相同的效果。欢迎提出建议。
HTML
<div id="sample"></div>
CSS
#sample{
width:100px;
height:100px;
background:#000000;
}
我想在点击时将宽度更改为 200px。
一个可能的解决方案是向 div
添加一个 tabindex
属性,如下所示:
<div id="sample" tabindex="0"></div>
现在,您可以在 CSS:
中使用 :focus
#sample:focus {
width: 200px;
}
Here's a jsFiddle 实际展示。
不幸的是,当div
模糊时,宽度会变回去。 更新:查看 以获取保留焦点效果的巧妙解决方案。
如果您需要在 div
模糊后保留宽度,您可能不得不冒险进入 JavaScript/jQuery,或者只添加一个 onclick
属性。
<div id="sample" onclick="this.style.width = '200px';"></div>
这无法用 CSS 完成,您需要写几行 JavaScript 来存档。
如果你改变主意在这里写一些 JS 只是一种解决方案:
<script> // Creating a script tag to write JS
var sampleDiv = document.getElementById('sample'); // Grabbing the sample id
sampleDiv.addEventListener('click', function(e) { // When someone clicks on it
sampleDiv.style.width = "200px"; // The width increases to 200px
};
</script>
如果您想在点击时切换大小,您可以将 div
放在 label
中,放在不可见的 input
:
之后
label {
display: inline-block;
}
label input {
display: none;
}
input:checked ~ #sample {
width: 150px;
height: 150px;
}
#sample {
width: 100px;
height: 100px;
background: #000000;
}
<label>
<input type="checkbox">
<div id="sample"></div>
</label>
根据 Quantastical 接受的答案,如果您希望在 div
失去焦点后高度保持在新的大小,您可以通过一些涉及过渡的技巧来实现,而不需要 JavaScript.
正如 Quantastical 所说,首先给你的 div 一个 tabindex
。
<div id="sample" tabindex="0"></div>
请注意,如果值为 0
,则在使用键盘上的选项卡按钮遍历页面时,它将成为第一个获得焦点的项目,因此您可能需要增加该值,使其集中在正确的顺序。或者,如果您不希望通过 Tab 键将焦点转移到 div
时发生更改,请将 tabindex
值设置为 -1
。
则CSS如下:
#sample{
background:#000;
height:100px;
transition:height 0s 10000s;
}
#sample:focus{
height:200px;
outline:0;
transition:height 0s;
}
诀窍是在没有焦点的 div
上设置一个 transition
,延迟高得离谱,这样它就永远不会被执行。
我想在单击时增加 div 的宽度。我想单独使用 CSS 来实现这一点。可能吗?我通过悬停使它的宽度增加,但我需要在单击 div 时发生相同的效果。欢迎提出建议。
HTML
<div id="sample"></div>
CSS
#sample{
width:100px;
height:100px;
background:#000000;
}
我想在点击时将宽度更改为 200px。
一个可能的解决方案是向 div
添加一个 tabindex
属性,如下所示:
<div id="sample" tabindex="0"></div>
现在,您可以在 CSS:
中使用:focus
#sample:focus {
width: 200px;
}
Here's a jsFiddle 实际展示。
不幸的是,当div
模糊时,宽度会变回去。 更新:查看
如果您需要在 div
模糊后保留宽度,您可能不得不冒险进入 JavaScript/jQuery,或者只添加一个 onclick
属性。
<div id="sample" onclick="this.style.width = '200px';"></div>
这无法用 CSS 完成,您需要写几行 JavaScript 来存档。
如果你改变主意在这里写一些 JS 只是一种解决方案:
<script> // Creating a script tag to write JS
var sampleDiv = document.getElementById('sample'); // Grabbing the sample id
sampleDiv.addEventListener('click', function(e) { // When someone clicks on it
sampleDiv.style.width = "200px"; // The width increases to 200px
};
</script>
如果您想在点击时切换大小,您可以将 div
放在 label
中,放在不可见的 input
:
label {
display: inline-block;
}
label input {
display: none;
}
input:checked ~ #sample {
width: 150px;
height: 150px;
}
#sample {
width: 100px;
height: 100px;
background: #000000;
}
<label>
<input type="checkbox">
<div id="sample"></div>
</label>
根据 Quantastical 接受的答案,如果您希望在 div
失去焦点后高度保持在新的大小,您可以通过一些涉及过渡的技巧来实现,而不需要 JavaScript.
正如 Quantastical 所说,首先给你的 div 一个 tabindex
。
<div id="sample" tabindex="0"></div>
请注意,如果值为 0
,则在使用键盘上的选项卡按钮遍历页面时,它将成为第一个获得焦点的项目,因此您可能需要增加该值,使其集中在正确的顺序。或者,如果您不希望通过 Tab 键将焦点转移到 div
时发生更改,请将 tabindex
值设置为 -1
。
则CSS如下:
#sample{
background:#000;
height:100px;
transition:height 0s 10000s;
}
#sample:focus{
height:200px;
outline:0;
transition:height 0s;
}
诀窍是在没有焦点的 div
上设置一个 transition
,延迟高得离谱,这样它就永远不会被执行。