在自定义复选框中居中检查/勾选

时间:2017-01-24 12:01:46

标签: html css checkbox styling

我正在构建一个自定义复选框,功能几乎就在那里,但样式还有很长的路要走。

我有一些问题,

  1. 我需要在圆圈中居中检查
  2. 我只需要点击复选框本身而不是文字来激活支票。
  3. 我担心我似乎无法在不使用左侧位置填充的情况下使支票居中。

    HTML

    input[type=checkbox] {
      display: none;
    }
    
    input[type=checkbox] + .accord-text:before {
      width: 30px;
      height: 30px;
      border-radius: 200%;
      background-color: #d6e4ec;
      border: 1px solid #000;
      display: block;
      font-size: 150%;
      font-weight: 900;
      content: "";
      color: green;
    }
    
    input[type=checkbox]:checked + .accord-text:before {
      display: table;
      content: "\2713";
    }
    

    CSS

    link_to_project(project,{:id=>project.id})
    

3 个答案:

答案 0 :(得分:3)

  • 问题1:选中复选框时text-align: center;,然后从复选框中删除style="float:left;"
  • 问题2:从accord-text div中删除文本并将其放在外面。

.row{
  display: flex;
  flex-direction: row;
}

input[type=checkbox] {
  display: none;
}

input[type=checkbox] + .accord-text:before {
  width: 30px;
  height: 30px;
  border-radius: 200%;
  background-color: #d6e4ec;
  border: 1px solid #000;
  display: block;
  font-size: 140%;
  font-weight: 900;
  content: "";
  color: green;
}

input[type=checkbox]:checked + .accord-text:before {
  display: table;
  content: "\2713";
  text-align: center;
}
<div class="row">
  <label for='product-45-45'>
  <input type='checkbox' style="float:left;" id='product-45-45' />
  <div class="accord-text">

  </div>
</label>

  <strong>header:</strong> sub text
  <strong>more text!</strong>
</div>

答案 1 :(得分:2)

检查此代码片段时,我已经修复了高度问题,

display:blockmax-height添加到此input[type=checkbox]:checked + .accord-text:before

input[type=checkbox] {
  display: none;
}
label {
float:left;
}
input[type=checkbox] + .accord-text:before {
  width: 30px;
  height: 30px;
  border-radius: 200%;
  background-color: #d6e4ec;
  border: 1px solid #000;
  display: block;
  font-size: 150%;
  font-weight: 900;
  content: "";
  color: green;
  text-align:center;
  max-height:30px;
}

input[type=checkbox]:checked + .accord-text:before {
  display: table;
  content: "\2713";
  max-height:30px;
  display:block;
}
span {
float:left;
padding-left:5px;
}
<label for='product-45-45'>
  <input type='checkbox' style="float:left;" id='product-45-45' />
  <div class="accord-text"></div>
</label>
<span><strong>header:</strong> sub text
  <strong>more text!</strong>
</span>

答案 2 :(得分:0)

您需要删除为左侧浮动输入设置样式的内联代码,在浮动打开时不能将其居中。然后添加保证金:0自动将其置于中心位置:

input[type=checkbox]:checked {
  float: none;
}

input[type=checkbox] + .accord-text:before {
  margin: 0 auto;
  width: 30px;
  height: 30px;
  border-radius: 200%;
  background-color: #d6e4ec;
  border: 1px solid #000;
  display: block;
  font-size: 150%;
  font-weight: 900;
  content: "";
  color: green;
}