【问题标题】:How to use images instead of Radio Button如何使用图像而不是单选按钮
【发布时间】:2016-05-10 20:08:45
【问题描述】:

我有一个表单,我想在其中使用图像而不是单选按钮。如何显示多个图像,而不是单选按钮。例如 - 带有“男性”和“女性”图像的性别。它应该是功能性的。我想隐藏单选按钮并放置图像。我从堆栈溢出中得到了一个解决方案,这是小提琴:

.cc-selector input{
    margin:0;padding:0;
    -webkit-appearance:none;
       -moz-appearance:none;
            appearance:none;
}

.cc-selector-2 input{
    position:absolute;
    z-index:999;
}

.visa{background-image:url(http://i.imgur.com/lXzJ1eB.png);}
.mastercard{background-image:url(http://i.imgur.com/SJbRQF7.png);}

.cc-selector-2 input:active +.drinkcard-cc, .cc-selector input:active +.drinkcard-cc{opacity: .9;}
.cc-selector-2 input:checked +.drinkcard-cc, .cc-selector input:checked +.drinkcard-cc{
    -webkit-filter: none;
       -moz-filter: none;
            filter: none;
}
.drinkcard-cc{
    cursor:pointer;
    background-size:contain;
    background-repeat:no-repeat;
    display:inline-block;
    width:100px;height:70px;
    -webkit-transition: all 100ms ease-in;
       -moz-transition: all 100ms ease-in;
            transition: all 100ms ease-in;
    -webkit-filter: brightness(1.8) grayscale(1) opacity(.7);
       -moz-filter: brightness(1.8) grayscale(1) opacity(.7);
            filter: brightness(1.8) grayscale(1) opacity(.7);
}
.drinkcard-cc:hover{
    -webkit-filter: brightness(1.2) grayscale(.5) opacity(.9);
       -moz-filter: brightness(1.2) grayscale(.5) opacity(.9);
            filter: brightness(1.2) grayscale(.5) opacity(.9);
}

/* Extras */
a:visited{color:#888}
a{color:#444;text-decoration:none;}
p{margin-bottom:.3em;}
* { font-family:monospace; }
.cc-selector-2 input{ margin: 5px 0 0 12px; }
.cc-selector-2 label{ margin-left: 7px; }
span.cc{ color:#6d84b4 }
<form>
    <p>Previously:</p>
    <div>
        <input checked="checked"  id="a1" type="radio" name="a" value="visa" />
        <label for="a1">Visa</label><br/>
        <input id="a2" type="radio" name="a" value="mastercard" />
        <label for="a2">Mastercard</label>
    </div>
    <p>Now, with CSS3: </p>
    <div class="cc-selector">
        <input checked="checked" id="visa" type="radio" name="credit-card" value="visa" />
        <label class="drinkcard-cc visa" for="visa"></label>
        <input id="mastercard" type="radio" name="credit-card" value="mastercard" />
        <label class="drinkcard-cc mastercard"for="mastercard"></label>
    </div>
    
    
</form>
<small><a href="https://github.com/rcotrina94/icons">
    &copy; Icons by <span class="cc">@rcotrina94</span> on <span class="cc">Github </span></a></small>

但是在这里,问题出现了,当我将输入 id 更改为其他名称并且它不起作用时。任何人都可以帮助我,因为这是一个非常简短和简单的方法,我想用这个。您可以将输入 id 更改为“visa1”并查看结果。

【问题讨论】:

  • 问题出现了,当我将输入 id 更改为其他名称时,它不起作用。 什么不起作用,为什么需要更改输入id到visa1?

标签: html css


【解决方案1】:

如果你改变了输入“id”的意思,也改变了相关的标签“for”

例如:

如果您将输入 id 更改为“visa1”,则意味着更改相关标签为“visa1”

<input checked="checked" id="visa1" type="radio" name="credit-card" value="visa" />
<label class="drinkcard-cc visa" for="visa1"></label>

运行以下 sn-p:

.cc-selector input{
    margin:0;padding:0;
    -webkit-appearance:none;
       -moz-appearance:none;
            appearance:none;
}

.cc-selector-2 input{
    position:absolute;
    z-index:999;
}

.visa{background-image:url(http://i.imgur.com/lXzJ1eB.png);}
.mastercard{background-image:url(http://i.imgur.com/SJbRQF7.png);}

.cc-selector-2 input:active +.drinkcard-cc, .cc-selector input:active +.drinkcard-cc{opacity: .9;}
.cc-selector-2 input:checked +.drinkcard-cc, .cc-selector input:checked +.drinkcard-cc{
    -webkit-filter: none;
       -moz-filter: none;
            filter: none;
}
.drinkcard-cc{
    cursor:pointer;
    background-size:contain;
    background-repeat:no-repeat;
    display:inline-block;
    width:100px;height:70px;
    -webkit-transition: all 100ms ease-in;
       -moz-transition: all 100ms ease-in;
            transition: all 100ms ease-in;
    -webkit-filter: brightness(1.8) grayscale(1) opacity(.7);
       -moz-filter: brightness(1.8) grayscale(1) opacity(.7);
            filter: brightness(1.8) grayscale(1) opacity(.7);
}
.drinkcard-cc:hover{
    -webkit-filter: brightness(1.2) grayscale(.5) opacity(.9);
       -moz-filter: brightness(1.2) grayscale(.5) opacity(.9);
            filter: brightness(1.2) grayscale(.5) opacity(.9);
}

/* Extras */
a:visited{color:#888}
a{color:#444;text-decoration:none;}
p{margin-bottom:.3em;}
* { font-family:monospace; }
.cc-selector-2 input{ margin: 5px 0 0 12px; }
.cc-selector-2 label{ margin-left: 7px; }
span.cc{ color:#6d84b4 }
<form>
    <p>Previously:</p>
    <div>
        <input checked="checked"  id="a1" type="radio" name="a" value="visa" />
        <label for="a1">Visa</label><br/>
        <input id="a2" type="radio" name="a" value="mastercard" />
        <label for="a2">Mastercard</label>
    </div>
    <p>Now, with CSS3: </p>
    <div class="cc-selector">
        <input checked="checked" id="visa1" type="radio" name="credit-card" value="visa" />
        <label class="drinkcard-cc visa" for="visa1"></label>
        <input id="mastercard1" type="radio" name="credit-card" value="mastercard" />
        <label class="drinkcard-cc mastercard"for="mastercard1"></label>
    </div>
    
    
</form>
<small><a href="https://github.com/rcotrina94/icons">
    &copy; Icons by <span class="cc">@rcotrina94</span> on <span class="cc">Github </span></a></small>

【讨论】:

    【解决方案2】:

    试试这个http://www.csscheckbox.com/css-checkbox-generator.php 它是一个免费的在线工具,用于生成跨浏览器兼容的自定义复选框/单选按钮,您可能需要上传图像以进行选中和取消选中状态

    【讨论】:

      【解决方案3】:

      .cc-selector input{
              margin:0;padding:0;
              -webkit-appearance:none;
                 -moz-appearance:none;
                      appearance:none;
          }
      
          .cc-selector-2 input{
              position:absolute;
              z-index:999;
          }
      
          .visa{background-image:url(http://i.imgur.com/lXzJ1eB.png);}
          .mastercard{background-image:url(http://i.imgur.com/SJbRQF7.png);}
      
          .cc-selector-2 input:active +.drinkcard-cc, .cc-selector input:active +.drinkcard-cc{opacity: .9;}
          .cc-selector-2 input:checked +.drinkcard-cc, .cc-selector input:checked +.drinkcard-cc{
              -webkit-filter: none;
                 -moz-filter: none;
                      filter: none;
          }
          .drinkcard-cc{
              cursor:pointer;
              background-size:contain;
              background-repeat:no-repeat;
              display:inline-block;
              width:100px;height:70px;
              -webkit-transition: all 100ms ease-in;
                 -moz-transition: all 100ms ease-in;
                      transition: all 100ms ease-in;
              -webkit-filter: brightness(1.8) grayscale(1) opacity(.7);
                 -moz-filter: brightness(1.8) grayscale(1) opacity(.7);
                      filter: brightness(1.8) grayscale(1) opacity(.7);
          }
          .drinkcard-cc:hover{
              -webkit-filter: brightness(1.2) grayscale(.5) opacity(.9);
                 -moz-filter: brightness(1.2) grayscale(.5) opacity(.9);
                      filter: brightness(1.2) grayscale(.5) opacity(.9);
          }
      
          /* Extras */
          a:visited{color:#888}
          a{color:#444;text-decoration:none;}
          p{margin-bottom:.3em;}
          * { font-family:monospace; }
          .cc-selector-2 input{ margin: 5px 0 0 12px; }
          .cc-selector-2 label{ margin-left: 7px; }
          span.cc{ color:#6d84b4 }
      	
      	form input{ /* HIDE RADIO */
        visibility: hidden; /* Makes input not-clickable */
        position: absolute; /* Remove input from document flow */
      }
      <form>
              <p>Previously:</p>
              <div>
                  <input checked="checked"  id="a1" type="radio" name="a" value="visa" />
                  <label for="a1">Visa</label><br/>
                  <input id="a2" type="radio" name="a" value="mastercard" />
                  <label for="a2">Mastercard</label>
              </div>
              <p>Now, with CSS3: </p>
              <div class="cc-selector">
                  <input checked="checked" id="visa" type="radio" name="credit-card" value="visa" />
                  <label class="drinkcard-cc visa" for="visa"></label>
                  <input id="mastercard" type="radio" name="credit-card" value="mastercard" />
                  <label class="drinkcard-cc mastercard"for="mastercard"></label>
              </div>
              
              
          </form>
          <small><a href="https://github.com/rcotrina94/icons">
              &copy; Icons by <span class="cc">@rcotrina94</span> on <span class="cc">Github </span></a></small>

      .cc-selector input{
          margin:0;padding:0;
          -webkit-appearance:none;
             -moz-appearance:none;
                  appearance:none;
      }
      
      .cc-selector-2 input{
          position:absolute;
          z-index:999;
      }
      
      .visa{background-image:url(http://i.imgur.com/lXzJ1eB.png);}
      .mastercard{background-image:url(http://i.imgur.com/SJbRQF7.png);}
      
      .cc-selector-2 input:active +.drinkcard-cc, .cc-selector input:active +.drinkcard-cc{opacity: .9;}
      .cc-selector-2 input:checked +.drinkcard-cc, .cc-selector input:checked +.drinkcard-cc{
          -webkit-filter: none;
             -moz-filter: none;
                  filter: none;
      }
      .drinkcard-cc{
          cursor:pointer;
          background-size:contain;
          background-repeat:no-repeat;
          display:inline-block;
          width:100px;height:70px;
          -webkit-transition: all 100ms ease-in;
             -moz-transition: all 100ms ease-in;
                  transition: all 100ms ease-in;
          -webkit-filter: brightness(1.8) grayscale(1) opacity(.7);
             -moz-filter: brightness(1.8) grayscale(1) opacity(.7);
                  filter: brightness(1.8) grayscale(1) opacity(.7);
      }
      .drinkcard-cc:hover{
          -webkit-filter: brightness(1.2) grayscale(.5) opacity(.9);
             -moz-filter: brightness(1.2) grayscale(.5) opacity(.9);
                  filter: brightness(1.2) grayscale(.5) opacity(.9);
      }
      
      /* Extras */
      a:visited{color:#888}
      a{color:#444;text-decoration:none;}
      p{margin-bottom:.3em;}
      * { font-family:monospace; }
      .cc-selector-2 input{ margin: 5px 0 0 12px; }
      .cc-selector-2 label{ margin-left: 7px; }
      span.cc{ color:#6d84b4 }
      <form>
          <p>Previously:</p>
          <div>
              <input checked="checked"  id="a1" type="radio" name="a" value="visa" />
              <label for="a1">Visa</label><br/>
              <input id="a2" type="radio" name="a" value="mastercard" />
              <label for="a2">Mastercard</label>
          </div>
          <p>Now, with CSS3: </p>
          <div class="cc-selector">
              <input checked="checked" id="visa" type="radio" name="credit-card" value="visa" />
              <label class="drinkcard-cc visa" for="visa"></label>
              <input id="mastercard" type="radio" name="credit-card" value="mastercard" />
              <label class="drinkcard-cc mastercard"for="mastercard"></label>
          </div>
          
          
      </form>
      <small><a href="https://github.com/rcotrina94/icons">
          &copy; Icons by <span class="cc">@rcotrina94</span> on <span class="cc">Github </span></a></small>

      【讨论】:

        【解决方案4】:

        当然,如果您更改 ID,它就不会起作用,因为 CSS 样式针对的是这些 ID。因此,您必须在任何地方的代码中找到并重命名它们才能再次工作。

        您展示的代码也很丑陋,充斥着一堆 CSS 选择器。如果您不熟悉编码,您可能只想尝试不同类型的解决方案。有数百个。我个人建议:最少代码 = 最好。这是一个带有 jquery 的。

        $('#sex').html('male');
        
        $("#male").bind("mousedown", function() {
          sex = 'male';
          $('#male').css('opacity','1');
          $('#female').css('opacity','0.2');
          $('#sex').html('male');
        });
        
        $("#female").bind("mousedown", function() {
          sex = 'female';
          $('#female').css('opacity','1');
          $('#male').css('opacity','0.2');
          $('#sex').html('female');
        });
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
        
        <img id='male' src='http://cliparts.co/cliparts/pT7/KBR/pT7KBR6gc.png' style='width:50px;height:50px'>
        
        <img id='female' src='http://www.clipartbest.com/cliparts/9i4/o7b/9i4o7breT.png' style='width:30px;height:50px;opacity:0.2'>
        
        <div id='sex' style='text-align:center;width:90px;margin-top:10px;font-size:12px;'>
        </div>

        【讨论】:

          猜你喜欢
          • 2013-07-06
          • 2020-04-28
          • 2012-06-13
          • 1970-01-01
          • 2021-02-03
          • 2013-04-17
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多