【问题标题】:Styling radio button without label没有标签的样式单选按钮
【发布时间】:2014-04-15 01:55:57
【问题描述】:

我现在面临这个问题:我想为系统生成的没有标签的单选按钮复选框设置样式 .

我正在使用 IBM SPSS Data Collection 进行在线调查,这意味着它会根据我可以设置样式的某些模板(主要是 CSS 样式)生成所有页面问题。

我发现许多教程如何使用纯 CSS 设置单选按钮和复选框的样式,问题是,它们都使用标签:<label for="id"></label>。关键是,生成的代码没有<label>

正如我所说,对象没有标签,例如单个单选按钮由此代码定义(我还想附上屏幕截图,但我没有足够的声誉点):

<td id="Cell.2.1" style="text-Align: Center;vertical-align: Middle;background-color: #e6efe6;width: 7%;border-color: Black;border-style: Solid;border-width: 0px;">
  <div></div>
  <input type="radio" name="_QQ3_Qa_QSingleResponseQuestion_C" id="_Q0_Q0_Q0_C1" class="mrSingle" style="font-family: Trebuchet MS;font-size: 9pt;" value="b"></input>
</td>

我尝试更改 html 代码以添加标签并且它有效,但这并不是我所需要的。此解决方案出现的问题是,我不能让系统轮换集成主题(问题),因为无法生成页面但必须明确编写。

当我使用这个解决方案(这不是一个合适的解决方案)时,我可以简单地使用 CSS 添加背景图像来重新设置带有标签的单选按钮和复选框:

input[type=radio]:not(old) + label{
  display      : inline-block;
  margin-left  : -28px;
  padding-left : 40px;
  background   : url('radio_off.png') no-repeat 0 0;
  background-size:30px 30px;
  line-height  : 35px;
}

input[type=radio]:not(old):checked + label{
  background   : url('/radio_on.png') no-repeat 0 0;
  background-size:29px 29px;
}

所以我的问题是:

  • 有没有办法在没有标签的情况下重新设置单选按钮和复选框的样式?

  • 有没有办法使用 javacsript 或其他方法为生成页面上的每个单选按钮或复选框添加假空白标签?

  • 有没有其他方法可以解决这个问题而无需编辑生成的页面代码,例如我可以使用它是如何生成的页面吗?

如果我没有提供任何必要的信息,请索取,如果可以的话,我会提供。

非常感谢您的帮助!

问候,

彼得

【问题讨论】:

  • “我还想附上截图的样子” >>> 只需在您的问题中留下图片的链接即可。

标签: javascript html css checkbox radio-button


【解决方案1】:

对于没有标签的单选按钮的纯 CSS 样式,请尝试以下操作:

input[type=radio]:not(old) {
  display: inline-block;
  -webkit-appearance: none;
  -moz-appearance: none;
  -o-appearance: none;
  appearance: none;
  border-radius: 1em;
  border: 3px solid #555;
}

input[type=radio]:not(old):checked{
  background-image: radial-gradient(circle at center, #555, #555 37.5%, #fff 40%, #fff 100%);
}

宽度、高度、边框粗细和颜色都可以根据需要设置样式。

也可以使用 svg 图像来显示选中和未选中状态,如下所示:

input[type=radio]:not(old) {
  display: inline-block;
  -webkit-appearance: none;
  -moz-appearance: none;
  -o-appearance: none;
  appearance: none;
  background-image: url('unchecked.svg') no-repeat;
  background-size: cover;
  background-origin: center;
}

input[type=radio]:not(old):checked{
  background-image: url('checked.svg') no-repeat;
  background-size: cover;
  background-origin: center;
}

【讨论】:

    【解决方案2】:

    没有办法使用纯 CSS 来设置单选按钮的样式,但您可以使用 CSS 和 JavaScript 混合来实现,在单选按钮上放置一个假图像,并且不显示单选按钮 一开始,要做到这一点,是否有标签并不重要。 如果您不想制作自己的脚本,有几个插件可以做到这一点:

    在我的插件中,你不需要标签来设置单选按钮的样式,有一个标签但不用于设置样式,所以你可以删除它并且仍然可以工作。

    查看使用 Inspector 工具编辑的代码:

    【讨论】:

    • 这个答案似乎没有解决您遇到的主要问题 - 没有标签元素可以使用。你是怎么解决的?
    • Scott 他遇到的真正问题是为单选按钮设置样式,仅此而已,而他发现的问题是他看到的所有 tuts 都需要标签来设置样式。但是标签不需要设置任何样式,在我的插件中,您可以看到帽子标签不用于设置任何样式,因此您可以删除标签并保留自定义样式。事实上,他在上面评论说这解决了他的问题。所以我认为这已经解决了这个问题;) PS 你的否定标点可能太难了?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2018-08-15
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多