css - 第一个向右浮动的元素

标签 css css-selectors

我设置了margin对于某些元素:

button {
  margin: 10px 10px 0 0;
}

a {
  margin: 10px 20px 0 0;
}

现在,每当我float: right这些元素中的任何一个,我都想设置 margin-right: 0对于第一个右浮动元素。如下所示:

.float-right {
  float: right;
  /* only for first instance */ margin-right: 0;
}

有哪些选择?

一些约束:

  • 我对不同的元素有不同的边距,我想要 .float-right类是通用的,所以我不能设置 margin-right: 0到类中,然后为右浮动元素 ( .float-right ~ .float-right ) 的其他实例设置边距。
  • 在我的例子中,将元素包装到容器中是不切实际的,所以我可以简单地使用 :first-child伪选择器。

下面是一个简单的例子,我有一个标志 <a>和登录 <a> - 后者向右浮动,它不是 <a> 类型的第一个元素,我需要 margin-right成为0 .

a {
  margin-right: 50px;
}

.float-right {
  float: right;
}

.float-right:first-child {
  margin-right: 0;
}
<a href="">LOGO</a>
<a href="" class="float-right">Login | Register</a>

最佳答案

您真正要求的是 first-of-class,但目前还不存在。

但是,您可以使用 :not() 选择器和直接同级选择器将第一个具有类的元素作为紧跟在没有该类的元素之后的元素。

如下:

a {
  margin-right: 50px;
}
.float-right {
  float: right;
}
*:not(.float-right) + .float-right {
  margin-right: 0;
}
<a href="">LOGO</a>
<a href="" class="float-right">Login | Register</a>

这并不理想,因为它实际上并不能在很大程度上扩展,但它确实为您的特定要求提供了解决方案。

关于css - 第一个向右浮动的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40039522/

相关文章:

css - ui-sref-active ="active"在我的导航栏菜单中不起作用

css - Google Webfonts 破坏 CLS 分数 (FOUT)

html - 特定背景图片不会显示在我的 Mac 上的帐户下

html - 正文和 W3 标准中的 &lt;style&gt; 标签

javascript - "not descendent"或 "find outermost"的 CSS3 选择器?

用于显示后代的 CSS 选择器无法正常工作

html - 如何仅使用内联样式显示 html 模板?

html - 提供基本元素的 CSS 作用于元素

css - 对齐表格中的图像

Python Scrapy 不断从下一页按钮获取同一页面链接