【问题标题】:Have a centered label fill the whole parent div [duplicate]有一个居中的标签填充整个父 div [重复]
【发布时间】:2021-01-23 04:22:36
【问题描述】:

我正在使用标签来选中/取消选中隐藏的复选框。我需要能够单击 div 中的任意位置,并且标签要在同一个 div 中居中。

这是我的html:

<div id="syllabe" class="container">
  <div id="syllabe-1" class="syllabe-container"><label for="toggle-syllabe-1">1</label></div>
  <div id="syllabe-2" class="syllabe-container"><label for="toggle-syllabe-2">2</label></div>
  <div id="syllabe-3" class="syllabe-container"><label for="toggle-syllabe-3">3</label></div>
  <div id="syllabe-4" class="syllabe-container"><label for="toggle-syllabe-4">4</label></div>
  <div id="syllabe-5" class="syllabe-container"><label for="toggle-syllabe-5">5</label></div>
</div>
<div id="syllabe2" class="container">
  blabla2
</div>
<div id="syllabe3" class="container">
  blabla3
</div>
<div id="syllabe4" class="container">
  <input type="checkbox" id="toggle-syllabe-1" onclick="toggle(this)">
</div>

CSS:

body {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  grid-template-rows: repeat(2, 1fr);
  grid-auto-flow: column;
}

#syllabe {
  display: grid;
  grid-auto-flow: column;
}

.container {
  border: 1px solid black;
}

.syllabe-container {
  font-size: xx-large;
  background-color: aqua;
  border: 1px solid red;
}
.syllabe-container-selected {
  font-size: xx-large;
  background-color: yellow;
  border: 1px solid black;
}

#syllabe3 {
  height: 200px;
}

label {
  display: block;
}

和 JS(使用 JQuery):

let toggle = (checkbox) => {
  if (checkbox.checked) {
    $("#syllabe-1").removeClass("syllabe-container").addClass("syllabe-container-selected")
  } else {
    $("#syllabe-1").removeClass("syllabe-container-selected").addClass("syllabe-container")
  }
}
$(function() {

})

结果:

点击1后:

我怎样才能使数字1居中(垂直和水平)并能够单击黄色区域内的任意位置以激活复选框?

在容器上使用margin: auto;会减少标签活动空间,并没有达到我想要的效果:

这是一个包含所有内容的jsFiddle

【问题讨论】:

  • 我无法理解您的问题更具体
  • 请让我知道更多关于您的问题。您可以在画图软件中绘制出想要的结果。
  • 图片还不够吗?
  • How could I center (vertically and horizontally) the number 1 and be able to click anywhere within the yellow zone to activate the checkbox ? 有什么不清楚的地方吗?

标签: html jquery css checkbox centering


【解决方案1】:

要实现你想要的,你只需要修改label标签内的CSS属性...

label {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100%;
}

希望对你有帮助?

【讨论】:

  • Thks - 正是我想要的。
【解决方案2】:

我不确定我是否理解正确。

这是您的https://jsfiddle.net/3bp4xtvj/16/,有一些更改。

要使div 中的数字居中,我建议您将display: flexjustify-content: center;align-items: center; 一起使用。

我在第一个 div 中添加了一个新函数和一个隐藏的复选框来给你这个想法。

【讨论】:

  • 谢谢。这可以解决问题,但我希望将我的点击事件保留在标签上而不是其容器上,并将标签的“操作区域”扩展到其父级。有什么办法可以代替吗?
  • 嘿,就像 Wovi 之前回答的那样,这应该可以按您希望的方式工作:css label { display: flex; justify-content: center; align-items: center; height: 100%; width: 100%; } 看看:jsfiddle.net/2gb64895/2
猜你喜欢
  • 2017-08-31
  • 2013-03-03
  • 2012-12-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多