css - 这种 CSS 技术有名字吗?

标签 css

我已经使用这种技术一年多了,但我还没有在其他地方看到它的使用。简而言之,我使用 CSS 类来形式化显示“状态”或“模式”。我尝试过搜索“css 模式”、“css 状态”、“有状态 css”等,但如果它存在,那么它不会使用任何这些名称。

这是我正在做的事情的一个简单示例。该示例是响应式文本输入,这种输入会与服务器对话并动态地告诉您您选择的用户名是否已被使用。

标记:

<div id="username-container" class="username-mode-ready">
    <!-- input -->
    <label for="username" class="username-label">Username:</label>
    <input type="text" id="username" class="username-input" />

    <!-- icons -->
    <img src="error.png" class="icon error"/>
    <img src="ok.png" class="icon accepted"/>
    <img src="loading.gif" class="icon loading"/>

    <!-- messages -->
    <p class="message error">
        That username is not available.
    </p>
    <p class="message accepted">
        That username is available!
    </p>
    <p class="message loading">
        Loading ...
    </p>
</div>

CSS:

/* Default = hidden */
#username-container .error,
#username-container .accepted,
#username-container .loading {
    display : none;
}

/* Show when appropriate */
#username-container.username-mode-error    .error,
#username-container.username-mode-accepted .accepted,
#username-container.username-mode-loading  .loading {
    display : block;
}

现在我们将添加 Javascript。当我们访问服务器时,我们将执行以下操作:

$('username-container').className = 'username-mode-loading';

当我们返回时,我们将根据服务器响应执行以下操作之一:

$('username-container').className = 'username-mode-accepted'; // Username available
$('username-container').className = 'username-mode-error';    // Username taken

这样,我们只需更改容器的 className 即可看到不同的显示模式,而不需要对一百万个不同的元素操作 element.style.display。我们还可以做的不仅仅是显示/隐藏:

CSS:

/* Set label color to green or red depending on availability */
#username-container.username-mode-accepted .username-label {
    color : green;
}
#username-container.username-mode-error .username-label {
    color : red;
}

或者跨多种模式应用样式:

标记:

<img alt="Whew! I searched as hard as I could!" src="done-searching.png" class="icon done-searching"/>

CSS:

/* New icon should display in accepted and error modes */
#username-container .done-searching {
    display : none;
}
#username-container.username-mode-accepted .done-searching,
#username-container.username-mode-error    .done-searching {
    display : block;

该技术是否已经被描述过?我即将开始将其称为面向模式的 CSS,因为当我向人们解释它时需要一个名称,但我宁愿使用漂亮的、真实的、可在 Google 上搜索的名称(如果有的话)。

最佳答案

关于css - 这种 CSS 技术有名字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9829723/

相关文章:

html - 如何制作可点击框

css - Bootstrap z-index 问题

javascript - 为什么 javascript 不在元素上应用样式?

javascript - 如何实现像 "Horizontal Scrolling Navigation Bar"这样的分页?

html - CSS 缩放指定像素为动态

jquery - 使用 Twitter Bootstrap 3 的响应式导航栏

ios - 一个词在 iPad 上看起来像两个,但在桌面上看起来像一个。 (这很难说)

html - CSS 显示错误 - Safari 在导航栏中添加中断

css - Bootstrap 中可水平滚动的卡片列表

javascript - 如何通过底部坐标而不是顶部坐标来锚定元素