当只有一个子元素时移除伪元素

2023-11-29

我使用一个不可见的伪元素(::after)占据容器中的最后一个槽。但如果只有一个元素,我想将其放置在中心。

因此,为了做到这一点,我需要“删除”这种情况下的伪元素。

如果可以的话我该怎么做?

.main {
  background: #999;
  margin: 0 auto;
  width: 500px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}
.box {
  background: #7ab9d7;
  color: #555;
  height: 30px;
  width: 30%;
  margin-bottom: 30px;
  text-align: center;
  font-size: 30px;
  padding-top: 120px;
}
.main::after {
  height: 0;
  width: 30%;
  content: "";
}
<div class="main">
  <div class="box">1</div>
</div>

P.S.示例取自here但孩子的数量减少到1个。

附:附:如果有很多 div - 看起来像这样

enter image description here

如果一个 div - 看起来像这样

enter image description here


如果父级中有一个子级,如何不显示 ::after 内容?

没有 CSS 方法(今天,但有一天可能会使用父选择器)根据 Flex 项目的数量删除伪,即使它是子项并充当 Flex 项目,它仍然不能是显式的除了通过其父级之外,还有其他任何目标。


一个简单的解决方法是将左边距与transform当只有 1 个元素时,这里使用only-child选择器。

一个可以使用position: relative; left: 50%以及,虽然margin-left少一行

这适用于任意数量的元素,无论其大小。

堆栈片段

.main {
  background: #999;
  margin: 0 auto;
  width: 500px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.box {
  background: #7ab9d7;
  color: #555;
  height: 30px;
  width: 30%;
  margin-bottom: 30px;
  text-align: center;
  font-size: 30px;
  padding-top: 120px;
}

.main::after {
  height: 0;
  width: 30%;
  content: "";
}

.main div:only-child {                /*  added rule  */
  margin-left: 50%;
  transform: translateX(-50%);
}
<div class="main">
  <div class="box">1</div>
</div>
<br>
<div class="main">
  <div class="box">1</div>
  <div class="box">1</div>
</div>
<br>
<div class="main">
  <div class="box">1</div>
  <div class="box">1</div>
  <div class="box">1</div>
  <div class="box">1</div>
</div>
<br>

根据评论更新,其中,如果有 2 个项目,它们也应该居中。

为了能够使用现有的标记/CSS 来实现这一点,我们还需要利用::before pseudo.

加上几个聪明的CSS选择器,我们可以数一下如果有 1 或 2 个元素。

这样的工作原理是,当 1 或 2 个项目时,使用自动边距,并且使用order属性的项目位于::after,现在是 100% 宽,并将把项目推到新行,在那里它们不会受到任何伪的影响。

对于 3 个或更多项目,它们将位于两个伪项目之前,其中::before现在将充当::after在最初的解决方案中做了,并将最后一行的项目左对齐。

小提琴演示

堆栈片段

.main {
  background: #999;
  margin: 0 auto;
  width: 500px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.box {
  background: #7ab9d7;
  color: #555;
  height: 30px;
  width: 30%;
  margin-bottom: 30px;
  text-align: center;
  font-size: 30px;
  padding-top: 120px;
}

.main::before {
  height: 0;
  width: 30%;
  content: "";
  order: 1;
}
.main::after {
  height: 0;
  width: 100%;
  content: "";
  order: 2;
}

/* new rules */

.main div:only-child,                            /* if 1 only */
.main div:first-child:nth-last-child(2) + div {  /* if 2, the 2nd*/
  order: 3;
  margin-left: auto;
  margin-right: auto;
}

.main div:first-child:nth-last-child(2) {         /* if 2, the 1st */
  order: 3;
  margin-left: auto;
}
<div class="main">
  <div class="box">1</div>
</div>
<br>
<div class="main">
  <div class="box">1</div>
  <div class="box">2</div>
</div>
<br>
<div class="main">
  <div class="box">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
  <div class="box">4</div>
</div>
<br>
<div class="main">
  <div class="box">1</div>
  <div class="box">2</div>
  <div class="box">3</div>
  <div class="box">4</div>
  <div class="box">5</div>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当只有一个子元素时移除伪元素 的相关文章

随机推荐

  • 在 XNA 中,处理我不再需要的纹理的最佳方法是什么?

    我开始了一个项目 其概念是在整个游戏中连续重用相同的texture2d对象 定期重新加载新纹理 随着时间的推移 这被证明是一个坏主意 因为我遇到了 System OutOfMemoryException bool loadImages st
  • 从对象获取值并将其推入数组 javascript

    我想从对象中获取值并将其保存到数组中 这就是我的对象的结构 0 name John Deo age 45 gender male 1 name Mary Jeo age 54 gender female 2 name Saly Meo ag
  • 如何使用 fgetcsv 在 while 循环中跳过标题行?

    我无法像我之前使用的代码那样获得我编写的跳过第一行 标题 的新代码 见底部 我没有收到任何错误 但只是无法让它省略第一行 file fopen uploadcsv r column headers array row count 0 whi
  • 带过滤器的列表视图在隐藏键盘或按下回车键之前不会刷新

    我有一个显示联系人列表的列表视图 我在列表视图上方的布局中添加了一个 EditText 以便我可以使用过滤器进行搜索 我已经在 EditText 上使用 onTextChanged Listener 实现了这一点 我的列表视图适配器是一个自
  • 所有动画执行速度都很慢

    我不确定动画过程发生了什么 突然我的所有动画都执行缓慢 我已经重置了我的Simulator 重新启动我的Mac 但没有帮助 我不确定我做了什么或者这是系统问题 请检查下图 每个动画都在缓慢执行 我在用着Xcode7 3 1 Simulato
  • 如何设置连接属性(包括同义词)

    我在 Spring Boot 中的数据库配置是使用 yaml 文件完成的 Common spring jpa properties hibernate show sql true use sql comments truecat forma
  • Misra 规则 19.7:类似宏的函数

    我有一个关于 Misra 规则 19 7 的警告 在下面的行中 应该优先使用函数而不是类似函数的宏 define gOFFSETOF type mem gOFFSET size t char type 0 gt mem char type
  • 与 set-winuserlanguagelist 命令相关的疑问/问题

    我正在构建一个代码来修复 Windows 10 上的键盘布局情况 通过自动化解决方案 我决定使用 powershell 但问题是我在这方面还很陌生 并且面临着某些问题 我设法找到一个脚本来更改键盘布局 但它只更改为一种语言 当我尝试用两种语
  • SVN 中的 -r 和 url@rev 有什么区别?

    有人可以解释一下使用之间的区别吗 r REV and URL REV以下两个 SVN 命令的语法 svn co r6002 https svnserv2 acme com stx project1 trunk gui Mammoth Web
  • 将计数添加到 geom_hex 作为标签

    我想向 geom hex 添加标签 这提出了两个问题 如何获取他们的坐标 我如何提取它们的计数值 最小的例子 pipeline lt read csv url http dl dropboxusercontent com u 7446674
  • 更新Android SDK包列表失败

    每次我尝试打开播放器设置时 它都只显示空白 并且控制台中将显示以下错误 我尝试点击此链接 https answers unity com questions 1320634 unable to list target platforms w
  • 将 JSON 反序列化为 C#

    我看到很多简单的 JSON 反序列化示例 但是当涉及到稍微复杂的东西时 就缺乏示例 我正在研究从 GetResponse 的 API 反序列化响应 简单例如 result updated 1 error null Another resul
  • 如何在多个项目上使用 vagrant

    我是 Vagrant 的新手 我正在尝试 PuPHPet 以便让一切正常运行 我可以启动并运行 Debian 盒子并通过 ssh 进入其中 这更多是我不清楚的工作流程 目前我正在将 PuPHPet 配置下载到名为的文件夹中vagrant我可
  • 如何使用 Injector.get(ActivatedRoute) 检索路由参数?

    我是角度新手 我的目标是拥有一个可以通过 详细 组件 显示单个数据对象字段的组件 扩展的 BaseDetailComponent 由于父类的构造函数将接收服务实例和其他参数 因此我无法在构造函数中使用正常的依赖注入 因此 我需要在 Base
  • Chrome 开发工具中的图层组合

    我有简单的过渡动画div元素 为了防止不必要的绘制事件 我对其应用了更高的 z index 和 0 变换 所以这div可能在它自己的层上 但瀑布图显示了每个动画刻度之后可能发生的图层组成事件 我想知道 这是 GPU 页面渲染之前的最后一层组
  • AndroidKeyStore getEntry 在某个点之后始终失败

    我正在使用 AndroidKeyStore 生成 RSA 密钥对 用于加密 解密内部数据 执行此操作的代码如下 它尝试检索现有的 RSA 密钥对 通过别名 如果不存在 那么它会尝试生成一个新的 代码如下 private void initi
  • 如何为列的每个唯一值仅选择前行?

    假设我有一张客户地址表 CName AddressLine John Smith 123 Nowheresville Jane Doe 456 Evergreen Terrace John Smith 999 Somewhereelse J
  • r ifelse 日期不添加天数

    我需要计算 R 中列日期的条件 Atable 为 PIL final1 lt data frame prior day1 cart c 4 8 prior day1 comp c 2014 06 03 2014 06 07 dia lim
  • PHP数组转多维数组

    我在 php 中有一个数组 其中的对象包含id and a 父 ID 所有没有parent id 的对象都应该是新数组中的根对象 所有对象do有一个parent id 应该被推送到正确的对象的子数组中 这是我原来的数组 array 0 gt
  • 当只有一个子元素时移除伪元素

    我使用一个不可见的伪元素 after 占据容器中的最后一个槽 但如果只有一个元素 我想将其放置在中心 因此 为了做到这一点 我需要 删除 这种情况下的伪元素 如果可以的话我该怎么做 main background 999 margin 0