html - NOT 嵌套项的 CSS 样式

标签 html css

我正在使用 CSS/SASS 来设置有效性消息的样式。该消息未嵌套在我正在访问的内容中。

例如,如果输入框无效,我的 JavaScript 会向输入框添加一个错误类。我希望阻止可见属性在页面下方进一步更改。

// when no error
input#user_tags_attributes_0_tagname
// then
div.tagname-available { display: block; } // NOT NESTED
// and
div.tagname-unavailable { display: none; } // NOT NESTED

// when error
input#user_tags_attributes_0_tagname.error
// then
div.tagname-available { display: none; } // NOT NESTED
// and
div.tagname-unavailable { display: block; } // NOT NESTED

理论上,我应该能够访问这些元素,而无需编写 JavaScript 来执行此操作。可能如果 CSS 有一个像 JavaScript 的 $(document) 这样的 ROOT 文档变量,那么我就可以做到。

input#user_tags_attributes_0_tagname {
  $(document) > div.tagname-available { display: block; } // NOT NESTED
  $(document) > div.tagname-unavailable { display: none; } // NOT NESTED
}

对于 HTML

<table>
  <tr>
    <td width="200px">
      <span class="pull-right vf-labels">Choose your Tag ID</span>
    </td>
    <td>
      <input class="error" data-validate="/users/checktagname" id="user_tags_attributes_0_tagname" name="user[tags_attributes][0][tagname]" type="text">
    </td>
  </tr>
  <tr>
    <td>
    </td>
    <td>
      <span class="text-primary" style="font-size: small;">Check Availability</span><br />
      <div class="tagname-available">
        <span class="glyphicon glyphicon-ok text-success" style="margin-left:-20px;margin-right:4px;"></span>
        <span class="text-success" style="font-size: small;">Available</span>
      </div>
      <div class="tagname-unavailable">
        <span class="glyphicon glyphicon-remove text-danger" style="margin-left:-20px;margin-right:4px;"></span>
        <span class="text-danger" style="font-size: small;">Not Available</span>
      </div>
    </td>
  </tr>
</table>

也许我可以使用 :root CSS 选择器?

最佳答案

您应该可以使用同级选择器来做到这一点。

// when no error  
input#user_tags_attributes_0_tagname +
.tagname-available { display: block; }
input#user_tags_attributes_0_tagname +
.tagname-unavailable { display: none; }

// when error  
input#user_tags_attributes_0_tagname.error +
.tagname-available { display: none; }
input#user_tags_attributes_0_tagname.error +
.tagname-unavailable { display: block; }

关于html - NOT 嵌套项的 CSS 样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26876564/

相关文章:

javascript - 如何更改 div 的不透明度?

javascript - 使用 jQuery 更改 div 的大小

javascript - HTML5 shiv 破坏了我在 IE9 中的代码

html - cordova/phonegap 将 body div 调整为 ios 中的屏幕 - xcode

javascript - 使用 ImageMapster 居中

html - 移动导航栏的下拉菜单溢出

javascript - 如何使用内容容器内的自定义滚动条制作响应式 Accordion 标签?

jquery - 使用greasemonkey/tampermonkey(例如SO)使 Bootstrap 模式与另一个网站一起工作

javascript - 使用 jQuery 定位单词并添加样式

javascript - iphone/ios 中心的按钮文本