使用单选按钮切换时捕获元素的输入,并仅使用 html 和 css 在父级之外显示

问题描述 投票:0回答:1

我不确定我的解决方案是否正确设计,但本质上我有两个无线电输入,当我选择一个选项时,它会显示锚标记

.tick
,这很好。现在我有一个名为
.some
的锚标记,我需要将所选锚标记 href 属性的值放入其中。这可能吗?附注只需要 html 和 css。没有 JavaScript。我需要重新设计我的解决方案吗?

<!DOCTYPE html>
<html>
<head>
<style>
.option .tick {
    display: none;
}

.option input:checked ~ .tick {
    display: inline;
}
#happy1:checked ~ .some:after {
  content: " (happy1)";
}

#happy2:checked ~ .some:after {
  content: " (happy2)";
}
</style>
</head>
<body>
    <div class="step1">
        <div class="row">
            <label class="option">
                Option 1
                <input type="radio" name="select" id="happy1">
                <a href="happy" class="tick">Happy 1</a>
            </label>
        </div>
        <div class="row">
            <label class="option">
                Option 2
                <input type="radio" name="select" id="happy2">
                <a href="happy" class="tick">Happy 2</a>
            </label>
        </div>
    </div>
    <div>
        <a href="linktosomething" class="some">Some</a>
    </div>
</body>
</html>

我不知道该怎么做

html css css-selectors
1个回答
0
投票

如果不使用 JavaScript,您将无法根据用户交互直接操作元素的内容。但是,您可以通过利用 :checked 伪类和通用同级组合器 (~) 来实现类似的效果。不幸的是,这种方法有局限性,它不允许您直接在 .some 元素内设置锚标记的 href 属性。

这是代码的修改版本,用于说明可能的解决方法:

<!DOCTYPE html>
<html>
  <head>
    <style>
      .option .tick {
        display: none;
      }

      .option input:checked ~ .tick {
        display: inline;
      }

      .some:after {
        content: " (default)";
      }

      #happy1:checked ~ .some:after {
        content: " (" attr(href-happy1) ") happy1";
      }

      #happy2:checked ~ .some:after {
        content: " (" attr(href-happy2) ") happy2";
      }
    </style>
  </head>
  <body>
    <div class="step1">
      <div class="row">
        <label class="option">
          Option 1
          <input type="radio" name="select" id="happy1" />
          <a href="happy1" class="tick">Happy 1</a>
        </label>
      </div>
      <div class="row">
        <label class="option">
          Option 2
          <input type="radio" name="select" id="happy2" />
          <a href="happy2" class="tick">Happy 2</a>
        </label>
      </div>
    </div>
    <div>
      <a href="some" class="some"></a>
    </div>
  </body>
</html>

在此示例中,我向您的无线电输入添加了唯一 ID(id="happy1" 和 id="happy2"),以便更轻松地在 CSS 中引用它们。我还修改了 .some:after 规则以根据单选按钮的状态设置内容。

但是请注意,此解决方案有局限性,而且它更多的是一种解决方法。如果没有 JavaScript,锚标记的实际

href
属性将不会动态更新。如果 JavaScript 是一种选择,那么对于这种动态行为来说,它将是一个更简单、更强大的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.