登录
登录 注册新账号
注册
已有账号登录

现在有这样一个样式

.markdown a {
  color: #009a61;
  text-decoration: none;
}

html层级大概是这样

<div class="markdown">
  <a href="#/install">安装1</a>
  <p><a href="#/install">安装2</a></p>
  <div class="markdown-exclude">
    <a href="#/install">安装3</a>
    <div>
      <a href="#/install">安装4</a>
    </div>
  </div>
</div>

我希望.markdown-exclude之后的a标签不被上面的css影响请问是否能实现呢?

.markdown :not(.markdown-exclude) a {
  color: #009a61;
  text-decoration: none;
}

尝试这样写,但是效果不对
图片描述

* **

补充
谢谢大家回答
虽然依然没有找到完美阻断的方法,但我发现怕被影响的子级a标签都携带自定义class,所以目前用筛选空classa标签来实现

.markdown a:not([class]) {
  color: #009a61;
  text-decoration: none;
}

暂时达到了预期效果

3 个回答
<div class="markdown">
  <a href="#/install">安装1</a>
  <p><a href="#/install">安装2</a></p>
  <div class="markdown-exclude">
    <a href="#/install" class="exclude">安装3</a>
    <div>
      <a href="#/install" class="exclude">安装4</a>
    </div>
  </div>
</div>

.markdown :not(.exclude){
  color: #009a61;
  text-decoration: none;
}

可以给"markdown-exclude"下不需要加样式的a加一个类名,比如exclude,然后在.markdown :not(.exclude)里写样式。

也许可以先覆盖样式,然后针对需求写选择器:

.markdown a {
  color: rgb(0,0,238);  /* 重置为chrome 默认的 a 标签颜色 */
  /* todo 可能需要针对各 UA 设置不同的默认样式*/
}
.markdown :not(.markdown-exclude) a {
  color: #009a61;  /* 引入原来的期望样式 */
  text-decoration: none;
}

瑟瑟发抖为大佬评论,我有个不成熟的想法:

.markdown a {
        color: #009a61;
        text-decoration: none;
      }

      .markdown-exclude a{
        color: #333;
      }
撰写答案