html CSS -如何样式一个选定的电台广告标签?

uqxowvwt  于 2023-11-15  发布在  其他
关注(0)|答案(9)|浏览(157)

我想为单选按钮的选定标签添加样式:

HTML:

  1. <div class="radio-toolbar">
  2. <label><input type="radio" value="all" checked>All</label>
  3. <label><input type="radio" value="false">Open</label>
  4. <label><input type="radio" value="true">Archived</label>
  5. </div>

字符串

CSS

  1. .radio-toolbar input[type="radio"] {display:none;}
  2. .radio-toolbar label {
  3. background:Red;
  4. border:1px solid green;
  5. padding:2px 10px;
  6. }
  7. .radio-toolbar label + input[type="radio"]:checked {
  8. background:pink !important;
  9. }


知道我哪里做错了吗

olqngx59

olqngx591#

  1. .radio-toolbar input[type="radio"] {
  2. display: none;
  3. }
  4. .radio-toolbar label {
  5. display: inline-block;
  6. background-color: #ddd;
  7. padding: 4px 11px;
  8. font-family: Arial;
  9. font-size: 16px;
  10. cursor: pointer;
  11. }
  12. .radio-toolbar input[type="radio"]:checked+label {
  13. background-color: #bbb;
  14. }

个字符
首先,您可能希望在单选按钮上添加name属性。否则,它们不属于同一组,并且可以选中多个单选按钮。
此外,由于我将标签放置为(单选按钮的)兄弟,因此必须使用idfor属性将它们关联在一起。

展开查看全部
kdfy810k

kdfy810k2#

如果你真的想把复选框放在标签里面,试着添加一个额外的span标签,例如。

HTML格式

  1. <div class="radio-toolbar">
  2. <label><input type="radio" value="all" checked><span>All</span></label>
  3. <label><input type="radio" value="false"><span>Open</span></label>
  4. <label><input type="radio" value="true"><span>Archived</span></label>
  5. </div>

字符串

CSS

  1. .radio-toolbar input[type="radio"]:checked ~ * {
  2. background:pink !important;
  3. }


这将为选定单选按钮的所有同级设置背景。

展开查看全部
mzaanser

mzaanser3#

当元素不是兄弟时,你使用了相邻兄弟选择器(+)。标签是输入的父元素,而不是它的兄弟元素。
CSS没有办法根据它的后代(也没有任何跟随它的东西)来选择元素。
您需要使用JavaScript来解决这个问题。
或者,重新排列标记:

  1. <input id="foo"><label for="foo"></label>

字符串

doinxwow

doinxwow4#

你可以在html和css中添加span。
这是我的代码中的一个例子...
HTML(JSX):

  1. <input type="radio" name="AMPM" id="radiostyle1" value="AM" checked={this.state.AMPM==="AM"} onChange={this.handleChange}/>
  2. <label for="radiostyle1"><span></span> am </label>
  3. <input type="radio" name="AMPM" id="radiostyle2" value="PM" checked={this.state.AMPM==="PM"} onChange={this.handleChange}/>
  4. <label for="radiostyle2"><span></span> pm </label>

字符串
CSS使标准单选按钮在屏幕上消失并显示自定义按钮图像:

  1. input[type="radio"] {
  2. opacity:0;
  3. }
  4. input[type="radio"] + label {
  5. font-size:1em;
  6. text-transform: uppercase;
  7. color: white ;
  8. cursor: pointer;
  9. margin:auto 15px auto auto;
  10. }
  11. input[type="radio"] + label span {
  12. display:inline-block;
  13. width:30px;
  14. height:10px;
  15. margin:1px 0px 0 -30px;
  16. cursor:pointer;
  17. border-radius: 20%;
  18. }
  19. input[type="radio"] + label span {
  20. background-color: #FFFFFF
  21. }
  22. input[type="radio"]:checked + label span{
  23. background-color: #660006;
  24. }

展开查看全部
klsxnrf1

klsxnrf15#

只需使用label:focus-within {}来设置标签的样式,并选中单选框或复选框。

eqoofvh9

eqoofvh96#

这里有一个可行的解决方案

  1. label {
  2. position: relative;
  3. }
  4. label input {
  5. position: absolute;
  6. opacity: 0;
  7. }
  8. label:focus-within {
  9. outline: 1px solid orange;
  10. }

个字符

6ljaweal

6ljaweal7#

由于目前还没有CSS解决方案来样式化父类,我在这里使用一个简单的jQuery来添加一个类到一个标签中,并在其中检查输入。

  1. $(document).on("change","input", function(){
  2. $("label").removeClass("checkedlabel");
  3. if($(this).is(":checked")) $(this).closest("label").addClass("checkedlabel");
  4. });

字符串
别忘了也给预检查输入的标签给予类checkedlabel

fslejnso

fslejnso8#

正如TimStieffenhofer在他们的answer中提到的,最简单的方法是将输入字段作为标签的子字段,并在标签上使用:focus-within伪类。
如果你想隐藏你的单选按钮,并将输入设置为隐藏或不显示,这将不再起作用。解决方法是给予输入字段一个-1的z索引(或任何低于父标签的z索引)。

yjghlzjz

yjghlzjz9#

仅适用于超级渐进式开发者(注意:**:has**仍然支持较低!)

  1. /* selector picks only labels that has checked input inside */
  2. label:has(input:checked) {
  3. color: #f00;
  4. }

个字符

相关问题